Как выбрать первый или второй текст node через XPath?
Что-то вроде этого:
/node/text()[2]
конечно, не работает, потому что это объединенный результат каждого текста внутри node.
Ответ 1
Имея следующий XML:
<node>Text1<subnode/>text2</node>
Как выбрать первый или второй текст node через XPath?
Использование
/node/text()
Это выбирает всех текстовых node дочерних элементов верхнего элемента (с именем "node" ) документа XML.
/node/text()[1]
Это выбирает первый текстовый node дочерний элемент верхнего элемента (с именем "node" ) документа XML.
/node/text()[2]
Это выбирает второй текстовый node дочерний элемент верхнего элемента (с именем "node" ) документа XML.
/node/text()[someInteger]
Это выбирает дочерний элемент someInteger-th text- node верхнего элемента (с именем "node" ) документа XML. Это эквивалентно следующему выражению XPath:
/node/text()[position() = someInteger]
Ответ 2
ваш xpath должен работать. Я проверил ваши xpath и мои как в реализации MarkLogic, так и в Zorba Xquery/Xpath.
Оба должны работать.
/node/child::text()[1] - should return Text1
/node/child::text()[2] - should return text2
/node/text()[1] - should return Text1
/node/text()[2] - should return text2