Как мне вернуть другой узел, если первый узел не существует в запросе XPath? - PullRequest
0 голосов
/ 13 марта 2011

Я хотел бы вернуть имя вторичного узла, если первый не существует, например: return xpath_query("/root/(blue|red)"); // return /root/blue, or /root/red if it doesn't exist

Возможно ли это?

Спасибо

1 Ответ

3 голосов
/ 13 марта 2011

Ответ: Да.

Это правильное выражение XPath 2.0:

/root/(blue|red)

Значение : blue и red дочерние элементы root корневого элемента.

Если вам нужен один или другой, если его не существует, вы можете положиться на порядок документов, например:

/root/(blue|red)[1]

Или, если быть более точным, например:

/root/(if (blue) then blue else red)

XPath 1.0 перевод:

/root/*[self::blue|self::red]

/root/*[self::blue|self::red][1]

/root/*[self::blue|self::red[not(../blue)]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...