w3schools tutorial online make how functions basics xpath xquery

xpath - tutorial - xquery online



Seleccione solo texto directamente en el nodo, no en los nodos secundarios (3)

En el documento XML provisto:

<div id="comment"> <div class="title">Editor''s Description</div> <div class="changed">Last updated: </div> <br class="clear"> Lorem ipsum dolor sit amet. </div>

el elemento /div superior tiene 4 nodos secundarios que son nodos de texto. Los primeros tres de estos cuatro hijos de text-node son whitespace-only . El último de estos 4 hijos de text-node es el que se desea.

Uso :

/div/text()[last()]

Esto es diferente de :

/div/text()

Este último puede (dependiendo de si whitespace-only nodos que whitespace-only contienen whitespace-only en whitespace-only son preservados por el analizador XML) seleccionar los 4 nodos de texto, pero solo quiere el último de ellos.

Una alternativa es (cuando no sabes exactamente qué text-node quieres):

/div/text()[normalize-space()]

Esto selecciona todos text-node-children de /div que no son nodos de texto de whitespace-only .

¿Cómo se puede recuperar el texto en un nodo sin seleccionar el texto en los elementos secundarios?

<div id="comment"> <div class="title">Editor''s Description</div> <div class="changed">Last updated: </div> <br class="clear"> Lorem ipsum dolor sit amet. </div>

En otras palabras, quiero que Lorem ipsum dolor sit amet. en lugar de Editor''s DescriptionLast updated: Lorem ipsum dolor sit amet.


Qué tal esto :
$doc/node()[3]/text()
Suponiendo $ doc tiene el xml.


Simplemente seleccione text() lugar de . :

div/text()

En el fragmento XML dado, esto devuelve:

Lorem ipsum dolor sit amet.