Seminar 20042005 von Auszeichnungssprache XPath Ein Referat von

  • Slides: 42
Download presentation
Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18. 11. 2004 1

Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18. 11. 2004 1

Informationsquellen l l Harald Schöning : XML und Datenbanken. 2003 Richard Anderson : XML

Informationsquellen l l Harald Schöning : XML und Datenbanken. 2003 Richard Anderson : XML professionell. 2000 www. w 3 c. org www. w 3 school. com 2

Inhalt des Referats 1. 2. 3. 4. 5. 6. Einleitung Datenmodell Lokalisierungspfade Abgekürzte Syntax

Inhalt des Referats 1. 2. 3. 4. 5. 6. Einleitung Datenmodell Lokalisierungspfade Abgekürzte Syntax Ausdrücke Funktionen 3

Beispiel Hotelname klasse sternstufe Addressee Telefon räume zimmer Plz ort straße hausnummer zimmernr wohlzustand

Beispiel Hotelname klasse sternstufe Addressee Telefon räume zimmer Plz ort straße hausnummer zimmernr wohlzustand zimmertyp einzelzimmer n preise doppelzimmer 4

Beispiel l DTD vom Beispiel (Hotel) <!DOCTYPE hotel [ <!ELEMENT hotel (hotelname, sternstufe, adresse,

Beispiel l DTD vom Beispiel (Hotel) <!DOCTYPE hotel [ <!ELEMENT hotel (hotelname, sternstufe, adresse, telefon+, Zimmer+)> <!ELEMENT hotelname (#PCDATA)> <!ELEMENT sternstufe (#PCDATA)> <!ATTLIST sternstufe klasse (1|2|3|4|5|6) #REQUIRED> <!ELEMENT telefon (#PCDATA)> <!ELEMENT adresse (plz, ort, strasse, hausnummer)> <!ELEMENT ort (#PCDATA)> <!ELEMENT plz (#PCDATA)> <!ELEMENT strasse (#PCDATA)> <!ELEMENT hausnummer (#PCDATA)> <!ELEMENT räume (zimmer+)> <!ELEMENT zimmer (preise, zimmertyp)> <!ATTLIST zimmernr CDATA #FIXED wohnzustand ( ja | nein) “nein“ <!ELEMENT zimmertyp (einzelzimmer | doppelzimmer) > <!ELEMENT einzelzimmer (#PCDATA)> <!ELEMENT doppolzimmer (#PCDATA)> <!ELEMENT preise (#PCDATA)> ]> 5

Beispiel Kunden Kunde* Kundennr Name zimmernr Kontakt Vorname Telefon Nachname E-mail <<content>> #PCDATA 6

Beispiel Kunden Kunde* Kundennr Name zimmernr Kontakt Vorname Telefon Nachname E-mail <<content>> #PCDATA 6

Beispiel l DTD vom Beispiel (Kunden) <!DOCTYPE Kunden [ <!ELEMENT Kunden (Kunde*)> <!ELEMENT Kunde(Name,

Beispiel l DTD vom Beispiel (Kunden) <!DOCTYPE Kunden [ <!ELEMENT Kunden (Kunde*)> <!ELEMENT Kunde(Name, Kontakt, Zimmernr*)> <!ATTLIST Kundennr CDATA #FIXED Zimmernr CDATA #REQUIRED> <!ELEMENT Name (Vorname, Nachname+ )> <!ELEMENT Vorname (#PCDATA)> <!ELEMENT Nachname (#PCDATA)> <!ELEMENT Kontakt(#PCDATA|Telefon|Email)*> <!ELEMENT Telefon (#PCDATA)> <!ELEMENT E-mail (#PCDATA)> ]> XML Beispielsdokument <Kunden> <Kundennr=“ 1“> <vorname>Wei</vorname> <nachname>CAI</nachname> <kontakt> <e-mail>strongerjet@hotmail. com</e-mail> <handy>01797899390</handy> </kontakt> </Kunde> <Kundennr=“ 2“ zimmernr=“ 103“> <vorname>Thomas</vorname> <nachname>Kaiser</nachname> <kontakt> <telefon>0231145790</telefon> <e-mail>thomas@web. de</e-mail> <handy>01709350099</handy> </Kunde> ………. </Kunden> l 7

XML-Datenbank 8

XML-Datenbank 8

Einleitung l XSLT zum Entwurf von Präsentationsformen von XML-Dokumenten l erfordert Zugriff auf Elemente

Einleitung l XSLT zum Entwurf von Präsentationsformen von XML-Dokumenten l erfordert Zugriff auf Elemente von XML-Dateien l XML Datenbanken brauchen eine Anfragesprache l Xpath bietet Zugriff auf XML-Strukturen 9

Einleitung Anforderungen an XML Datenabank Anfragesprachen: -muss deklarativ sein -verfügt mehr als eine Syntax-Repräsentation

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 10

Datenmodell l XML Dokumente können mit XPath als Baum aus verschiedenartigen Knoten representiert werden

Datenmodell l XML Dokumente können mit XPath als Baum aus verschiedenartigen Knoten representiert werden jetzt machen wir über Datenmodell von XPath 11

Datenmodell 1. 2. 3. 4. 5. 6. 7. Wurzelknoten Elementenknoten Attributknoten Namensraumknoten Verarbeitungsanweisungsknoten Kommentarknoten

Datenmodell 1. 2. 3. 4. 5. 6. 7. Wurzelknoten Elementenknoten Attributknoten Namensraumknoten Verarbeitungsanweisungsknoten Kommentarknoten Textknoten 12

Wurzelknoten l Wurzelknoten und Elementenknoten Elementknoten, Verarbeitungsanweisungsknoten, Kommentarknoten, Textknoten sind ihre Kinder. - Der

Wurzelknoten l 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. 13

Attributknoten l Attributknoten - Keine Kinder - Attribute als den Wert Achtung: Attribute, die

Attributknoten l Attributknoten - Keine Kinder - Attribute als den Wert Achtung: Attribute, die der Namensraumdelaration dienen(xmlns), werden nicht als Attributknoten abgebildet. 14

Namensraumknoten l Namensraumknoten - Keine Kinder - Die URI des Namensraumes als den Wert

Namensraumknoten l Namensraumknoten - Keine Kinder - Die URI des Namensraumes als den Wert 15

Verarbeitungsanweisung l Verarbeitungsanweisungsknoten - Keine Kinder - Der auf den Namen folgende Teil der

Verarbeitungsanweisung l Verarbeitungsanweisungsknoten - Keine Kinder - Der auf den Namen folgende Teil der Verarbeitungsanweisung als den Wert 16

Kommentarknoten l Kommentarknoten -Keine Kinder -Inhalt des Kommentar als den Wert 17

Kommentarknoten l Kommentarknoten -Keine Kinder -Inhalt des Kommentar als den Wert 17

Textknoten l Textknoten - Nie einen anderen Textknoten als Geschwisterknoten - Keine Kinder -

Textknoten l Textknoten - Nie einen anderen Textknoten als Geschwisterknoten - Keine Kinder - Mindestens ein Zeichen enthalten - Ihr Wert besteht aus den Daten 18

Datenmodell l Datenmodell vom Beispiel (Kunden) w. knote Kürzel: würzelknote: =w. knote elementknote: =e.

Datenmodell l Datenmodell vom Beispiel (Kunden) w. knote Kürzel: würzelknote: =w. knote elementknote: =e. knote Kunden attributknote: =a. knote textknote: =t. knote a. knote kundennr=1 Kunde e. knote name kontakt e. knote vorname nachname telefon e-mail Handy(#PCDATA) Wei CAI „ leerzeichen“ strongerjet@hotmail. com 01797899390 t. knote t. knote 19

Lokalisierungspfade l Der Lokalisierungspfad besteht aus einer Folge von Lokalisierungsschritt , die in von

Lokalisierungspfade l Der Lokalisierungspfad besteht aus einer Folge von Lokalisierungsschritt , die in von links nach rechts nacheinander angewendet werden. 20

Lokalisierungspfade l Ein Lokalisierungspfad kann absolute oder relativ sein. Location. Path : : =Relative.

Lokalisierungspfade l Ein Lokalisierungspfad kann absolute oder relativ sein. Location. Path : : =Relative. Location. Path IAbsolute. Location. Path 21

Lokalisierungspfade Ein absoluter Lokalisierungspfad: / step /…. . Absolute. Location. Path : : =

Lokalisierungspfade Ein absoluter Lokalisierungspfad: / step /…. . Absolute. Location. Path : : = '/' Relative. Location. Path? l |Abbreviated. Absolute. Location. Path Ein relativer Lokalisierungspfad: step / step/…. . Relative. Location. Path : : = Step| Relative. Location. Path '/' l Step| Abbreviated. Relative. Location. Path 22

Lokalisierungspfade Lokalisierungsschritt besteht aus: l Achse l Node Tests l Prädikate so Aussicht: Axisname:

Lokalisierungspfade Lokalisierungsschritt besteht aus: l Achse l Node Tests l Prädikate so Aussicht: Axisname: : nodetest[predicate] 23

Lokalisierungspfade l Achse eine Achse gibt die Beziehung im Dokumentbaum zwischen Kontextknoten und den

Lokalisierungspfade l Achse eine Achse gibt die Beziehung im Dokumentbaum zwischen Kontextknoten und den selektierten Knoten an. 24

Lokalisierungspfade l Die Achsen orientieren sich an der Baumstruktur des Dokumentes im XPath -Datenmodell

Lokalisierungspfade l Die Achsen orientieren sich an der Baumstruktur des Dokumentes im XPath -Datenmodell und navigieren vom Kontextknoten in einer “Richtung”. 25

Lokalisierungspfade ancestor preceding following parent preceding-sibling following-sibling self child descendant Ashsen in XPath 26

Lokalisierungspfade ancestor preceding following parent preceding-sibling following-sibling self child descendant Ashsen in XPath 26

Lokalisierungspfade l Node Tests - ein Node Test identifiziert eine Knotenmenge auf die bestimmte

Lokalisierungspfade l Node Tests - ein Node Test identifiziert eine Knotenmenge auf die bestimmte Knotentypen und Namen in einer Achse. Node. Test : : = Name. Test| Node. Type '(' ')'| 'processing-instruction' '(' Literal ')‘ z. B. (von Kunden) //text( )selektiert alle Textknoten von Kunden 27

Lokalisierungspfade l Prädikate ein Prädikat wird auf jedem Knoten der Knotenmenge ausgewertet, wobei dieser

Lokalisierungspfade l 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 28

Abgekürztes Syntax l Lokalisierende Konten Besonderheit: XPath verwendet Eine FORM , um Knoten in

Abgekürztes Syntax l 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: /Kunden/Kunde[@Kundennr=“ 1” ] 29

Abgekürztes Syntax l Unbekannte Elemente selektieren Durch das Ersatzzeichen “ * ”kann man unbekannte

Abgekürztes Syntax l Unbekannte Elemente selektieren Durch das Ersatzzeichen “ * ”kann man unbekannte XML-Elemente selektieren. z. B. /Kunden/* oder gleichgültig /*/Kunde 30

Abgekürztes Syntax Abbr Meaning Example none child: : cd is short for child: :

Abgekürztes Syntax Abbr Meaning Example none child: : cd is short for child: : cd @ attribute: : cd[@type="classic"] is short for child: : cd[attribute: : type="classic" ] . self: : node() . //cd is short for self: : node()/descendant-orself: : node()/child: : cd . . parent: : node(). . /cd is short for parent: : node()/child: : cd // /descendant-or //cd is short for -self: : node()/ /descendant-orself: : node()/child: : cd 31

Ausdrücke l Mehrere Pfade Selektieren Um mehrere Pfade zu selektieren, benutzt XPath mit “

Ausdrücke l Mehrere Pfade Selektieren Um mehrere Pfade zu selektieren, benutzt XPath mit “ I “ Operator. z. B. //title I //price 32

Ausdrücke l Numerische Ausdrücke Operator Description Example Result + Addition 6+4 10 - Subtraction

Ausdrücke l Numerische Ausdrücke Operator Description Example Result + Addition 6+4 10 - Subtraction 6 -4 2 * Multiplication 6*4 24 div Division 8 div 4 2 mod Modulus (division remainder) 5 mod 2 1 33

Ausdrücke l Gleichheitsausdrücke Operat or Description Example Result = Like (equal) price=9. 80 true

Ausdrücke l Gleichheitsausdrücke Operat or Description Example Result = Like (equal) price=9. 80 true (if price is 9. 80) != Not like (not equal) price!=9. 80 false 34

Ausdrücke l Relationale Ausdrücke Oper ator Description Example Result < Less than price<9. 80

Ausdrücke l Relationale Ausdrücke Oper ator Description Example Result < Less than price<9. 80 false (if price is 9. 80) <= Less or equal price<=9. 80 true > Greater than price>9. 80 false >= Greater or equal price>=9. 80 true 35

Ausdrücke l Boolean Ausdrücke Oper ator Description Example Result or or price=9. 80 or

Ausdrücke l Boolean Ausdrücke Oper ator Description Example Result or or price=9. 80 or price=9. 70 true (if price is 9. 80) and price<=9. 80 and price=9. 70 false 36

Funktionen XPath enthält eine Basisfunktionsbibliothek, die Knotenmengenlieferung unterstützt muss. Node-set Funktions l String Funktions

Funktionen XPath enthält eine Basisfunktionsbibliothek, die Knotenmengenlieferung unterstützt muss. Node-set Funktions l String Funktions l Nummer Funktions l Boolean funktions l 37

Funktionen l Node-set Funktions Name Description Syntax count() Returns the number of nodes in

Funktionen l Node-set Funktions Name Description Syntax count() Returns the number of nodes in a node-set number=count(nodeset) id() Selects elements by their unique ID node-set=id(value) name() Returns the name of a node string=name(node) namespaceuri() Returns the namespace URI of a specified node uri=namespaceuri(node) 38

Funktionen l String Funktions Name Description Syntax & Example concat() Returns the concatenation of

Funktionen l String Funktions Name Description Syntax & Example concat() Returns the concatenation of all its arguments string=concat(val 1, val 2, . . ) 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 39

Funktionen l Nummer Funktions Name Description Syntax & Example ceiling() Returns the smallest integer

Funktionen l Nummer Funktions Name Description Syntax & 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 number=sum(nodeset) value of a set of Example: numeric values in a sum(/cd/price) node-set 40

Funktionen l Boolean funktions Name Description Syntax & Example boolean() Converts the value bool=boolean(value)

Funktionen l Boolean funktions Name Description Syntax & Example boolean() Converts the value bool=boolean(value) argument to Boolean and returns true or false() Returns false() 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()) 41

End l Zusammenfassung XPath bietet die Möglichkeit, navigierend Teile von Dokument zu adressieren. XPath

End l Zusammenfassung XPath bietet die Möglichkeit, navigierend Teile von Dokument zu adressieren. XPath ist mächtig! 42