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

42
1 Seminar 2004/2005 von Seminar 2004/2005 von Auszeichnungssprache Auszeichnungssprache XPath XPath Ein Referat von Wei CAI Ein Referat von Wei CAI 18.11.2004 18.11.2004

Transcript of 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004.

Page 1: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004.

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.

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.

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.

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.

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.

6

Beispiel

Kunden

Kunde*

Name

Vorname

Nachname

Kontakt

Telefon

E-mail

<<content>>

#PCDATA

Kundennr zimmernr

Page 7: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004.

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.

8

XML-Datenbank

Page 9: 1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI 18.11.2004.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

42

End

Zusammenfassung

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

XPath ist mächtig!