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.