web-dev-qa-db-fra.com

XPath: sélection du nœud de texte

Avoir le XML suivant:

<node>Text1<subnode/>text2</node>

Comment sélectionner le premier ou le deuxième nœud de texte via XPath?

Quelque chose comme ça:

/node/text()[2]

bien sûr, cela ne fonctionne pas car c'est le résultat fusionné de chaque texte à l'intérieur du nœud.

136
kernel

Avoir le XML suivant:

<node>Text1<subnode/>text2</node> 

Comment sélectionner le premier ou le deuxième nœud de texte via XPath?

tiliser:

/node/text()

Ceci sélectionne tous les enfants de noeud de texte de l'élément supérieur (nommé "noeud") du document XML.

/node/text()[1]

Ceci sélectionne le premier enfant de noeud de texte de l'élément supérieur (nommé "noeud") du document XML.

/node/text()[2]

Ceci sélectionne le deuxième enfant de noeud de texte de l'élément supérieur (nommé "noeud") du document XML.

/node/text()[someInteger]

Ceci sélectionne l'enfant du nœud textuel someInteger-th de l'élément supérieur (nommé "nœud") du document XML. C'est l'équivalent de l'expression XPath suivante:

/node/text()[position() = someInteger]
169
Dimitre Novatchev

votre xpath devrait fonctionner. J'ai testé votre xpath et le mien dans les implémentations de MarkLogic et de Zorba Xquery/Xpath.

Les deux devraient fonctionner.

/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