it-swarm.com.de

XPath: Textknoten auswählen

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.

136
kernel

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]
169

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
27
kadalamittai