XPATHXML Path Language
Xpath – XML Path Language
IT Zertifikat - Daten und Metadatenstandards: XPath
2
Entwicklung des W3C Adressierungssprache für XML eigene Syntax, keine XML-Anwendung Grundlage für z.B. XPointer, XSLT, XQuery, XLink hierarchische Baumstruktur eine Instanz liefert ein node-set
Baumstruktur
IT Zertifikat - Daten und Metadatenstandards: XPath
3
XML-Einheiten sind Knoten (Elemente, Attribute, Namensräume, Kommentare, Verarbeitungsanweisungen)
Knoten haben Nachfahren, Vorfahren, Geschwister, sind über Achsen verbunden
Reihenfolge der Knoten gleich Dokumentenreihenfolge (=> Tiefensuche)
1 <?xml version="1.0" encoding="ISO-8859-1"?> 2 <?xml-stylesheet href="weinkatalog.css" type="text/css"?> 3 <weindepot> 4 <anbaugebiet name="Mosel"> 5 <jahrgang jahr="2001"> 6 <art farbe="weiss"> 7 <wein> 8 <bezeichnung>Enkircher Pastor</bezeichnung> 9 <rebsorte>Riesling</rebsorte> 10 <richtung qualitaet="Auslese">halbtrocken</richtung> 11 <preis>8,00</preis> 12 </wein> 13 <wein> 14 <bezeichnung>Cochemer Hospiz</bezeichnung> 15 <rebsorte>Riesling</rebsorte> 16 <richtung qualitaet="Auslese">trocken</richtung> 17 <preis>18,00</preis> 18 </wein> 19 </art> 20 </jahrgang> 21 </anbaugebiet> 22</weindepot>
Baumstruktur
IT Zertifikat - Daten und Metadatenstandards: XPath
4
weindepotXML-Deklarationen
wurzel
anbaugebiet
jahrgang
art
…
…
…
weinwein
richtungbezeichnung rebsorte preis …
„Enkircher..." "Riesling" „halbtrocken" "8,00"
Knotentypen
IT Zertifikat - Daten und Metadatenstandards: XPath
5
Wurzel (oberster Knoten) Elemente Text (reine Zeichendaten): text() Attribute (werden wie Achsen angesprochen) Namensräume (ebenso) Verarbeitungsanweisungen: processing-
instruction() Kommentare: comment()
Aufbau
IT Zertifikat - Daten und Metadatenstandards: XPath
6
Lokalisierungspfad(e) (getrennt durch ‚|‘ ), bestehend aus: Lokalisierungsstufe(n) (getrennt durch ‚/‘ ), bestehend aus:
Achsen (getrennt durch ‚::‘) Knotentest Prädikat(en) (optional) (in ‚[ ]‘)
Lokalisierungspfad1 Lokalisierungspfad2
Lokalisierungsstufe1 Lokalisierungsstufe2 Lokalisierungsstufe3
Achse :: Knotentest [Prädikat1] [Prädikat2] / Achse :: Knotentest [Prädikat] | Achse …
Achsen
IT Zertifikat - Daten und Metadatenstandards: XPath
7
steuern Richtung des Knotendurchlaufs für jede Position gibt es einen eigenen
Kontextknoten Abkürzungen möglich
http://de.wikipedia.org/wiki/XPATH#Achsen
Knotentest
IT Zertifikat - Daten und Metadatenstandards: XPath
8
Filterung der Elemente (keine Attribute oder Namensräume) in einer Knotenmenge (node-set)
Filterung über Elementname, Wildcard (*) oder Knotentyp
child::weindepot child::* child::text()
Prädikate
IT Zertifikat - Daten und Metadatenstandards: XPath
9
weitere Filterung des Ergebnisses durch Bedingungen in eckigen Klammern [ ] nachfolgende Prädikate nehmen gefilterte Knotenmenge des
voran gegangenem Prädikat als Ausgangspunkt Relationszeichen (=, !=, <, >, <=, >=) mathematische Operatoren (+, -, *, div, mod, Klammern) Funktionen
Funktionen
IT Zertifikat - Daten und Metadatenstandards: XPath
10
Grundaufbau: rückgabewert funktion(parameter1, parameter*)
Knotenmengen: z.B. count(), name(), position(),… String: z.B. string(), string-length(), concat(),… Logische Funktionen (wahr/falsch): z.B. boolean(), lang() Numerische Funktionen: z.B. sum()
dementsprechend Datentypen node-set, string, boolean oder numerisch als Rückgabewert
Beispiele
IT Zertifikat - Daten und Metadatenstandards: XPath
11
/weindepot/anbaugebiet/jahrgang/art/wein[preis="8,00"]
oder z.B.
/child::weindepot/descendant::anbaugebiet/child::jahrgang/child::art/child::wein[preis="8,00"]
string(//wein[preis="8,00"]/bezeichnung) string(//anbaugebiet/@name[1]) //wein[position()=2] concat(name(//anbaugebiet/..)," ",string(//anbaugebiet/@name[1]),":
",name(//wein),"1.: ",string(//wein[preis="8,00"]/bezeichnung),", ",string(//richtung[1]),"er ",string(//rebsorte[1])," zum ",name(//wein[1]/preis),": ",string(//wein[1]/preis)," €")
ENDEXML Path Language