xpath
Platsvägar och axlar
Sök…
Anmärkningar
En XPath- platsväg är en serie platssteg separerade med a /
tecken:
step1/step2/step3
Ett platssteg innehåller en axel , ett nodtest och en valfri lista med predikat . Axeln och nodtestet separeras av två kolonstecken ::
. Predikaten är inneslutna i fyrkantiga parenteser:
axis::nodeTest[predicate1][predicate2]
Utvärderingen av en platsväg börjar med en noduppsättning som innehåller kontextnoden som ges av sammanhanget för uttrycket, eller rotnoden , om platsvägen börjar med a /
. Vid varje steg ersätts varje nod N i den ursprungliga noduppsättningen med den uppsättning noder som
- kan nås från N efter den givna axeln ,
- matchar nodtestet , och
- matchar alla predikat .
Resultatet av ett platsvägsuttryck är den slutliga noduppsättningen som erhållits efter bearbetning av alla platssteg .
Korsa barnelement
Körning från rotnoden till en ättling del med hjälp av child
axeln:
/child::html/child::body/child::div/child::span
Eftersom child
axeln är standardaxeln kan detta förkortas till:
/html/body/div/span
Korsar alla ättlingar
descendant
och efter descendant-or-self
självaxlarna kan användas för att hitta alla efterkommande element i en nod på vilket djup som helst. I motsats till detta child
axeln korsar endast omedelbara barn.
/child::html/descendant::span
/child::html/descendant-or-self::*
Den dubbla snedstreck //
är en genväg för /descendant-or-self::node()/
. Så följande uttryck är likvärdiga:
table//td
child::table/descendant-or-self::node()/child::td
child::table/descendant::td
table/descendant::td
Korsa förfäder
Den parent
axeln innehåller endast överordnade till en nod. Följande uttryck väljer html
elementet genom att ta en omväg över body
elementet:
/child::html/child::body/parent::html
..
är en genväg för parent::node()
ancestor
och ancestor-or-self
jagaxlarna korsar alla förfäder till en nod. Följande uttryck returnerar alla div
element som är förfäder till kontextnoden:
ancestor::div
"Själv" -axeln
Den self
axel innehåller endast sammanhang noden själv. Uttrycket .
är en genväg för self::node()
och matchar alltid sammanhangsnoden. Den .
genväg är användbar för att räkna upp ättlingar till kontextnoden. Följande uttryck är likvärdiga:
.//span
self::node()/descendant-or-self::node()/child::span
descendant::span
Den self
axel kan vara till hjälp i XPath 1.0 predikat. För att till exempel välja alla h1
, h2
och h3
barn i kontextnoden:
*[self::h1 or self::h2 or self::h3]
Korsar följande och föregående noder
following-sibling
och preceding-sibling
innehåller syskon före eller efter sammanhangsnoden, och following
och preceding
axlar innehåller alla noder i dokumentet före eller efter sammanhangsnoden, men:
- Ingen av dessa axlar innehåller attribut eller namnutrymme noder.
-
following
axel innehåller inga ättlingar. - Den
preceding
axeln innehåller inga förfäder.
Exempel:
following::span[1]
following-sibling::*[last()]
Korsa attribut och namnutrymme noder
attribute
och namespace
innehåller alla attribut- och namnutrymme-noder för ett element. Genvägen @
står för attribute::
, så följande är likvärdiga:
child::div/attribute::class
div/@class