xml kurs - programmiersprachen · xml kurs markus degen / prof. peter thiemann 12. oktober 2005...
TRANSCRIPT
![Page 1: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/1.jpg)
XML Kurs
Markus Degen / Prof. Peter Thiemann
12. Oktober 2005
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 1 / 75
![Page 2: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/2.jpg)
1 XML
2 DTD
3 XPath
4 XSL
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 2 / 75
![Page 3: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/3.jpg)
Was ist XML?
eXtensible Markup Language
beschreibt Daten
Ähnlichkeit mit HTMLde�nierbare logische Struktur:
I markierte, sortierte BäumeI keine Vorde�nirten Tags
mächtige Hyperlinkmöglichkeiten (XLink)
Transformationssprachen (XPath, XSL)
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 3 / 75
![Page 4: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/4.jpg)
Unterschied zu HTML
XML beschreibt Daten/Inhalte
HTML stellt Daten/Inhalte dar
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 4 / 75
![Page 5: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/5.jpg)
Beispiel: Wohlgeformtes XML Dokument
<?xml version="1.0"?><Eltern><Kind>Hier kommt der Inhalt.
</Kind><Leer warum="darum" />
</Eltern>
XML Deklaration: <?xml version="1.0"?>Elemente: Eltern, Kind, LeerÖ�nende Tags: <Eltern>, <Kind>Schlieÿende Tags: </Kind>, </Eltern>Leeres Element: <Leer />Attribut: warum="darum"
(im ö�nenden Tag, bzw. im Tag des leeren Elements)
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 6 / 75
![Page 6: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/6.jpg)
Wohlgeformtheit (well-formedness)
Wohlgeformt heiÿt
XML Deklaration vorhanden
sämtliche Elemente haben ö�nendes und schlieÿendes Tag(oder <Leer />, falls kein Inhalt)
korrekte Schachtelung der Tags!
genau ein Wurzelelement vorhanden
jeder Attributname höchstens einmal pro Element
⇒ Dokument ist durch einen Baum repräsentierbar
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 7 / 75
![Page 7: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/7.jpg)
Element Groÿ-/Kleinschreibung beachten!
Attribute müssen immer in Anführungsstrichen stehen!
falsch <note date=12/11/2002>
richtig <note date="12/11/2002">
Attributnamen müssen in einem Element eindeutig sein
Leerzeichen werden nicht entfernt!
Kommentare <!-- Kommentar -->
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 8 / 75
![Page 8: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/8.jpg)
Baumdarstellung des Dokuments
Document
Element
Element
Eltern
Kind Leer
warum=...Hier ist ...Text Attribute
Element
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 9 / 75
![Page 9: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/9.jpg)
Knotentypen in XML Dokumenten
(XPath Terminologie)
Node übergeordneter Knotentyp
Text enthält Text, keine Kinder
Element enthält andere Knoten als Kinder (insbesondere Text, Element),sowie Attribute (sind nicht Kinder). Kinder von Elementen sindgeordnet
Attribut Name/Wert-Paar anhängend an einem Elementknoten
Comment zählt weder zum Inhalt noch zur Struktur, keine Kinder
Processing Instruction Anweisung an XML-verarbeitendes Programm
Document Wurzelknoten eines XML Dokuments; enthält genau einElement, das Wurzelelement
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 10 / 75
![Page 10: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/10.jpg)
Knoten eines Dokuments sind durch Dokumentenordnung totalgeordnet
gegeben durch Baumdurchlauf in preorder von links nach rechts
entsprechend der Reihenfolge in XML NotationBaumterminologie
I rootI siblingsI leavesI childrenI parentI descendantsI ancestors
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 11 / 75
![Page 11: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/11.jpg)
Elementnamen
Elementnamen müssen die folgenden Bedingungen erfüllen
Namen bestehen aus Buchstaben, Zahlen und Sonderzeichen
Namen dürfen nicht mit einer Zahl oder einem Satzzeichen beginnen
Namen dürfen nicht mit den Buchstaben "xml" beginnen
Namen dürfen keine Leerzeichen enthalten
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 12 / 75
![Page 12: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/12.jpg)
Gültigkeit eines XML Dokuments
muss die logische Struktur de�nieren
→ DTD (Document Type De�nition)
DTD ordnet jedem Elementnamen e einen regulären Ausdruck R(e)über Elementnamen zufalls <e><e1...><e2...>...<en...></e> in gültigem Dokumentvorkommt, so ist e1e2 . . . en ∈ L(R(e)).dh die Namen der Kindelemente von e müssen dem Ausdruck R(e)entsprechen
DTD ordnet jedem Elementnamen eine Menge von getyptenAttributen zu
DTD de�niert Abkürzungen (entities), die vom XML-Parser expandiertwerden
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 13 / 75
![Page 13: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/13.jpg)
DTD Beispiel
<?xml version="1.0"?><!DOCTYPE ELTERN [
<!ELEMENT ELTERN (KIND*)><!ELEMENT KIND (MARKE?,NAME+)><!ELEMENT MARKE EMPTY><!ELEMENT NAME (NACHNAME+,VORNAME+)*><!ELEMENT NACHNAME (#PCDATA)><!ELEMENT VORNAME (#PCDATA)><!ATTLIST MARKE
NUMMER ID #REQUIREDGELISTET CDATA #FIXED "ja"TYP (natürlich|adoptiert) "natürlich">
<!ENTITY STATEMENT "Wohlgeformtes XML">]><ELTERN>&STATEMENT;<KIND><MARKE NUMMER="1" GELISTET="ja" TYP="natürlich" /><NAME><NACHNAME>Flavius</NACHNAME><VORNAME>Secundus</VORNAME>
</NAME></KIND>
</ELTERN>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 15 / 75
![Page 14: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/14.jpg)
Kopfzeilen einer XML Datei
Vorspann
<?xml version="1.0" encoding="UTF-8"?>
Spezi�kation einer internen DTD
<!DOCTYPE Name [
Element-, Attribut-, Entitydeklarationen
]>
Spezi�kation einer externen DTD
<!DOCTYPE root-element SYSTEM "filename">
Beispiel:
<!DOCTYPE HTML3
PUBLIC "-//IETF//DTD HTML Strict//EN//3.0"
"html-3s.dtd"
[ ggf. interne Deklarationen ]>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 17 / 75
![Page 15: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/15.jpg)
Aufbau einer DTD
Inhalte der XML Datei aus Sicht der DTD:
Elemente
Tags
Attribute
Entities
PCDATA
CDATA
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 18 / 75
![Page 16: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/16.jpg)
Elementdeklaration
〈elementdecl〉 ::= <!ELEMENT 〈Name〉 〈contentspec〉>〈contentspec〉 ::= EMPTY | ANY | 〈Mixed〉 | 〈children〉
Produktion einer kf. Grammatik
〈Mixed 〉: #PCDATA und Elemente vermischt
〈children 〉: regulärer Ausdruck über Elementnamen;Operatoren , | ? + *
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 19 / 75
![Page 17: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/17.jpg)
Element Beispiele
<!ELEMENT br EMPTY>
<!ELEMENT from (#PCDATA)>
<!ELEMENT note (to+,from,header?,(message|#PCDATA))*>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 20 / 75
![Page 18: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/18.jpg)
Attributdeklaration
〈AttlistDecl〉 ::= <!ATTLIST 〈Name〉 〈AttDef〉∗>〈AttDef〉 ::= 〈Name〉 〈AttType〉 〈DefaultDecl〉
〈AttType 〉 ::=
CDATA StringID eindeutiger SchlüsselIDREF, IDREFS Verweis(e) auf SchlüsselENTITY, ENTITIES Name(n) von EntitiesNMTOKEN, NMTOKENS ein oder mehrere Wörter(Nmtoken (| Nmtoken)∗) Aufzählungstyp
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 21 / 75
![Page 19: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/19.jpg)
〈DefaultDecl 〉 ::=
#REQUIRED erforderlich| #IMPLIED nicht erforderlich, kein Default| "〈AttValue 〉" Defaultwert| #FIXED "〈AttValue 〉" fester Wert
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 22 / 75
![Page 20: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/20.jpg)
Attribut Beispiele
<!ATTLIST payment type CDATA "check">
<!ATTLIST contact fax CDATA #IMPLIED>
<!ATTLIST payment type (check|cash) "cash">
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 23 / 75
![Page 21: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/21.jpg)
Entity Deklaration
〈GEDecl〉 ::= <!ENTITY 〈Name〉 〈EntityDef〉 >〈EntityDef〉 ::= 〈EntityValue〉 | (〈ExternalID〉 〈NDataDecl〉?)
〈GEDecl 〉 general entityAbkürzungen, Dokumentenbausteine (auch von Dateien〈ExternalID 〉)<!ENTITY dd "Dagobert Duck">
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 25 / 75
![Page 22: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/22.jpg)
Sonderzeichen
Entity References Character< <> >& &" "' '
PCDATA parsed character data
CDATA character data
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 26 / 75
![Page 23: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/23.jpg)
XML Namespaces
�Modulsystem für XML�Vermeidung von Namenskon�ikten bei Benutzung von
mehreren Quellen für Elementdeklarationen oder
mehreren Anwendungen mit dem gleichen Dokument
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 27 / 75
![Page 24: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/24.jpg)
XML Path Language (XPath)
Ziel von XPath: Spezi�kation von Folgen von Knoten in XML-Dokument
Verwendung in URIs und Attributen
kompakte Syntax (nicht XML)
operiert auf logischer Struktur des Dokuments
einfache Berechnungen auf Ergebnismengen
weitere Verwendung in anderen XML-Standards: XSLT, XQuery,XPointer, XLink, XForms, . . .
XPath 1.0 ⊆ XPath 2.0
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 28 / 75
![Page 25: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/25.jpg)
XPath-Sicht von XML
XML-Dokument ist ein Baum mit folgenden Knotenarten
Wurzel (Dokumentenknoten)
Element
Attribut
Text
Namespace
Verarbeitungsanweisungen <?name daten?>
Kommentare
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 29 / 75
![Page 26: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/26.jpg)
Pfadausdrücke
Ein Pfadausdruck . . .
Folge von Schritten 〈Step 〉 getrennt durch /.
Absoluter Pfadausdruck beginnt mit /.
de�niert Folge von XML-Knoten.
〈LocationPath〉 ::= 〈RelativeLocationPath〉| 〈AbsoluteLocationPath〉
〈AbsoluteLocationPath〉 ::= /〈RelativeLocationPath〉?| 〈AbbreviatedAbsoluteLocationPath〉
〈RelativeLocationPath〉 ::= 〈Step〉| 〈RelativeLocationPath〉/〈Step〉| 〈AbbreviatedRelativeLocationPath〉
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 31 / 75
![Page 27: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/27.jpg)
Location 〈Step 〉 besteht aus
Achse (traversierte Beziehung zwischen Knoten)
Knotentest (Typ und Name)
optionale Prädikate
〈Step〉 ::= 〈AxisSpecifier〉 〈NodeTest〉 〈Predicate〉∗| 〈AbbreviatedStep〉
〈AxisSpecifier〉 ::= 〈AxisName〉 ::| 〈AbbreviatedAxisSpecifier〉
Syntax:
axisname::nodetest[predicate]
Ergebnis eines Pfadausdrucks: Folge der Knoten (in Dokumentenordnung), die entlangder Achse erreicht werden, den Knotentest erfüllen und sämtliche Prädikate erfüllen
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 33 / 75
![Page 28: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/28.jpg)
Beispiel: Rezepte
child::rcp:recipe[attribute::id='117'] /child::rcp:ingredient /attribute::amount
<rcp:recipe id='116'>...
</rcp:recipe><rcp:recipe id='117'>
...<rcp:ingredient amount='42'></rcp:ingredient>...<rcp:ingredient amount='4711'></rcp:ingredient>...
</rcp:recipe><rcp:recipe id='118'>
...</rcp:recipe>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 35 / 75
![Page 29: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/29.jpg)
Beispiel: Rezepte
child::rcp:recipe[attribute::id='117'] /child::rcp:ingredient /attribute::amount
<rcp:recipe id='116'>...
</rcp:recipe><rcp:recipe id='117'>
...<rcp:ingredient amount='42'></rcp:ingredient>...<rcp:ingredient amount='4711'></rcp:ingredient>...
</rcp:recipe><rcp:recipe id='118'>...
</rcp:recipe>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 37 / 75
![Page 30: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/30.jpg)
Beispiel: Rezepte
child::rcp:recipe[attribute::id='117'] /child::rcp:ingredient /attribute::amount
<rcp:recipe id='116'>...
</rcp:recipe><rcp:recipe id='117'>
...<rcp:ingredient amount='42'></rcp:ingredient>...<rcp:ingredient amount='4711'></rcp:ingredient>...
</rcp:recipe><rcp:recipe id='118'>...
</rcp:recipe>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 39 / 75
![Page 31: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/31.jpg)
Beispiel: Rezepte
child::rcp:recipe[attribute::id='117'] /child::rcp:ingredient /attribute::amount
<rcp:recipe id='116'>...
</rcp:recipe><rcp:recipe id='117'>
...<rcp:ingredient amount='42'></rcp:ingredient>...<rcp:ingredient amount='4711'></rcp:ingredient>...
</rcp:recipe><rcp:recipe id='118'>
...</rcp:recipe>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 41 / 75
![Page 32: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/32.jpg)
Alle XPath-Achsen
〈AxisName 〉 ::=
child � parent
descendant � ancestor
following-sibling � preceding-sibling
following � preceding
attribute
namespace
self
descendant-or-self � ancestor-or-self
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 42 / 75
![Page 33: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/33.jpg)
Knotentests
〈NodeTest〉 ::= 〈NameTest〉| 〈NodeType〉()
〈NameTest〉 ::= * jeder Knoten| 〈NCName〉:* beliebiges Element in Namespace| 〈QName〉 benanntes Element
〈NodeType〉 ::= comment true, falls Kommentarknoten| text falls Textknoten| processing-instruction falls Verarbeitungsanweisung| node immer true
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 44 / 75
![Page 34: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/34.jpg)
Prädikate
〈Predicate〉 ::= [〈Expr〉]
Für jeden durch Achse und 〈NodeTest 〉 selektierten Knoten wird Ausdruck〈Expr 〉 im Kontext ausgewertet. Ergebnis → Boolean. Falls Ergebnis false, wirdder Knoten verworfen.
Weitere Ausdrücke Boolesche Operationen, arithmetische Operationen,
Vergleichsoperationen, Stringoperationen (über Funktionsaufrufe), Operationen
auf Knotenmengen
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 46 / 75
![Page 35: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/35.jpg)
Abkürzungen
In Location 〈Step 〉s gelten folgende Abkürzungen
child:: ist optional// für /descendant-or-self::node()/@ für attribute::. für self::node().. für parent::node()
〈AbbreviatedAbsoluteLocationPath〉 ::= //〈RelativeLocationPath〉〈AbbreviatedRelativeLocationPath〉 ::= 〈RelativeLocationPath〉//〈Step〉〈AbbreviatedStep〉 ::= . | ..〈AbbreviatedAxisSpecifier〉 ::= @?
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 47 / 75
![Page 36: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/36.jpg)
Beispiele
/bookstore/book[1]
/bookstore/book[last()]
/bookstore/book[last()-1]
/bookstore/book[position()<3]
//title[@lang]
//title[@lang='eng']
/bookstore/book[price>35.00]/title
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 48 / 75
![Page 37: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/37.jpg)
Extensible Stylesheet Language (XSL)
Was ist ein Stylesheet?Spezi�kation der Formatierung eines XML-Dokuments.
Wozu dient XSL?
XSLT Transformation von XML-DokumentenXSL-FO vorde�nierte Formatierungskomponenten
Vorgänger:
CSS (cascaded stylesheets)DSSSL (document stylesheet speci�cation language)
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 49 / 75
![Page 38: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/38.jpg)
Vorgänger: CSS
Spezi�kation des physikalischen Layout zu einer logischen Struktur
Darstellung von (X)HTML und XML
Zuordnung: Element im Kontext → Stilmerkmal (Grösse, Font, Farbe,. . . )
Aktuelle Version CSS2.1; bald CSS3
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 50 / 75
![Page 39: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/39.jpg)
Zuordnung: Dokument → CSS
Im <head> von XHTML Dokument
Intern durch <style> Element
<head><style type="text/css">p.special {color: green; border: solid red;}</style></head>
Extern durch Verweis auf CSS Datei
<head><link rel="stylesheet" href="style.css" type="text/css"/>
</head>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 52 / 75
![Page 40: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/40.jpg)
CSS Beispiele
p <p> Elementp.special <p> Element mit Attribut class="special".special Element mit CLASS="special"ul, p <p> oder <ul>#xy4711 nur Element mit id="xy4711"ul p <p> unterhalb von <ul>li > p <p> direkt unterhalb von <ul>a[title] <a> mit Attribut titlea[attr = "wert"] <a>, bei dem attr den Wert wert hata[attr �= "wert"] <a>, bei dem attr das Wort wert enthält
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 53 / 75
![Page 41: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/41.jpg)
Beispiel: Anzeige von Visitenkarten
Visitenkarten liegen in XML Format vor
Gewünscht: Schönes Anzeigeformat
<card xmlns="http://businesscard.org">
<name>John Doe</name>
<title>CEO, Widget Inc.</title>
<email>[email protected]</email>
<phone>(202) 555-1414</phone>
<logo uri="widget.gif"/>
</card>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 55 / 75
![Page 42: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/42.jpg)
Visitenkarte mit CSS
Am Anfang von card.xml (Browser: Mozilla)<?xml-stylesheet type="text/css" href="card.css"?>
card.csscard { background-color: #cccccc; border: none; width: 300;}name { display: block; font-size: 20pt; margin-left: 0; }title { display: block; margin-left: 20pt;}email { display: block; font-family: monospace; margin-left: 20pt;}phone { display: block; margin-left: 20pt;}
Ergebnis
I Gleiche Reihenfolge
I Information in Attributen?
I Keine neue Strukturen
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 57 / 75
![Page 43: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/43.jpg)
Visitenkarte mit XSLT
Am Anfang von card.xml (Browser: Mozilla)<?xml-stylesheet type="text/xsl" href="card.xsl"?>
Ergebnis
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 58 / 75
![Page 44: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/44.jpg)
Beispiel: XSLT Formatierung der Visitenkarte
<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"xmlns:b="http://businesscard.org"xmlns="http://www.w3.org/1999/xhtml" >
<xsl:output method="html"/>
<!-- template rules on following slides -->
</xsl:stylesheet>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 60 / 75
![Page 45: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/45.jpg)
Beispiel: Template Rule Ia
<xsl:template match="b:card"><html><head><title><xsl:value-of select="b:name"/></title>
</head><body bgcolor="#FFFFFF"><table border="3"><tr><td><xsl:apply-templates select="b:name"/> <br/><xsl:apply-templates select="b:title"/> <br/><tt><xsl:apply-templates select="b:email"/></tt> <br/><xsl:if test="b:phone">
Phone: <xsl:apply-templates select="b:phone"/></xsl:if>
</td>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 62 / 75
![Page 46: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/46.jpg)
Beispiel: Template Rule Ib
<td><xsl:if test="b:logo">
<img src="{b:logo/@uri}"/></xsl:if>
</td></tr>
</table></body>
</html></xsl:template>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 64 / 75
![Page 47: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/47.jpg)
Beispiel: Template Rule II
<xsl:template match="b:name|b:title|b:email|b:phone"><xsl:value-of select="."/>
</xsl:template>
Eigentlich über�üssig, da durch Standardregeln abgedeckt
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 66 / 75
![Page 48: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/48.jpg)
Überblick XSLT
XSLT-Prozessor:
Dokument abc.xml (mit stylesheet Direktive auf)
Stylesheet abc.xsl
1 (Baum-) Transformation von abc.xmlspezi�ziert durch Menge von TransformationsregelnRegel: Pattern → Template (wie funktionale Sprache)
2 Formatierung des Ergebnissesnach Abschluss der Transformationspezieller Namespace für FormatierungsobjekteEigenschaften (properties) für Farbe, Gröÿe, Font, usw
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 67 / 75
![Page 49: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/49.jpg)
template
Das <xsl:template> Element erzeugt ein Template
Mit dem Attribut match wird das entsprechende xml-Element ausgewählt,für das das Template verwendet wird.
Beispiel: <xsl:template match="/">
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 68 / 75
![Page 50: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/50.jpg)
value-of
Mit <xsl:value-of> wird der Inhalt eines Elementes extrahiert.
Beispiel: <xsl:value-of select="catalog/cd/title"/>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 69 / 75
![Page 51: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/51.jpg)
for-each
Mit <xsl:for-each> werden alle Elemente einer Knotenmenge betrachtet.
Beispiel: <xsl:for-each select="catalog/cd">
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 70 / 75
![Page 52: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/52.jpg)
sort
Mit <xsl:sort> können die Elemente sortiert ausgegeben werden.
Beispiel: <xsl:sort select="artist"/>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 71 / 75
![Page 53: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/53.jpg)
if
<xsl:if> ermöglicht Bedingungen.
Beispiel: <xsl:if test="price > 10">
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 72 / 75
![Page 54: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/54.jpg)
choose
<xsl:choose> ermöglicht Bedingungen mit mehreren Verzweigungen.
Beispiel:
<xsl:choose><xsl:when test="price > 10">...
</xsl:when><xsl:when test="price > 9 and price <= 10">...
</xsl:when><xsl:otherwise>...
</xsl:otherwise></xsl:choose>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 74 / 75
![Page 55: XML Kurs - Programmiersprachen · XML Kurs Markus Degen / Prof. Peter Thiemann 12. Oktober 2005 Markus Degen / Prof. Peter Thiemann XML Kurs 12. Oktober 2005 1 / 75](https://reader030.vdocuments.pub/reader030/viewer/2022040313/5e084075229a1705665397c3/html5/thumbnails/55.jpg)
apply-templates
Mit <xsl:apply-templates> werden andere Templates für dasentsprechende Element aufgerufen.
Beispiel: <xsl:apply-templates select="title"/>
Markus Degen / Prof. Peter Thiemann () XML Kurs 12. Oktober 2005 75 / 75