Выбор значений в 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
Другие вопросы по тегам