Выбор значений в XPath в зависимости от значений на том же уровне
У меня есть этот частичный XML
<Events>
<Properties>
<Property Descriptor="1">VALUE1</Property>
<Property Descriptor="2">FOO</Property>
<Property Descriptor="3">BAR</Property>
</Properties>
<Properties>
<Property Descriptor="1">VALUE2</Property>
<Property Descriptor="2">NO</Property>
<Property Descriptor="3">NOTHINGHERE</Property>
</Properties>
</Events>
Привет, я могу запросить первое вхождение Property Descriptor="3", когда Property Descriptor="2" = "FOO"? Результат здесь должен быть BAR
Я старался //Properties/Property[@Descriptor="3"][..//Property[@Descriptor="2"] = "FOO"]
но это сейчас работает.
1 ответ
Решение
я могу запросить первое вхождение Property Descriptor="3", когда Property Descriptor="2" = "FOO"?
/Events/Properties[Property[@Descriptor = '2'] = 'FOO']/Property[@Descriptor = '3'][1]
И более подробно:
/Events/Properties Look for a Properties element
[Property but only if it has a Property element
[@Descriptor = '2'] = 'FOO'] but only if its Descriptor attribute equals 2 and
its textual content is "FOO"
/Property[@Descriptor = '3'] for that Properties element look for a child element
called Property where the Descriptor attribute equals 3
[1] thereof return the first occurrence