1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI
2 Informationsquellen Harald Schöning : XML und Datenbanken Richard Anderson : XML professionell
3 Inhalt des Referats 1. Einleitung 2. Datenmodell 3. Lokalisierungspfade 4. Abgek ü rzte Syntax 5. Ausdrücke 6. Funktionen
4 Beispiel Hotel Hotelnamesternstufe klasse Addressee Plz ort straße hausnummer Telefonräume zimmer zimmertyp einzelzimmerndoppelzimmer preise zimmernrwohlzustand
5 Beispiel DTD vom Beispiel (Hotel) <!DOCTYPE hotel [ <!ATTLIST zimmer zimmernr CDATA #FIXED wohnzustand ( ja | nein) nein ]>
6 Beispiel Kunden Kunde* Name Vorname Nachname Kontakt Telefon > #PCDATA Kundennrzimmernr
7 Beispiel DTD vom Beispiel (Kunden) <!DOCTYPE Kunden [ <!ATTLIST Kunde Kundennr CDATA #FIXED Zimmernr CDATA #REQUIRED> ]> XML Beispielsdokument Wei CAI Thomas Kaiser ……….
8 XML-Datenbank
9 Einleitung XSLT zum Entwurf von Präsentationsformen von XML-Dokumenten erfordert Zugriff auf Elemente von XML-Dateien XML Datenbanken brauchen eine Anfragesprache Xpath bietet Zugriff auf XML-Strukturen
10 Einleitung Anforderungen an XML Datenabank Anfragesprachen: -muss deklarativ sein -verfügt mehr als eine Syntax-Repräsentation und davon für Benutzer leicht les- und schreibbar -muss eine integrierte Fehlerbehandlung vorsehen -kann auf allen endlichen XML-Dokument operieren -mit Namensräumen umgehen -protokoll-unabhängig
11 Datenmodell XML Dokumente können mit XPath als Baum aus verschiedenartigen Knoten representiert werden jetzt machen wir ü ber Datenmodell von XPath
12 Datenmodell 1. Wurzelknoten 2. Elementenknoten 3. Attributknoten 4. Namensraumknoten 5. Verarbeitungsanweisungsknoten 6. Kommentarknoten 7. Textknoten
13 Wurzelknoten Wurzelknoten und Elementenknoten Elementknoten, Verarbeitungsanweisungsknoten, Kommentarknoten, Textknoten sind ihre Kinder. - Der Wert des Wurzelknotens und Elementenknotens ist die Konkatenation aller auf irgendeiner Stufe nachfolgenden Textknoten.
14 Attributknoten - Keine Kinder - Attribute als den Wert Achtung: Attribute, die der Namensraumdelaration dienen(xmlns),werden nicht als Attributknoten abgebildet.
15 Namensraumknoten - Keine Kinder - Die URI des Namensraumes als den Wert
16 Verarbeitungsanweisung Verarbeitungsanweisungsknoten - Keine Kinder - Der auf den Namen folgende Teil der Verarbeitungsanweisung als den Wert
17 Kommentarknoten -Keine Kinder -Inhalt des Kommentar als den Wert
18 Textknoten - Nie einen anderen Textknoten als Geschwisterknoten - Keine Kinder - Mindestens ein Zeichen enthalten - Ihr Wert besteht aus den Daten
19 Datenmodell Datenmodell vom Beispiel (Kunden) w.knote Kürzel: würzelknote:=w.knote elementknote:=e.knote e.knote Kunden attributknote:=a.knote textknote:=t.knote a.knote kundennr=1 Kunde e.knote e.knote name kontakt e.knote e.knote e.knote e.knote e.knote e.knote vorname nachname telefon Handy(#PCDATA) Wei CAI leerzeichen t.knote t.knote t.knote t.knote t.knote
20 Lokalisierungspfade Der Lokalisierungspfad besteht aus einer Folge von Lokalisierungsschritt,die in von links nach rechts nacheinander angewendet werden.
21 Lokalisierungspfade Ein Lokalisierungspfad kann absolute oder relativ sein. LocationPath ::=RelativeLocationPathRelativeLocationPath IAbsoluteLocationPathAbsoluteLocationPath
22 Lokalisierungspfade Ein absoluter Lokalisierungspfad: / step / step /….. AbsoluteLocationPath ::= '/' RelativeLocationPath?RelativeLocationPath |AbbreviatedAbsoluteLocationPathAbbreviatedAbsoluteLocationPath Ein relativer Lokalisierungspfad: step / step/….. RelativeLocationPath ::= Step| RelativeLocationPath '/'StepRelativeLocationPath Step| AbbreviatedRelativeLocationPathStepAbbreviatedRelativeLocationPath
23 Lokalisierungspfade Lokalisierungsschritt besteht aus : Achse Node Tests Prädikate so Aussicht: Axisname::nodetest[predicate]
24 Lokalisierungspfade Achse eine Achse gibt die Beziehung im Dokumentbaum zwischen Kontextknoten und den selektierten Knoten an.
25 Lokalisierungspfade Die Achsen orientieren sich an der Baumstruktur des Dokumentes im XPath-Datenmodell und navigieren vom Kontextknoten in einer Richtung.
26 Lokalisierungspfade ancestor preceding following parent preceding-sibling following-sibling self child descendant Ashsen in XPath
27 Lokalisierungspfade Node Tests - ein Node Test identifiziert eine Knotenmenge auf die bestimmte Knotentypen und Namen in einer Achse. NodeTest ::= NameTest|NameTest NodeType '(' ')'|NodeType 'processing-instruction' '(' Literal ')Literal z.B. (von Kunden) //text( )selektiert alle Textknoten von Kunden
28 Lokalisierungspfade Prädikate ein Prädikat wird auf jedem Knoten der Knotenmenge ausgewertet,wobei dieser Knoten für die Prädikatauswertung zum Kontextknoten wird. z.B. child::cd [position()=1] seine Funktion wie ein Filter
29 Abgek ü rztes Syntax Lokalisierende Konten Besonderheit: XPath verwendet Eine FORM, um Knoten in einem XML-Dokument zu identifizieren, die Ausdrücke wie herkömmliche Pfad-Angaben aussehen: Beispiel: ]
30 Abgek ü rztes Syntax Unbekannte Elemente selektieren Durch das Ersatzzeichen * kann man unbekannte XML-Elemente selektieren. z.B. /Kunden/* oder gleichgültig /*/Kunde
31 Abgek ü rztes Syntax AbbrMeaningExample nonechild::cd is short for child::cd is short for child::cd[attribute::type="classic"].self::node().//cd is short for self::node()/descendant-or- self::node()/child::cd..parent::node()../cd is short for parent::node()/child::cd ///descendant- or- self::node()/ //cd is short for /descendant-or- self::node()/child::cd
32 Ausdrücke Mehrere Pfade Selektieren Um mehrere Pfade zu selektieren, benutzt XPath mit I Operator. z.B. //title I //price
33 Ausdrücke Numerische Ausdrücke OperatorDescriptionExampleResult +Addition Subtraction *Multiplication6 * 424 divDivision8 div 42 modModulus (division remainder) 5 mod 21
34 Ausdrücke Gleichheitsausdrücke Operat or DescriptionExampleResult =Like (equal)price=9.80true (if price is 9.80) !=Not like (not equal) price!=9.80false
35 Ausdrücke Relationale Ausdrücke Oper ator DescriptionExampleResult <Less thanprice<9.80false (if price is 9.80) <=Less or equalprice<=9.80true >Greater thanprice>9.80false >=Greater or equal price>=9.80true
36 Ausdrücke Boolean Ausdrücke Oper ator DescriptionExampleResult or price=9.80 or price=9.70 true (if price is 9.80) and price<=9.80 and price=9.70 false
37 Funktionen XPath enthält eine Basisfunktionsbibliothek, die die Knotenmengenlieferung unterstützt muss. Node-set Funktions String Funktions Nummer Funktions Boolean funktions
38 Funktionen Node-set Funktions NameDescriptionSyntax count()Returns the number of nodes in a node-set number=count(node- set) id()Selects elements by their unique ID node-set=id(value) name()Returns the name of a node string=name(node) namespace-uri()Returns the namespace URI of a specified node uri=namespace- uri(node)
39 Funktionen String Funktions NameDescriptionSyntax & Example concat()Returns the concatenation of all its arguments string=concat(val1, val2,..) Example: concat('The',' ','XML') Result: 'The XML' contains()Returns true if the second string is contained within the first string, otherwise it returns false bool=contains(val,subs tr) Example: contains('XML','X') Result: true
40 Funktionen Nummer Funktions NameDescriptionSyntax & Example ceiling()Returns the smallest integer that is not less than the number argument number=ceiling(number) Example: ceiling(3.14) Result: 4 floor()Returns the largest integer that is not greater than the number argument number=floor(number) Example: floor(3.14) Result: 3 sum()Returns the total value of a set of numeric values in a node-set number=sum(nodeset) Example: sum(/cd/price)
41 Funktionen Boolean funktions NameDescriptionSyntax & Example boolean()Converts the value argument to Boolean and returns true or false bool=boolean(value) false()Returns falsefalse() Example: number(false()) Result: 0 not()Returns true if the condition argument is false, and false if the condition argument is true bool=not(condition) Example: not(false())
42 End Zusammenfassung XPath bietet die Möglichkeit,navigierend Teile von Dokument zu adressieren. XPath ist mächtig!