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

Post on 05-Apr-2015

103 views 0 download

Transcript of 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

2

Informationsquellen

Harald Schöning : XML und Datenbanken. 2003 Richard Anderson : XML professionell. 2000 www.w3c.org www.w3school.com

3

Inhalt des Referats

1. Einleitung

2. Datenmodell

3. Lokalisierungspfade

4. Abgekürzte Syntax

5. Ausdrücke

6. Funktionen

4

Beispiel

Hotel

Hotelname sternstufe Addressee Telefon räume

Plz

ort

straße

hausnummer

klasse zimmer

zimmertyp preise

zimmernr wohlzustand

einzelzimmern doppelzimmer

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)>]>

6

Beispiel

Kunden

Kunde*

Name

Vorname

Nachname

Kontakt

Telefon

E-mail

<<content>>

#PCDATA

Kundennr zimmernr

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>strongerjet@hotmail.com</e-mail> <handy>01797899390</handy> </kontakt></Kunde> <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>

8

XML-Datenbank

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

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

Attributknoten - Keine Kinder - Attribute als den Wert

Achtung: Attribute, die der Namensraumdelaration

dienen(xmlns),werden nicht als Attributknoten abgebildet.

15

Namensraumknoten

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

Kommentarknoten

-Keine Kinder

-Inhalt des Kommentar als den Wert

18

Textknoten

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 e-mail Handy(#PCDATA)

Wei CAI „leerzeichen“ strongerjet@hotmail.com 01797899390

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   ::=RelativeLocationPath

IAbsoluteLocationPath

22

Lokalisierungspfade

Ein absoluter Lokalisierungspfad: / step / step /….. AbsoluteLocationPath ::=  '/' RelativeLocationPath? |AbbreviatedAbsoluteLocationPath

Ein relativer Lokalisierungspfad: step / step/…..   RelativeLocationPath   ::=  Step| RelativeLocationPath '/' Step| AbbreviatedRelativeLocationPath

23

Lokalisierungspfade

Lokalisierungsschritt besteht aus:AchseNode TestsPrä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

descendantAshsen in XPath

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

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:

/Kunden/Kunde[@Kundennr=“1” ]

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

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

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

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

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

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

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

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 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)

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

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)

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())

42

End

Zusammenfassung

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

XPath ist mächtig!