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.