69
X X P P A A T T H H X S L X S L X X S S L L T T Fachhochschule Köln FO3 – Institut für Informationswissen schaft 1 Dipl.-Dok. Rusalka Offer Verarbeiten und Präsentieren von XML -Dokumenten Einführung in XPATH und XSLT

Verarbeiten und Präsentieren von XML -Dokumenten Einführung in XPATH und XSLT

  • Upload
    clay

  • View
    25

  • Download
    0

Embed Size (px)

DESCRIPTION

Verarbeiten und Präsentieren von XML -Dokumenten Einführung in XPATH und XSLT. Historie: Mit dem Ziel XML-Dokumente präsentieren zu können, wurde vom W3C die Extensible Style Sheet Language (XSL) entwickelt Neben der Ausgabeformatierung sollte XSL auch - PowerPoint PPT Presentation

Citation preview

Page 1: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

1 Dipl.-Dok. Rusalka Offer

Verarbeiten und Präsentieren von

XML -Dokumenten

Einführung in

XPATH und XSLT

Page 2: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

2 Dipl.-Dok. Rusalka Offer

Historie:

Mit dem Ziel XML-Dokumente präsentieren zu können, wurde vom W3C dieExtensible Style Sheet Language (XSL) entwickelt

Neben der Ausgabeformatierung sollte XSL auch den Bereich Selektion und Transformation von Elementen eines Dokumentes beinhalten

Aufgrund der Komplexität des Entwurfes wurden die Themen Selektion und Transformation in eigenen Entwürfen bearbeitet

Page 3: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

3 Dipl.-Dok. Rusalka Offer

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

Page 4: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

4 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

-Adressierung einzelner Teile eines XML-Dokumentes

-Ausrichtung an der Baumstruktur eines XML-Dokumentes

-Ausdrucksweise / Formulierung nicht in XML

-Syntax: Orientierung an den Pfadangaben in URLs (Doppelpunkt / Backslash)

Page 5: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

5 Dipl.-Dok. Rusalka Offer

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, charactercontent, and relative position.“)

-Anwendung in XSLT Auswahl eines Elementes oder mehrerer Elemente zur Transformation

Page 6: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

6 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

XPATH orientiert sich an der logischen Baumstruktur eines Dokumentes

Knoten

Aktueller Knoten

Achse

Wurzelknoten ist das XML-Dokument selber

Dokument-knoten

Page 7: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

7 Dipl.-Dok. Rusalka Offer

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

oder

-eine Zeichenkette

Page 8: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

8 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

Die Auswertung eines Ausdrucks hängt vom Umfeld / Kontext ab:

wichtig:

-der aktuelle Knoten = Context Node

-die Position eines Knotens im Baum

Page 9: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

9 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

Ein Dokument wird immer in einer bestimmten Richtung vom Prozessor verarbeitet.

Diese Reihenfolge wird als Document Order bezeichnet

Document Order:

Page 10: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

10 Dipl.-Dok. Rusalka Offer

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

context-node

Page 11: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

11 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

ancestor-or-self:

Diese Achse umfasst alle Vorfahren-Knoten (ancestor). Der context-node gehört mit zur Achse

context node

Page 12: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

12 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

parent:

Diese Achse umfasst den Eltern-Knoten (parent). Alle Knoten mit Ausnahme vom Wurzelknoten haben genau einen Eltern-Knoten. Der context-node gehört nicht mit zur AchseContext node

Page 13: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

13 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

self:

Diese Achse umfasst nur den context-node

context-node

Page 14: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

14 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

child:

Diese Achse umfasst alle direkten Kinder des context-nodes. Der context-node ist nicht Bestandteil der Achse

context-node

Page 15: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

15 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

descendant:

Diese Achse umfasst alle Nachkommen des context-nodes. Der context-node ist nicht Bestandteil der Achse

Context-node

Page 16: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

16 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

descendant-or-self:

Diese Achse umfasst alle Nachkommen des context-nodes. Der context-node ist mit Bestandteil der Achse

Context-node

Page 17: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

17 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

following-sibling:

Diese Achse umfasst alle folgenden Geschwister des context-nodes. Der context-node ist nicht Bestandteil der Achse

Context-node

Page 18: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

18 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

preceding-sibling:

Diese Achse umfasst alle vorhergehenden Geschwister des context-nodes. Der context-node ist nicht Bestandteil der Achse

Context-node

Page 19: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

19 Dipl.-Dok. Rusalka Offer

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 Context-node

Page 20: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

20 Dipl.-Dok. Rusalka Offer

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

Context-node

Page 21: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

21 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

Zusammenfassung der Achsen:

ancestorancestor-or-selfchilddescendantdescendant-or-self

followingfollowing-siblingparentprecedingpreceding-siblingself

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

Page 22: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

22 Dipl.-Dok. Rusalka Offer

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 muss. Z.B.: //vorname)

Page 23: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

23 Dipl.-Dok. Rusalka Offer

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

-Erlaubt ist auch das * als Wildcard, um alle Knoten entlang einer Achse auszuwählen

Page 24: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

24 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

XPath-Ausdrücke:

-Xpath-Ausdrücke werden in sogenannten Location Steps notiert

-Ein Location Steps hat folgende Syntax:

AxisName::NodeTest [ predicate ]

(Achse::Knotentest [ Prädikat ])

-Die Auswahl der Knoten läßt sich mit Hilfe eines Prädikats noch verfeinern. Das Prädikat wird in eckigen Klammen an AxisName::NodeTest angehängt

Page 25: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

25 Dipl.-Dok. Rusalka Offer

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

Page 26: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

26 Dipl.-Dok. Rusalka Offer

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

Page 27: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

27 Dipl.-Dok. Rusalka Offer

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]

Angenommen ein Element hat mehrere Kind- Elemente mit Namen Verfasser, dann selektiert dieser Ausdruck das 2. Verfasser-Element

Page 28: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

28 Dipl.-Dok. Rusalka Offer

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

Page 29: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

29 Dipl.-Dok. Rusalka Offer

XPATH (XML Path Language)

Deutsche, kommentierte Übersetzung:

www.informatik.hu-berlin.de/~obecker/obqo/w3c-trans/xpath-de/

Übungen:

www.zvon.org/xxl/XPathTutorial/General/examples.html

Page 30: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

30 Dipl.-Dok. Rusalka Offer

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

Page 31: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

31 Dipl.-Dok. Rusalka Offer

XSLT(Extensible Style Sheet Language Transformation)

Um eine Transformation durchzuführen werden

-ein XML Dokument

-und eine Stylesheet-Datei benötigt

In der Stylesheet-Datei befinden sich die Transformationsvorschriften

Der Transformationsprozess beginnt immer beim Wurzelelement und verarbeitet dann das Dokument in der Dokument-Order.

Page 32: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

32 Dipl.-Dok. Rusalka Offer

XSLT(Extensible Style Sheet Language Transformation)

Die Transformation wird durch den XSLT-Prozessor 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

Page 33: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

33 Dipl.-Dok. Rusalka Offer

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

Page 34: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

34 Dipl.-Dok. Rusalka Offer

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></Person>

</adressbuch>

Page 35: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

35 Dipl.-Dok. Rusalka Offer

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>

Page 36: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

36 Dipl.-Dok. Rusalka Offer

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.

Page 37: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

37 Dipl.-Dok. Rusalka Offer

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 XSLT-Version und die Angabe der Namensräume für die XSLT-Spezifikation

Page 38: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

38 Dipl.-Dok. Rusalka Offer

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" 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.

Page 39: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

39 Dipl.-Dok. Rusalka Offer

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.

Allerdings ist es auch möglich, weitere Methoden hinzuzufügen. Diese Methoden müssen aber dann durch Namensräume qualifiziert sein.

Page 40: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

40 Dipl.-Dok. Rusalka Offer

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="/">

Page 41: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

41 Dipl.-Dok. Rusalka Offer

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" />

Page 42: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

42 Dipl.-Dok. Rusalka Offer

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.

Page 43: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

43 Dipl.-Dok. Rusalka Offer

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="." />

Page 44: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

44 Dipl.-Dok. Rusalka Offer

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.

Page 45: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

45 Dipl.-Dok. Rusalka Offer

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" http-equiv="content-type">

<title>Adressbuch</title></head><body>

<font color="red"><p></p>[email protected]</

font></body>

</html>

Page 46: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

46 Dipl.-Dok. Rusalka Offer

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

<xsl:for-each>

Auch bei <xsl:for each> wird das Attribut select und ein XPATH-Ausdruck als Attributwert angegeben:

<xsl: for-each select=“descendant::Nachname“>

Page 47: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

47 Dipl.-Dok. Rusalka Offer

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.

Page 48: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

48 Dipl.-Dok. Rusalka Offer

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

Page 49: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

49 Dipl.-Dok. Rusalka Offer

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

Page 50: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

50 Dipl.-Dok. Rusalka Offer

XSLT(Extensible Style Sheet Language Transformation)

Die Bedingung wird jeweils mit dem Attribut test abgefragt. Als Attributwert kann z.B ein XPATH-Ausdruck stehen:

<xsl:choose>

<xsl:when test="following-sibling::Vorname">.....</xsl:choose>

In diesem Beispiel wird die Bedingung abgefragt, ob der nachfolgende Geschwisterknoten, das Element “Vorname“ ist.

Page 51: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

51 Dipl.-Dok. Rusalka Offer

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></xsl:choose></xsl:for-each>

Page 52: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

52 Dipl.-Dok. Rusalka Offer

XSLT(Extensible Style Sheet Language Transformation)

Erläuterung:

<xsl:when test="following-sibling::Vorname">erster Vorname:<xsl:value-of select="." /><br></br></xsl:when>

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.

Page 53: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

53 Dipl.-Dok. Rusalka Offer

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.

Page 54: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

54 Dipl.-Dok. Rusalka Offer

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.

Page 55: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

55 Dipl.-Dok. Rusalka Offer

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><xsl:template>

Page 56: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

56 Dipl.-Dok. Rusalka Offer

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.“>

<xsl:element> Erzeugung von Elementen<xsl:attribute> Erzeugung von Attributen<xsl:text> Erzeugung von Text<xsl:comment> Erzeugung von Kommentaren

Page 57: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

57 Dipl.-Dok. Rusalka Offer

XSLT(Extensible Style Sheet Language Transformation)

XSLT - Spezifikation:

http://www.w3.org/TR/xslt

XSLT - Tools:

http://www.xslt.com/xslt_tools.htm

XSLT - Referenzen und Infos:

http://www.topxml.com/xsl/xsltref.asp

Deutschsprachige Ausarbeitung von Heiko Faasch:http://www.fh-wedel.de/~si/seminare/ws00/Ausarbeitung/5.xslt/xslt0.htm

Page 58: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

58 Dipl.-Dok. Rusalka Offer

EXKURSXML 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

Page 59: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

59 Dipl.-Dok. Rusalka Offer

EXKURSXML 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

Page 60: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

60 Dipl.-Dok. Rusalka Offer

EXKURSXML 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

Page 61: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

61 Dipl.-Dok. Rusalka Offer

EXKURSXML 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.

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

Page 62: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

62 Dipl.-Dok. Rusalka Offer

EXKURSXML Namespaces (XML Namensräume)

Vereinbarung von Namensräumen:

Ein Namensraum wird mit folgender Syntax vereinbart:

xmlns:Präfix="URI"

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.

URI: Bezeichnet den URI

Page 63: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

63 Dipl.-Dok. Rusalka Offer

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

Page 64: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

64 Dipl.-Dok. Rusalka Offer

EXKURSXML 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

Page 65: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

65 Dipl.-Dok. Rusalka Offer

EXKURSXML 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:

http://www.xfront.com/DefaultNamespace.pdf

Page 66: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

66 Dipl.-Dok. Rusalka Offer

EXKURSXML 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.

Ansonsten muss der Namensraum immer dem Element zugeordnet werden.

Dieser Namensraum gilt dann auch für alle Kind-Elemente des betreffenden Elements.

Page 67: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

67 Dipl.-Dok. Rusalka Offer

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

<person:Autor>Tolkien</person:Autor><person:Titel>Prof. Dr.</person:Titel>

</Film>

Page 68: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

68 Dipl.-Dok. Rusalka Offer

EXKURSXML 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

Page 69: Verarbeiten und Präsentieren von  XML -Dokumenten Einführung in  XPATH und XSLT

XXPPAATTHH

X S LX S L

XX

SS LLTT

Fachhochschule KölnFO3 – Institut fürInformationswissenschaft

69 Dipl.-Dok. Rusalka Offer

EXKURSXML 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