Beispiel 1
Die grundlegende XPath-Syntax ähnelt der Suche nach Dateien in einem Dateisystem. Wenn der Pfad mit einem Schrägstrich / beginnt, stellt der Pfad den absoluten Pfad zu einem Element dar.
/AAA
Wählen Sie das Stammelement AAA aus
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA> /AAA/CCC
Wählen Sie alle untergeordneten CCC-Elemente von AAA aus
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA> /AAA/DDD/BBB
Wählen Sie die Kinder aus von AAA Alle untergeordneten Elemente des Elements DDD
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA>
Beispiel 2
Wenn der Pfad mit einem doppelten Schrägstrich // beginnt, bedeutet dies, dass alle Regeln im Dokument das erfüllen den doppelten Schrägstrich // werden ausgewählt (unabhängig von der hierarchischen Beziehung) //BBB
Alle BBB-Elemente auswählen
<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB/> <BBB/> </DDD> </CCC> </AAA> //DDD/BBB
Alle BBB-Elemente auswählen, deren übergeordnetes Element DDD ist
<AAA> <BBB/> <CCC/> <BBB/> <DDD> <BBB/> </DDD> <CCC> <DDD> <BBB/> <BBB/> </DDD> </CCC> </AAA>
Beispiel 3
Das Sternchen* bedeutet, dass alle Elemente ausgewählt werden, die sich im Pfad vor dem Sternchen befinden.
/AAA/CCC/DDD/*
Alle Elemente auswählen, deren Pfade sind an /AAA/CCC/DDD-Elemente angehängt
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA> /*/*/*/BBB
Alle BBB-Elemente mit 3 Vorgängerelementen auswählen
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA> //*
Alle Elemente auswählen
<AAA> <XXX> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </XXX> <CCC> <DDD> <BBB/> <BBB/> <EEE/> <FFF/> </DDD> </CCC> <CCC> <BBB> <BBB> <BBB/> </BBB> </BBB> </CCC> </AAA>
Beispiel 4
Der Ausdruck in der Quadratzahl kann das Element weiter spezifizieren, wobei die Zahl die Position des Elements im Auswahlsatz darstellt und die Funktion last() das letzte Element in darstellt der Auswahlsatz.
/AAA/BBB[1]
Wählen Sie das erste untergeordnete BBB-Element von AAA aus
<AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA> /AAA/BBB[last()]
Wählen Sie das letzte BBB aus untergeordnetes Element von AAA
<AAA> <BBB/> <BBB/> <BBB/> <BBB/> </AAA>
Beispiel 5
//@id
Alle ID-Attribute auswählen
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[@id]
ID-Attribut-BBB-Element auswählen
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[@name]
BBB-Element mit Namensattribut auswählen
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[@*]
BBB-Element auswählen mit einem beliebigen Attribut
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA> //BBB[not(@*)]
Wählen Sie BBB-Elemente ohne Attribute aus
, die Normalize-Space-Funktion entfernt führende und nachgestellte Leerzeichen und ersetzt aufeinanderfolgende Leerzeichenfolgen durch ein einzelnes Leerzeichen
<AAA> <BBB id = \"b1\"/> <BBB id = \"b2\"/> <BBB name = \"bbb\"/> <BBB/> </AAA>
Auswahl Das BBB-Element
, das die Attribut-ID enthält und dessen Wert „b1“ ist.
Wählen Sie das aus BBB-Element
, das den Attributnamen enthält und dessen Wert „bbb“ ist
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA> //BBB[@name=\'bbb\']
Wählen Sie das BBB-Element aus, das den Attributnamen und seinen Wert enthält (nachdem Sie die führenden und nachfolgenden Leerzeichen mit entfernt haben). die Normalize-Space-Funktion) ist 'bbb'
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA> //BBB[normalize-space(@name)=\'bbb\']
count() Die Funktion kann die Anzahl der ausgewählten Elemente zählen
<AAA> <BBB id = \"b1\"/> <BBB name = \" bbb \"/> <BBB name = \"bbb\"/> </AAA>
Elemente auswählen, die 2 BBB-Unterelemente enthalten
Element mit 2 untergeordneten Elementen auswählen
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA> //*[count(*)=2]
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA> //*[count(*)=3]
Beispiel 8
Name Die ()-Funktion gibt den Namen des Elements zurück, die start-with()-Funktion gibt true zurück, wenn Die erste Parameterzeichenfolge der Funktion beginnt mit dem zweiten Parameterzeichen, und die Funktion enthält() gibt true zurück, wenn der erste Zeichenfolgenparameter enthält. Gibt true zurück, wenn es einen zweiten Zeichenfolgenparameter gibt.
<AAA> <CCC> <BBB/> <BBB/> <BBB/> </CCC> <DDD> <BBB/> <BBB/> </DDD> <EEE> <CCC/> <DDD/> </EEE> </AAA>
Wählt alle Elemente mit dem Namen BBB aus (entspricht hier //BBB)
Wählt alle Elemente aus, deren Namen mit „B“ beginnen
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA> //*[starts-with(name(),\'B\')]
Alle Elemente auswählen, deren Namen mit „C“ beginnen
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA> //*[contains(name(),\'C\')]
Beispiel 9
Mehrere Pfade können mit zusammengeführt werden das Trennzeichen |.
<AAA> <BCC> <BBB/> <BBB/> <BBB/> </BCC> <DDB> <BBB/> <BBB/> </DDB> <BEC> <CCC/> <DBD/> </BEC> </AAA>
Wählen Sie alle CCC- und BBB-Elemente aus
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA> /AAA/EEE | //BBB
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA> /AAA/EEE | //DDD/CCC | /AAA | //BBB
Die untergeordnete Achse (Achse) enthält die untergeordneten Elemente des Kontextknotens. Als Standardachse kann sie ignoriert werden.
<AAA> <BBB/> <CCC/> <DDD> <CCC/> </DDD> <EEE/> </AAA>
<AAA> <BBB/> <CCC/> </AAA> /child::AAA
/AAA/BBB
entspricht /child::AAA/child ::BBB
<AAA> <BBB/> <CCC/> </AAA>
/child::AAA/child::BBB
Entspricht /AAA/BBB
<AAA> <BBB/> <CCC/> </AAA>
/ child::AAA/BBB
Beide können zusammengeführt werden
<AAA> <BBB/> <CCC/> </AAA>
Beispiel 11
Die Nachkommenachse enthält die Nachkommen des Kontextknotens. Ein Nachkomme bezieht sich auf ein Kind Knoten oder ein untergeordneter Knoten eines untergeordneten Knotens usw., sodass die Nachkommenachse keine Attribut- und Namespaceknoten enthält.
/descendant::*
<AAA> <BBB/> <CCC/> </AAA>
<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA> /AAA/BBB/descendant::*
<AAA> <BBB> <DDD> <CCC> <DDD/> <EEE/> </CCC> </DDD> </BBB> <CCC> <DDD> <EEE> <DDD> <FFF/> </DDD> </EEE> </DDD> </CCC> </AAA> //CCC/descendant::*