Все отличные ответы! Но вопрос заслуживает уточнения ...
У меня есть следующий пример XML ...
<objects>
<object objectId="1123" ... />
<properties refObjectId="1123" ... />
<properties refObjectId="1123" refPropertyId="2311" ... />
<properties refObjectId="1123" refPropertyId="4611" ... />
<object objectId="2123" ... />
<properties refObjectId="2123" refPropertyId="4311" ... />
<properties refObjectId="2123" refPropertyId="8611" ... />
....
</objects>
... и следующий запрос XPath ...
//object[//properties[@refObjectId=@objectId and not(@refPropertyId)]]
Я думал, что этот запрос вернет все узлы object
, где есть узел properties
с атрибутом refObjectId
, равным атрибуту objectId
узла object
и отсутствием refPropertyId атрибут ... а именно объект 1123, а не объект 2123 ... но это не так. Кажется, что @objectId
во вложенном предикате не относится к атрибуту objectId
узла object
.
Есть идеи? Я знаю, что структура XML не является вложенной, как вы ожидаете, но есть причины для этой структуры.