Почему мой запрос XPath возвращает узел по умолчанию, когда нужный мне узел существует? - PullRequest
0 голосов
/ 14 марта 2011

У меня следующий запрос XPath 1.0:

/root/Nodes/*[self::CustomNode[not(../DefaultNode)]|self::DefaultNode]/Name

Насколько я понимаю, он вернет /root/Nodes/CustomNode/Name, если он существует, или /root/Nodes/DefaultNode/Name, если он не найден.Тем не менее, /root/Nodes/DefaultNode/Name возвращается, даже если присутствует /root/Nodes/CustomNode/Name.Любые идеи, как я могу это исправить?

DefaultNode узлы всегда продолжаются CustomNode узлов в порядке документа.

Спасибо

1 Ответ

1 голос
/ 14 марта 2011

Вы думаете, что вертикальная линия (|) работает как ИЛИ?

Вот подробности: http://www.w3schools.com/xpath/xpath_operators.asp

| Вычисляет два набора узлов: // книга | // cd Возвращает набор узлов со всеми элементами book и cd

Семантика:
Он возвращает узлы, которые удовлетворяют условию A ИЛИ условию B.
Он возвращает узлы, которые удовлетворяют условию A, и узлы, которые удовлетворяют условию B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...