XPath Axes (akser)

XML eksempel dokument

Vi vil bruge dette XML-dokument i nedenstående eksempel:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>

  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

XPath-aks

Aksen kan definere en nodestabel i forhold til den aktuelle knude Resultat
Aks navn ancestor
Vælg alle anerkommere (forældre, oldeforældre osv.) til den aktuelle knude ancestor-or-self
Vælg alle anerkommere (forældre, oldeforældre osv.) til den aktuelle knude samt den aktuelle knude selv Vælg alle egenskaber til den aktuelle knude.
attribute Vælg alle underelementer til den aktuelle knude.
child descendant
Vælg alle efterkommerelementer (søn, oldebarn osv.) til den aktuelle knude descendant-or-self
Vælg alle efterkommerelementer (søn, oldebarn osv.) til den aktuelle knude samt den aktuelle knude selv following
Vælg alle noder efter den aktuelle knudes sluttag i dokumentet namespace
Vælg alle navnespaces til den aktuelle knude parent
Vælg den aktuelle knudes forælderknude preceding
Vælg alle noder før den aktuelle knudes starttag i dokumentet preceding-sibling
Vælg alle同级knuder før den aktuelle knude self

Vælg den aktuelle knude

Positionspatchudtryk

Positionspatch kan være absolut eller relativ

Absolut positionspatch: Absolut path starter med en ret linjeskille ( / ), mens relativ path ikke gør det. I begge tilfælde inkluderer positionspatch en eller flere trin, der hver især adskilles af en skråstreg:

/step/step/...

Relativ positionspatch:

step/step/...

Hvert trin beregnes baseret på noderne i den aktuelle nodestabel

Trin (step) inkluderer:

Aks (axis)
Definer den træforhold mellem den valgte nodestabel og den aktuelle knude
Node-test (node-test)
Genkende noder inden for en aks
Ingen eller flere udsagn (predicate)
Udforsk mere præcist den valgte nodestabel

Syntaks for trin:

Aks navn::node-test[udsagn]

Eksempel

Eksempel Resultat
child::book Vælg alle book-knuder, der tilhører underknuderne til den aktuelle knude.
attribute::lang Vælg lang-egenskaben til den aktuelle knude.
child::* Vælg alle underelementer til den aktuelle knude.
attribute::* Vælg alle egenskaber til den aktuelle knude.
child::text() Vælg alle tekstunderknuder til den aktuelle knude.
child::node() Vælg alle underknuder til den aktuelle knude.
descendant::book Vælg alle book efterkommere til den aktuelle node.
ancestor::book Vælg alle book forfædre til den aktuelle node.
ancestor-or-self::book Vælg alle book forfædre samt den aktuelle node (hvis denne node er en book node)
child::*/child::price Vælg alle price efterkommere til den aktuelle node.