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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow