javascript - Expresión XPath para seleccionar *todos* los elementos, nodos de texto y nodos de comentarios en el orden de origen
¿Cuál es la expresión XPath para seleccionar todos los elementos, nodos de texto y nodos de comentario, en el mismo orden en que aparecen en el documento?
Lo siguiente selecciona efectivamente todos los elementos, pero no los nodos de texto ni los nodos de comentario:
var result = document.evaluate('//*', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null),
index = -1;
while (++index < result.snapshotLength) {
console.log(result.snapshotItem(index));
}
¿Es posible hacer algo como lo siguiente? (Nota: esto es pseudo-código no funcional.)
document.evaluate('//* and text() and comment()');
Respuesta #1
//node()
selecciona cada nodo que sea hijo de algo: es decir, todos los elementos, nodos de texto, comentarios e instrucciones de procesamiento (pero no atributos, nodos de espacio de nombres o el nodo del documento)
Respuesta #2
Probado con nodos de texto y de comentario en un documento XML. Puede haber un enfoque más eficiente, pero esto devuelve elementos, nodos de texto y de comentario en el orden del documento para mí, usando unión:
//*|//*/text()|//*/comment()
