javascript - XPath-uttryck för att välja *alla* element, textnoder och kommentarnoder i källordning


Vad är XPath-uttrycket för att välja alla element, textnoder och kommentarnoder, i samma ordning som de förekommer i dokumentet?

Följande väljer effektivt alla element, men inte textnoder och kommentarnoder:

var result = document.evaluate('//*', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null),
    index = -1;
while (++index < result.snapshotLength) {
  console.log(result.snapshotItem(index));
}

Är det möjligt att göra något liknande följande? (Observera: detta är icke-fungerande pseudo-kod.)

document.evaluate('//* and text() and comment()');

Svar #1

//node()

väljer varje nod som är ett barn till något: dvs alla element, textnoder, kommentarer och bearbetningsinstruktioner (men inte attribut, namnspansnoder eller dokumentnoden)

Svar #2

Testat med text- och kommentarnoder i ett XML-dokument. Det kan finnas en mer effektiv metod, men detta returnerar element, text- och kommentarnoder i dokumentordning för mig, med union:

//*|//*/text()|//*/comment()