![Page 1: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/1.jpg)
11
Seminar 2004/2005 von Seminar 2004/2005 von AuszeichnungsspracheAuszeichnungssprache
XPathXPath
Ein Referat von Wei CAIEin Referat von Wei CAI
18.11.200418.11.2004
![Page 2: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/2.jpg)
2
Informationsquellen
Harald Schöning : XML und Datenbanken. 2003 Richard Anderson : XML professionell. 2000 www.w3c.org www.w3school.com
![Page 3: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/3.jpg)
3
Inhalt des Referats
1. Einleitung
2. Datenmodell
3. Lokalisierungspfade
4. Abgekürzte Syntax
5. Ausdrücke
6. Funktionen
![Page 4: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/4.jpg)
4
Beispiel
Hotel
Hotelname sternstufe Addressee Telefon räume
Plz
ort
straße
hausnummer
klasse zimmer
zimmertyp preise
zimmernr wohlzustand
einzelzimmern doppelzimmer
![Page 5: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/5.jpg)
5
Beispiel
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 zimmer zimmernr CDATA #FIXED wohnzustand ( ja | nein) “nein“ <!ELEMENT zimmertyp (einzelzimmer | doppelzimmer) > <!ELEMENT einzelzimmer (#PCDATA)> <!ELEMENT doppolzimmer (#PCDATA)> <!ELEMENT preise (#PCDATA)>]>
![Page 6: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/6.jpg)
6
Beispiel
Kunden
Kunde*
Name
Vorname
Nachname
Kontakt
Telefon
<<content>>
#PCDATA
Kundennr zimmernr
![Page 7: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/7.jpg)
7
Beispiel
DTD vom Beispiel (Kunden)
<!DOCTYPE Kunden [ <!ELEMENT Kunden (Kunde*)> <!ELEMENT
Kunde(Name,Kontakt,Zimmernr*)> <!ATTLIST Kunde Kundennr CDATA #FIXED Zimmernr CDATA
#REQUIRED> <!ELEMENT Name (Vorname,
Nachname+ )> <!ELEMENT Vorname (#PCDATA)> <!ELEMENT Nachname (#PCDATA)> <!ELEMENT Kontakt(#PCDATA|Telefon|E-
mail)*> <!ELEMENT Telefon (#PCDATA)> <!ELEMENT E-mail (#PCDATA)> ]>
XML Beispielsdokument<Kunden> <Kunde Kundennr=“1“> <vorname>Wei</vorname> <nachname>CAI</nachname> <kontakt> <e-mail>[email protected]</e-mail> <handy>01797899390</handy> </kontakt></Kunde> <Kunde Kundennr=“2“ zimmernr=“103“> <vorname>Thomas</vorname> <nachname>Kaiser</nachname> <kontakt> <telefon>0231145790</telefon> <e-mail>[email protected]</e-mail> <handy>01709350099</handy> </Kunde>………. </Kunden>
![Page 8: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/8.jpg)
8
XML-Datenbank
![Page 9: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/9.jpg)
9
Einleitung
XSLT zum Entwurf von Präsentationsformen vo
n XML-Dokumenten
erfordert Zugriff auf Elemente von XML-Dateien
XML Datenbanken brauchen eine Anfragesprache
Xpath bietet Zugriff auf XML-Strukturen
![Page 10: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/10.jpg)
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
![Page 11: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/11.jpg)
11
Datenmodell
XML Dokumente können mit XPath als Baum
aus verschiedenartigen Knoten representiert werden
jetzt machen wir über Datenmodell von XPath
![Page 12: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/12.jpg)
12
Datenmodell
1. Wurzelknoten
2. Elementenknoten
3. Attributknoten
4. Namensraumknoten
5. Verarbeitungsanweisungsknoten
6. Kommentarknoten
7. Textknoten
![Page 13: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/13.jpg)
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.
![Page 14: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/14.jpg)
14
Attributknoten
Attributknoten - Keine Kinder - Attribute als den Wert
Achtung: Attribute, die der Namensraumdelaration
dienen(xmlns),werden nicht als Attributknoten abgebildet.
![Page 15: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/15.jpg)
15
Namensraumknoten
Namensraumknoten
- Keine Kinder
- Die URI des Namensraumes als den Wert
![Page 16: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/16.jpg)
16
Verarbeitungsanweisung
Verarbeitungsanweisungsknoten
- Keine Kinder
- Der auf den Namen folgende Teil der Verarbeitungsanweisung als den Wert
![Page 17: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/17.jpg)
17
Kommentarknoten
Kommentarknoten
-Keine Kinder
-Inhalt des Kommentar als den Wert
![Page 18: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/18.jpg)
18
Textknoten
Textknoten
- Nie einen anderen Textknoten als Geschwisterknoten
- Keine Kinder
- Mindestens ein Zeichen enthalten
- Ihr Wert besteht aus den Daten
![Page 19: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/19.jpg)
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 e-mail Handy(#PCDATA)
Wei CAI „leerzeichen“ [email protected] 01797899390
t.knote t.knote t.knote t.knote t.knote
![Page 20: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/20.jpg)
20
Lokalisierungspfade
Der Lokalisierungspfad besteht aus einer Folge von Lokalisierungsschritt ,die in von links nach rechts nacheinander angewendet werden.
![Page 21: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/21.jpg)
21
Lokalisierungspfade
Ein Lokalisierungspfad kann absolute
oder relativ sein.
LocationPath ::=RelativeLocationPath
IAbsoluteLocationPath
![Page 22: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/22.jpg)
22
Lokalisierungspfade
Ein absoluter Lokalisierungspfad: / step / step /….. AbsoluteLocationPath ::= '/' RelativeLocationPath? |AbbreviatedAbsoluteLocationPath
Ein relativer Lokalisierungspfad: step / step/….. RelativeLocationPath ::= Step| RelativeLocationPath '/' Step| AbbreviatedRelativeLocationPath
![Page 23: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/23.jpg)
23
Lokalisierungspfade
Lokalisierungsschritt besteht aus:AchseNode TestsPrädikate
so Aussicht: Axisname::nodetest[predicate]
![Page 24: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/24.jpg)
24
Lokalisierungspfade
Achse
eine Achse gibt die Beziehung im Dokumentbaum zwischen Kontextknoten und den selektierten Knoten an.
![Page 25: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/25.jpg)
25
Lokalisierungspfade
Die Achsen orientieren sich an der Baumstruktur des Dokumentes im XPath-Datenmodell und navigieren vom Kontextknoten in einer “Richtung”.
![Page 26: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/26.jpg)
26
Lokalisierungspfade
ancestor
preceding following
parent
preceding-sibling following-sibling
self
child
descendantAshsen in XPath
![Page 27: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/27.jpg)
27
Lokalisierungspfade
Node Tests
- ein Node Test identifiziert eine Knotenmenge auf die bestimmte Knotentypen und Namen in einer Achse.
NodeTest ::= NameTest|
NodeType '(' ')'|
'processing-instruction' '(' Literal ')‘
z.B. (von Kunden)
//text( )selektiert alle Textknoten von Kunden
![Page 28: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/28.jpg)
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
![Page 29: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/29.jpg)
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:
/Kunden/Kunde[@Kundennr=“1” ]
![Page 30: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/30.jpg)
30
Abgekürztes Syntax
Unbekannte Elemente selektieren
Durch das Ersatzzeichen “ * ”kann man unbekannte XML-Elemente selektieren.
z.B. /Kunden/*
oder gleichgültig
/*/Kunde
![Page 31: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/31.jpg)
31
Abgekürztes Syntax
Abbr Meaning Example
none child:: cd is short for child::cd
@ attribute:: cd[@type="classic"] is short forchild::cd[attribute::type="classic"]
. self::node() .//cd is short forself::node()/descendant-or-self::node()/child::cd
.. parent::node() ../cd is short forparent::node()/child::cd
// /descendant-or-self::node()/
//cd is short for/descendant-or-self::node()/child::cd
![Page 32: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/32.jpg)
32
Ausdrücke
Mehrere Pfade Selektieren
Um mehrere Pfade zu selektieren, benutzt XPath
mit “ I “ Operator.
z.B. //title I //price
![Page 33: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/33.jpg)
33
Ausdrücke
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
![Page 34: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/34.jpg)
34
Ausdrücke
Gleichheitsausdrücke
Operator
Description Example Result
= Like (equal) price=9.80 true (if price is 9.80)
!= Not like (not equal)
price!=9.80 false
![Page 35: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/35.jpg)
35
Ausdrücke
Relationale Ausdrücke
Operator
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
![Page 36: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/36.jpg)
36
Ausdrücke
Boolean Ausdrücke
Operator
Description Example Result
or or price=9.80 or price=9.70
true (if price is 9.80)
and and price<=9.80 and price=9.70
false
![Page 37: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/37.jpg)
37
Funktionen
XPath enthält eine Basisfunktionsbibliothek, die die Knotenmengenlieferung unterstützt muss.
Node-set Funktions String Funktions Nummer Funktions Boolean funktions
![Page 38: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/38.jpg)
38
Funktionen
Node-set FunktionsName Description Syntax
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)
![Page 39: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/39.jpg)
39
Funktionen
String Funktions
Name Description Syntax & 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,substr)Example:contains('XML','X')Result: true
![Page 40: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/40.jpg)
40
Funktionen
Nummer FunktionsName 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 value of a set of numeric values in a node-set
number=sum(nodeset) Example:sum(/cd/price)
![Page 41: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/41.jpg)
41
Funktionen
Boolean funktionsName Description Syntax & Example
boolean() Converts the value argument to Boolean and returns true or false
bool=boolean(value)
false() Returns false 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())
![Page 42: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004](https://reader035.vdokument.com/reader035/viewer/2022062622/55204d6949795902118bee6d/html5/thumbnails/42.jpg)
42
End
Zusammenfassung
XPath bietet die Möglichkeit,navigierend Teile von Dokument zu adressieren.
XPath ist mächtig!