1 seminar 2004/2005 von auszeichnungssprache xpath ein referat von wei cai 18.11.2004
Post on 05-Apr-2015
105 Views
Preview:
TRANSCRIPT
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
<<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!
top related