In XPath, //
und .//
sind beide syntaktische Abkürzungen:
//
kurz ist für /descendant-or-self::node()/
.//
kurz ist für self::node()/descendant-or-self::node()/
Die descendant-or-self
Achse enthält den Kontextknoten und alle Abkömmlinge des Kontextknotens. So ist der Unterschied zwischen //
und .//
reduziert auf einen Unterschied in Context-Knoten.
Für //
ist der Kontextknoten der Stammknoten; //
ist ein absolute location path.
Für .//
hängt der Kontextknoten vom Kontext ab; .//
ist ein relative location path. Bei der Bewertung auf oberster Ebene in der Google Developer Tools-Konsole ist der Kontextknoten der Stammknoten. Sie sehen also identische Ergebnisse.
Kurz:
- Verwenden
//
, wenn Sie Knoten wünschen aus dem gesamten Dokument wählen.
- Verwenden Sie
.//
, wenn Sie Knoten nur unterhalb des Kontextknotens auswählen möchten.
Ein ** (//) ** ist ein absoluter Pfad und der andere ** (.//) ** ist ein relativer Pfad. Das ** (.//) ** wählt verschiedene Knotengruppen aus, wobei ** (.) ** bedeutet, dass es am aktuellen Knoten beginnt. Auf der anderen Seite wählt man mit ** (//) ** alle Elementknoten mit dem von Ihnen angegebenen Attribut. – Codexer
Ich glaube nicht, so da ein absoluter Pfad /html/body/h1 beide sind relative Pfade –
@PedroMachado mit/ so etwas wie ist bauen: Hat Ihre Frage [** beantwortet **] (http://stackoverflow.com/a/39903294/290085) zu Ihrer Zufriedenheit? – kjhughes