Mit dem folgenden XML:
<node>Text1<subnode/>text2</node>
Wie wähle ich über XPath entweder den ersten oder den zweiten Textknoten aus?
Etwas wie das:
/node/text()[2]
natürlich funktioniert es nicht, weil es das zusammengeführte Ergebnis jedes Texts innerhalb des Knotens ist.
Mit dem folgenden XML:
<node>Text1<subnode/>text2</node>
Wie wähle ich über XPath entweder den ersten oder den zweiten Textknoten aus?
Verwenden:
/node/text()
Dadurch werden alle untergeordneten Textknoten des obersten Elements (mit dem Namen "node") des XML-Dokuments ausgewählt.
/node/text()[1]
Dadurch wird das erste untergeordnete Textknotenelement des obersten Elements (mit dem Namen "node") des XML-Dokuments ausgewählt.
/node/text()[2]
Dadurch wird das zweite untergeordnete Textknotenelement des obersten Elements (mit dem Namen "node") des XML-Dokuments ausgewählt.
/node/text()[someInteger]
Dies wählt das someInteger-te Textknotenkind des obersten Elements (mit dem Namen "node") des XML-Dokuments aus. Es entspricht dem folgenden XPath-Ausdruck:
/node/text()[position() = someInteger]
dein xpath sollte funktionieren. Ich habe Ihren xpath und meinen in MarkLogic und Zorba Xquery/Xpath-Implementierung getestet.
Beides sollte funktionieren.
/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