Kein Folientitel

Download Report

Transcript Kein Folientitel

Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
Verarbeiten und Präsentieren
von
XML -Dokumenten
XSL
Einführung in
X
XPATH und XSLT
S
L
T
1
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
Historie:
Mit dem Ziel XML-Dokumente präsentieren zu
können, wurde vom W3C die
Extensible Style Sheet Language (XSL) entwickel
Neben der Ausgabeformatierung sollte XSL auch
den Bereich Selektion und Transformation von
Elementen eines Dokumentes beinhalten
Aufgrund der Komplexität des Entwurfes wurden d
Themen Selektion und Transformation in eigenen
Entwürfen bearbeitet
2
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
Historie:
Aus dem ursprünglichen XSL - Entwurf
entstanden die Entwürfe für
-XPATH für Selektion von Daten aus einem
XML-Dokument
und
-XSLT (Extensible Style Sheet Language
Transformation) für die Transformation von
XML-Dokumenten
3
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XPATH (XML Path Language)
-Adressierung einzelner Teile eines XMLDokumentes
-Ausrichtung an der Baumstruktur eines XMLDokumentes
-Ausdrucksweise / Formulierung nicht in XML
-Syntax: Orientierung an den Pfadangaben in
URLs
(Doppelpunkt / Backslash)
4
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XPATH (XML Path Language)
-Anwendung in XPointer
(„XPointer, which is based on the XML Path Language
(XPath, supports addressing into the internal structures
of XML documents. It allows for traversals of a
document tree and choice of its internal parts based on
various properties, such as element types, attribute
values, character
content, and relative position.“)
-Anwendung in XSLT
Auswahl eines Elementes oder mehrerer
Elemente zur Transformation
5
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
XPATH orientiert sich an der logischen
Baumstruktur eines Dokumentes
Wurzelknoten
ist das XMLDokument
selber
Dokumentknoten
Knoten
XSL
Aktueller
Knoten
X
S
L
T
Achse
6
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
XPATH (XML Path Language)
Mit XPATH Ausdrücken kann:
- eine bestimmte Menge an Knoten (node set)
aus einem XML-Dokument selektiert werden
-ein boolescher Wert ermittelt werden
(true/false)
-ein Fließkommazahl zurückgegeben werden
X
S
L
T
oder
-eine Zeichenkette
7
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
Die Auswertung eines Ausdrucks hängt vom
Umfeld / Kontext ab:
wichtig:
XSL
-der aktuelle Knoten = Context Node
-die Position eines Knotens im Baum
X
S
L
T
8
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
Ein Dokument wird immer in einer bestimmten
Richtung vom Prozessor verarbeitet.
Diese Reihenfolge wird als Document Order
bezeichnet
Document Order:
XSL
X
S
L
T
9
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
Für die Verarbeitung können verschiedenen
Achsen im Dokumentbaum bestimmt werden:
ancestor:
Diese Achse umfasst
alle Vorfahren-Knoten
(ancestor). Der
context-node gehört
nicht zur Achse
XSL
X
S
L
T
context-node
10
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
ancestor-or-self:
Diese Achse umfasst
alle Vorfahren-Knoten
(ancestor). Der
context-node gehört
mit zur Achse
XSL
X
S
L
T
context node
11
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
parent:
Diese Achse umfasst
den Eltern-Knoten
(parent). Alle Knoten
mit Ausnahme vom
Wurzelknoten haben
genau einen ElternKnoten. Der contextnode gehört nicht mit
zur Achse
XSL
X
S
L
T
Context node
12
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
self:
Diese Achse umfasst
nur den context-node
XSL
X
S
L
T
context-node
13
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
child:
Diese Achse umfasst
alle direkten Kinder
des context-nodes.
Der context-node ist
nicht Bestandteil der
Achse
XSL
X
S
L
T
context-node
14
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
descendant:
Diese Achse umfasst
alle Nachkommen
des context-nodes.
Der context-node ist
nicht Bestandteil der
Achse
XSL
X
S
L
T
Context-node
15
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
descendant-or-self:
Diese Achse umfasst
alle Nachkommen
des context-nodes.
Der context-node ist
mit Bestandteil der
Achse
XSL
X
S
L
T
Context-node
16
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
following-sibling:
Diese Achse umfasst
alle folgenden
Geschwister des
context-nodes. Der
context-node ist nicht
Bestandteil der Achse
XSL
X
S
L
T
Context-node
17
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
preceding-sibling:
Diese Achse umfasst
alle vorhergehenden
Geschwister des
context-nodes. Der
context-node ist nicht
Bestandteil der Achse
XSL
X
S
L
T
Context-node
18
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
following:
Diese Achse umfasst
alle Knoten nach dem
context-node außer
den Nackommen des
context-nodes. Der
context-node ist nicht
Bestandteil der Achse
XSL
X
S
L
T
Context-node
19
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
preceding:
Diese Achse umfasst
alle Knoten vor den
context-node außer
den Vorfahren des
context-nodes. Der
context-node ist nicht
Bestandteil der Achse
XSL
X
S
L
T
Context-node
20
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XPATH (XML Path Language)
Zusammenfassung der Achsen:
ancestor
ancestor-or-self
child
descendant
descendant-or-self
following
following-sibling
parent
preceding
preceding-sibling
self
Es existieren ausserdem noch
zwei weitere Achsen:
attribute
(Attribute des context-nodes)
namespace
(Deklarationen des
Namensraums)
Diese Achsen lassen sich in der
Baumdarstellung nur schlecht
realisieren
21
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XPATH (XML Path Language)
Pfadangaben:
In XPath Ausdrücken können relative und absolute
Pfadangaben verwendet werden:
/ Beginnt der Pfad mit einem Slash handelt es sich um einen
absoluten Pfad, es wird also nicht vom context-node
ausgegangen (/A/B ist z.B. eine absolute Pfadangabe).
Der Slash für sich allein gestellt bezeichnet den
Wurzelknoten.
. bezeichnet den context Node (self)
.. bezeichnet den parent node (parent)
* Wildcard (z.B. /A/*)
// mit dem doppelten Schrägstrich lassen sich
Elemente unabhängig vom Pfad im Dokument
selektieren (wobei der Elementname nach dem doppelten
Slash angegeben werden
22 muss. Z.B.: //vorname)
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XPATH (XML Path Language)
Knotentest:
-Zur Erstellung eines XPath-Ausdrucks ist
neben
der Spezifizierung der Achsen, auch die
Auswahl
der Knoten entlang einer Achse notwendig.
-Dies geschieht durch den sogenannten
Knotentest (node test)
-Knoten sind vor allem die Elemente in einem
XML Dokument und der Knotentest wird
anhand
des Elementnamens durchgeführt
23
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XPATH (XML Path Language)
XPath-Ausdrücke:
-Xpath-Ausdrücke werden in sogenannten
Location Steps notiert
-Ein Location Steps hat folgende Syntax:
XSL
AxisName::NodeTest [ predicate ]
(Achse::Knotentest [ Prädikat ])
X
S
L
T
-Die Auswahl der Knoten läßt sich mit Hilfe
eines
Prädikats noch verfeinern. Das Prädikat wird
in
eckigen Klammen24an AxisName::NodeTest
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
XPATH (XML Path Language)
Beispiele für XPath-Ausdrücke:
child::brief
mit diesem Ausdruck werden alle Elemente
mit dem Namen brief unterhalb des aktuellen
Knotens ausgewählt
Axis-Name: child
node test: brief
S
L
T
25
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XPATH (XML Path Language)
Beispiele für XPath-Ausdrücke:
child::*
mit diesem Ausdruck werden alle
Kindelemente des aktuellen Knotens
ausgewählt
/descendant::adresse
mit diesem Ausdruck werden alle Elemente
mit Namen adresse im gesamten Dokument
selektiert. Der Slash vor dem axis name leitet
einen absoluten Pfad ein. Hier wird also nicht
vom context-node ausgegangen
26
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
XPATH (XML Path Language)
Prädikate:
Die Auswahl von Elementen kann mit
Prädikaten weiter verfeinert werden
Ein einfaches Prädikat ist die Angabe eines
numerischen Ausdrucks um ein bestimmtes
Element zu selektieren:
child::Verfasser[2]
X
S
L
T
Angenommen ein Element hat mehrere KindElemente mit Namen Verfasser, dann
selektiert dieser Ausdruck das 2. VerfasserElement
27
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XPATH (XML Path Language)
Prädikate:
Ein anderes Beispiel für ein Prädikat:
nummer[mobil]
->selektiert die nummer-Kindelemente, die ein
oder mehrere mobil-Kindelemente haben
Attribute:
//@id
->Attribut-Abfrage: wählt alle Elemente aus,
die ein Attribut id haben
28
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
XPATH (XML Path Language)
Deutsche, kommentierte Übersetzung:
www.informatik.hu-berlin.de/~obecker/obqo/w3ctrans/xpath-de/
Übungen:
www.zvon.org/xxl/XPathTutorial/General/examples.html
S
L
T
29
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
XSLT transformiert XML-Dokumente oder Teile
von XML-Dokumenten in eine andere Form (z.B.
anderes XML-Format, HTML, MathML)
Bei der Transformation ist folgendes zu beachten:
-eine Transformation ist nicht unbedingt
umkehrbar
-eine Transformation kann zu Informationsverlust
führen
-aus einem transformierten Dokument ist das
Ursprungsdokument nicht rekonstruierbar
30
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSLT
(Extensible Style Sheet Language
Transformation)
Um eine Transformation durchzuführen werden
-ein XML Dokument
-und eine Stylesheet-Datei benötigt
XSL
X
S
L
T
In der Stylesheet-Datei befinden sich die
Transformationsvorschriften
Der Transformationsprozess beginnt immer beim
Wurzelelement und verarbeitet dann das
Dokument in der Dokument-Order.
31
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Die Transformation wird durch den XSLTProzessor durchgeführt.
Eine Liste von XSLT-Prozessoren findet man
unter:
http://www.xslt.com/xslt_tools.htm
Hinweis: Der I.E. 5.x besitzt auch einen XSLT
Prozessor, z.T. werden aber veraltete Entwürfe
von XSLT / XPATH unterstützt.
Eine Übersicht der von MSXML unterstützte
Befehle findet man unter:
http://www.topxml.com/xsl/xsltref.asp
32
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Gegeben ist folgende DTD:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT adressbuch (Person+)>
<!ELEMENT Person (Name+,Email*)>
<!ELEMENT Name (Vorname+, Nachname)>
<!ELEMENT Email (#PCDATA)>
<!ELEMENT Vorname (#PCDATA)>
<!ELEMENT Nachname (#PCDATA)>
33
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
XML-Beispiel:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE adressbuch SYSTEM "C:\XML\adressbuch.dtd">
<?xml-stylesheet type="text/xsl" href="C:\XML\adressbuch2.xsl"?>
<adressbuch>
<Person>
<Name>
<Vorname>Rainer</Vorname>
<Vorname>Maria</Vorname>
<Nachname>Rilke</Nachname>
</Name>
<Email>[email protected]</Email>
</Person>
<Person>
<Name>
<Vorname>Friedrich</Vorname>
<Nachname>Schiller</Nachname>
</Name>
34
Dipl.-Dok. Rusalka
</Person>
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Beispiel für ein Stylesheet:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="html" />
<xsl:template match="/">
<html><head><title>Adressbuch</title></head>
<body>
<xsl:apply-templates select="descendant::Email" />
</body></html>
</xsl:template>
<xsl:template match="Email">
<font color="red"><p></p>
<xsl:value-of select="." />
</font>
</xsl:template>
</xsl:stylesheet>
35
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<?xml version="1.0" encoding="UTF-8"?>
Ein Stylesheet ist immer ein echtes XML Dokument, deshalb wird mit der XML-Deklaration
begonnen.
S
L
T
36
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
Danach wird das Wurzelelement des
Stylesheets angegeben, das Wurzelelement
ist immer <xsl:stylesheet>
Als Attribut folgt dann die Angabe der XSLTVersion und die Angabe der Namensräume
für die XSLT-Spezifikation
37
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
In der Attributangabe:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
X
S
L
T
wird für das Präfix xsl: der Namensraum
" http://www.w3.org/1999/XSL/Transform"
deklariert. Damit stammt jedes Element, das
mit xsl: beginnt aus dem Sprachumfang von
XSLT.
38
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<xsl:output method="html" />
Die Ausgabe-Methode wird mit dem Element
xsl:output festgelegt. Erlaubte Methoden sind
xml, html, text.
X
S
L
T
Allerdings ist es auch möglich, weitere
Methoden hinzuzufügen. Diese Methoden
müssen aber dann durch Namensräume
qualifiziert sein.
39
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<xsl:template match="/">
<html><head><title>Adressbuch</title></head>
<body>
<xsl:apply-templates select="descendant::Email" />
</body></html>
</xsl:template>
Ausgegangen bei der Bearbeitung wird
immer vom Wurzelknoten, deshalb sucht der
XSLT-Prozessor nach einer Vorlage (einem
Template) für den Wurzelkoten: <xsl:template
match="/">
40
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<xsl:template match="/">
<html><head><title>Adressbuch</title></head>
<body>
<xsl:apply-templates select="descendant::Email" />
</body></html>
</xsl:template
>
Ist der Wurzelknoten
gefunden, wird bis zum
Ende des aktuellen Templates alles
ausgegeben.
Zwischen <body> und </body> stößt der
Prozessor auf den Befehl:
<xsl:apply-templates select="descendant::Email" />
41
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<xsl:apply-templates select="descendant::Email" />
Mit diesem Befehl wird der Prozessor
angewiesen, nach einem Template für
Nachkommen (descendant) des aktuellen
Knotens zu suchen, die den Namen “Email“
tragen. Dieses Template soll dann an dieser
Stelle eingefügt werden.
42
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
Der Prozessor findet nun folgendes
Template:
<xsl:template match="Email">
<font color="red"><p></p>
<xsl:value-of select="." />
</font>
</xsl:template>
Nun wird der Inhalt des gefundenen Templates
ausgegeben bzw. an der richtigen Stelle im
Stylesheet eingefügt. Bei der Ausgabe stößt der
Prozessor auf folgende Zeile:
<xsl:value-of select="." />
43
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<xsl:value-of select="." />
Mit diesem Befehl wird der Wert (value-of) des
Elementes selektiert (select) , der durch den
XPATH-Ausdruck "." angeben ist, in diesem
Falle wird durch den XPATH-Ausdruck der
aktuelle Knoten ausgewählt. Die Wert des
Email-Elementes ist: [email protected] und wird
im Template eingefügt.
44
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
Danach wird der Rest des Templates
ausgegeben:
</body></html>
und anschließend die HTML Datei erzeugt:
<html>
<head>
<meta content="text/html; charset=utf-8"
equiv="content-type">
<title>Adressbuch</title>
http-
</head>
<body>
S
L
T
<font color="red">
<p></p>[email protected]</font>
</body>
</html>
45
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
XSLT
(Extensible Style Sheet Language
Transformation)
Schleifen und bedingte Anweisungen:
Neben der Möglichkeit Elemente mit
<xsl:apply templates>
auszuwählen, gibt es auch die Methode
X
<xsl:for-each>
S
L
T
Auch bei <xsl:for each> wird das Attribut select und
ein XPATH-Ausdruck als Attributwert angegeben:
<xsl: for-each select=“descendant::Nachname“>
46
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
<xsl: for-each select=“descendant::Nachname“>
Durch dieses XSL-Element wird ein Schleife
definiert. Jeder Knoten der dem XPATH-Ausdruck
entspricht wird gemäß den Anweisungen innerhalb
des
<xsl: for-each>...</xsl:for-each>
bearbeitet.
47
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Beispiel:
<xsl:for-each select="descendant::Nachname">
Nachname:
<xsl:value-of select="." /> br></br>
</xsl:for-each>
In diesem Beispiel wird das Element Nachname
ausgewählt, dann wird die Zeichenkette “Nachname:“
geschrieben und anschließend der Inhalt des
aktuellen Elementes ausgegeben
48
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Neben den Schleifen kennt XSLT auch bedingte
Anweisungen:
<xsl:if> für bedingte Anweisungen ohne Alternativen
und
<xsl:choose> für bedingte Anweisungen mit
Alternativen. Innerhalb von <xsl:choose> steht /
stehen eine oder mehrere <xsl:when> - Bedingung /
Bedingungen und eine optionale <xsl:otherwise> Bedingung
49
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSLT
(Extensible Style Sheet Language
Transformation)
Die Bedingung wird jeweils mit dem Attribut test
abgefragt. Als Attributwert kann z.B ein XPATHAusdruck stehen:
<xsl:choose>
XSL
X
S
L
T
<xsl:when test="following-sibling::Vorname">
.....
</xsl:choose>
In diesem Beispiel wird die Bedingung abgefragt, ob
der nachfolgende Geschwisterknoten, das Element
“Vorname“ ist.
50
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Beispiel (innerhalb einer Schleife):
<xsl:for-each select="descendant::Vorname">
<xsl:choose>
<xsl:when test="following-sibling::Vorname">
erster Vorname:
<xsl:value-of select="." /><br></br>
</xsl:when>
<xsl:when test="preceding-sibling::Vorname">
zweiter Vorname:
<xsl:value-of select="." /><br></br>
</xsl:when>
<xsl:otherwise>
Vorname: <xsl:value-of select="." /><br></br>
</xsl:otherwise>
51
</xsl:choose>
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<xsl:when test="following-sibling::Vorname">
erster Vorname:
<xsl:value-of select="." /><br></br>
</xsl:when>
XSL
X
S
L
T
Im vorangegangenen Beispiel (context-node ist
Vorname) wird geprüft, ob der aktuelle Knoten einen
nachfolgenden Geschwisterknoten “Vorname“
besitzt. Ist dies der Fall wird die Zeichenkette “erster
Vorname:“ ausgegeben und dann der Wert des
aktuellen Elements eingefügt. Danach wird ein
Zeilenumbruch durchgeführt.
52
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<xsl:when test="preceding-sibling::Vorname">
zweiter Vorname:
<xsl:value-of select="." /><br></br>
</xsl:when>
Wenn die erste Bedingung nicht erfüllt ist, wird
geprüft ob der vorhergehende Geschwisterknoten,
ein Knoten “Vorname“ ist. Ist dies der Fall wird die
Zeichenkette “zweiter Vorname:“ ausgegeben und
dann der Wert des aktuellen Elements eingefügt.
Danach wird ein Zeilenumbruch durchgeführt.
53
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Erläuterung:
<xsl:otherwise>
Vorname: <xsl:value-of select="." /><br></br>
</xsl:otherwise>
Wenn weder die erste noch die zweite Bedingung
erfüllt ist, wird keine Bedingung mehr abgeprüft
sondern es kommt eine festgelegte Alternative zum
Einsatz. Es wird die Zeichenkette “Vorname“
ausgegeben und der Inhalt des aktuellen Knotens
wird ausgegeben. Danach wird ein Zeilenumbruch
durchgeführt.
54
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
XSLT
(Extensible Style Sheet Language
Transformation)
Übersicht: Kindelemente von <xsl:stylesheet>
<xsl:stylesheet>
<xsl:import>
<xsl:include>
<xsl:strip-space>
<xsl:preserve-space>
<xsl:output>
<xsl:key>
<xsl:decimal-format>
<xsl:namespace-alias>
<xsl:attribute-set>
<xsl:variable>
<xsl:param>
55
<xsl:template>
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
XSLT
(Extensible Style Sheet Language
Transformation)
Weitere XSLT - Elemente:
<xsl:sort>
Sortierung
Beispiel: <xsl:sort select=“Nachname“ />
<xsl:number>
Numerierung
Beispiel: <xsl:number value=“position()“ format=“1.“>
X
S
L
T
<xsl:element>
Elementen
<xsl:attribute>
<xsl:text>
<xsl:comment>
Erzeugung von
Erzeugung von Attributen
Erzeugung von Text
Erzeugung
von Kommentaren
56
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSLT
(Extensible Style Sheet Language
Transformation)
XSLT - Spezifikation:
http://www.w3.org/TR/xslt
XSLT - Tools:
XSL
http://www.xslt.com/xslt_tools.htm
XSLT - Referenzen und Infos:
X
S
L
T
http://www.topxml.com/xsl/xsltref.asp
Deutschsprachige Ausarbeitung von Heiko Faasch:
http://www.fhwedel.de/~si/seminare/ws00/Ausarbeitung/5.xslt/xslt0.htm
57
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
EXKURS
XML Namespaces (XML Namensräume)
Problem:
->Innerhalb eines XML Dokumentes sollen Elemente
aus verschiedenen Dokumenttypen verwendet
werden.
->Die Elemente sind zum Teil gleich benannt, der
semantische Hintergrund ist jedoch
unterschiedlich
->Der XML-Prozessor soll gleichlautende Namen
auseinanderhalten können
58
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
EXKURS
XML Namespaces (XML Namensräume)
Beispiel: XML Dokument
<?xml version="1.0" encoding="UTF-8"
standalone="yes" ? >
<Buch>
<Titel>Der kleine Hobbit</Titel>
</Buch>
< Person>
<Titel >Prof. Dr.</Titel>
<Name>Tolkien</Name>
</Person>
</xml>
->Problem: Das Element Titel ist nicht eindeutig
59
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
EXKURS
XML Namespaces (XML Namensräume)
Lösung: Namensräume
„Ein Namensraum ist eine Sammlung von Namen,
die durch einen eindeutigen Bezeichner identifiziert
werden“.
Ein Namensraum man kann auch als Behälter mit
einem bestimmten Namen für Elemente und Attribute
bezeichnen
S
L
T
60
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
EXKURS
XML Namespaces (XML Namensräume)
Lösung: Namensräume
Als Bezeichner für einen Namensraum wird ein URI
(Uniform Resource Identifier ) gewählt.
Ein URI kann entweder eine URL oder ein URN sein.
XSL
X
S
L
T
URLs werden verwendet, weil sie eindeutig sind,
hinter der angegebenen Adresse muss kein
Dokument stehen.
Vorgesehen ist aber, dass bei der Verwendung einer
URL als Namensraum, diese auch als
Informationsquelle für die im Namensraum
verwandten Ressourcen
dient
61
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
EXKURS
XML Namespaces (XML Namensräume)
Vereinbarung von Namensräumen:
Ein Namensraum wird mit folgender Syntax
vereinbart:
xmlns:Präfix="URI"
XSL
X
S
L
T
xmlns ist ein spezielles Attribut zur Vereinbarung
von Namensräumen
Präfix: Bezeichnet die Abkürzung des über den URI
vereinbarten Namensraums, das Präfix kann frei
gewählt werden, es darf aber keinen Doppelpunkt
enthalten.
62
URI: Bezeichnet den URI
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
EXKURS
XML Namespaces (XML Namensräume)
Das Präfix wird nun allen Elementen und Attributen
vorangestellt die aus dem jeweiligen Namensraum
stammen, dabei gilt folgende Syntax:
Präfix:Elementname
Beispiel:
<lib:buch xmlns: lib ="http://www.hobbit.de/buch/">
<lib:Titel>Der kleine Hobbit</lib:Titel>
<lib:Autor>Tolkien</lib:Autor>
</lib:buch>
63
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
EXKURS
XML Namespaces (XML Namensräume)
Problem: Namespaces und DTDs
Die Validierung eines Dokuments, das Elemente aus
mehreren Namensräumen enthält, ist ohne
Neuformulierung einer gemeinsamen DTD nicht
möglich.
->DTDs gab es schon vor der Einführung von
Namensräumen
->In einer DTD müssen Namen und Attribute
vollständig
deklariert werden, die Präfixe müssten also in der
DTD
bereits mitangegeben
werden
64
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
EXKURS
XML Namespaces (XML Namensräume)
Kein Problem: Namespaces und Schemas
Im Gegensatz zu DTDs unterstützen und verwenden
XML-Schemas das Konzept der Namensräume.
Informationen zur Verwendung von namespaces in
Schema unter:
X
S
L
T
http://www.xfront.com/DefaultNamespace.pdf
65
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
EXKURS
XML Namespaces (XML Namensräume)
Eigenschaften von Namespaces:
Fügt man das Attribut xmlns dem Wurzel-Element zu,
dann gilt der Namensraum für das gesamte
Dokument, man bezeichnet diesen Namespace auch
als Default-Namespace. In diesem Falle kann auf
das Präfix verzichtet werden.
X
Ansonsten muss der Namensraum immer dem
Element zugeordnet werden.
S
L
T
Dieser Namensraum gilt dann auch für alle KindElemente des betreffenden Elements.
66
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
EXKURS
XML Namespaces (XML Namensräume)
XML-Dokumente mit verschiedenen
Namespaces:
<Film xmlns=http://www.film.com/xml
xmlns:person="http://www.person.de/xml">
<Titel>Der kleine Hobbit</Titel>
X
<person:Autor>Tolkien</person:Autor>
<person:Titel>Prof. Dr.</person:Titel>
S
L
T
</Film>
67
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
EXKURS
XML Namespaces (XML Namensräume)
XML-Dokumente mit verschiedenen
Namespaces:
<Film xmlns="http://www.film.com/xml"
->Angabe des default namespace
xmlns:person="http://www.person.de/xml">
->durch Präfix qualifizierter Namespace
<Titel>Der kleine Hobbit</Titel>
->Element aus dem default-namespace
<person:Autor>Tolkien</person:Autor>
<person:Titel>Prof. Dr.</person:Titel>
->Elemente aus dem qualifizierten namespace
68
Dipl.-Dok. Rusalka
Fachhochschule Köln
FO3 – Institut für
Informationswissenschaf
t
X
P
A
T
H
XSL
X
S
L
T
EXKURS
XML Namespaces (XML Namensräume)
Links:
•Namespaces in XML (W3C Recommendation):
http://www.w3.org/TR/REC-xml-names/
•Namespaces in XML 1.1 (Candidate
Recommendation):
http://www.w3.org/TR/xml-names11/
•Einführung in XML: Namensräume, Infoset, RDDL:
http://www.informatik.hu-berlin.de/~obecker
/Lehre/SS2002/XML/05-namespace.html
•Webapplikationen mit Unterstützung von XML:
http://www.schmiderer.cc/xmlwebapp/index.php
69
Dipl.-Dok. Rusalka