Я пытаюсь получить список qux
атрибутов братьев и сестер с определенным атрибутом, в этом случае x
в атрибуте foo
и y
в атрибуте foo
из его родного брата.возвращаются два XML-узлов сразу
//node[@foo="x" and following-sibling::node[@foo="y"]]/@qux | //node[@foo="y" and preceding-sibling::node[@foo="x"]]/@qux
Это создает список, но так же, как работает обе части отдельно и добавить их вместе, для того исключением. Мне нужен список как qux
рядом друг с другом, так и список из двух qux
элементов в строке, очевидно, где братья и сестры совпадают.
Можно ли это сделать в xpath, и если да, то как? Если нет, выполнит ли xquery работу?
редактирование: пример файл и вывод:
<database>
<ds version="1">
<node>
<node foo="x" qux="hello"/>
<node foo="y" qux="world"/>
</node>
</ds>
<ds version="1">
<node>
<node>
<node foo="x" qux="another"/>
<node foo="y" qux="sentence"/>
<node foo="y" qux="example"/>
<node foo="z" qux="irrelevant"/>
</node>
</node>
</ds>
<ds version="1">
<node>
<node foo="y" qux="not"/>
<node foo="z" qux="returned"/>
</node>
</ds>
</database>
Обратите внимание, что глубина узла меня интересует не известно, так (я думаю) использование // узла необходим.
Запрос должен возвращать:
hello world
another sentence
another example
Это может быть сделано одним выражением XPath 2.0. Он не может быть создан одним выражением XPath 1.0. Если вас заинтересует решение XPath 2.0, сообщите мне. –
Меня интересует ваше решение, мне все равно, это XPath 1.0, XPath 2.0 или что-то еще :) – user2204975
user2204975, Done. –