javascript - XPath výraz na výber *všetkých* elementov, textových uzlov a komentárov v zdrojovom poradí


Aký je XPath výraz na výber všetkých elementov, textových uzlov a komentárových uzlov, v rovnakom poradí, ako sa objavujú v dokumente?

Nasledujúci výraz efektívne vyberá všetky elementy, ale nie textové uzly a uzly komentárov:

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

Je možné urobiť niečo podobné ako nasledujúce? (Poznámka: toto je nefunkčný pseudo-kód.)

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

Odpoveď č. 1

//node()

vyberá každý uzol, ktorý je dieťaťom niečoho: t.j. všetky elementy, textové uzly, komentáre a spracovávacie inštrukcie (ale nie atribúty, uzly menného priestoru ani uzol dokumentu)

Odpoveď č. 2

Testované s uzlami textu a komentára v dokumente XML. Môže existovať efektívnejší prístup, ale toto mi vracia prvky, uzly textu a komentára v poradí dokumentu, pomocou zjednotenia:

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