XSL Transformation. Eine praxisorientierte Einführung Philip Heck

Ähnliche Dokumente
Extensible Stylesheet Language Transformations XSLT

Projektseminar "Texttechnologische Informationsmodellierung"

Eine Schnelleinführung in XSL

Seminar Dokumentenverarbeitung

Transformation von XML-Dokumenten mit XSLT

IT-Zertifikat: Daten- und Metadatenstandards. Transformation von XML-Dokumenten mit XSLT (und XPATH) XSLT kurz und knackig. XSLT und die Praxis

XSL und XSLT. Inhalt. Mathias Heilig XSL Übersicht. Formatierungsprozess. Sprachbeschreibung. Vorführung Resümee

XML-Praxis.

Weiterführende Literatur: M. Knobloch, M. Kopp: Web-Design mit XML, dpunkt-verlag 2001

Linux I II III Res WN/TT NLTK XML Weka E XML BNC XSLT BNC/XML 7 BNC/XML XML BNC XSLT. Ressourcen-Vorkurs

XSL. extended Stylesheet Language. Die Stylesheet Sprache für XML

Konzept und Realisierung Extensible Stylesheet Language

mach,, Benjamin Kurtz, Bastian Bonnermann

XML-Praxis.

Web (Site) Engineering (WebSE)

Agenda. 1. Was können wir mit XSLT alles machen? 1. Beispiele: 1. Webseiten 2. Textprozessierung 3. Datenbankabfragen

Dokumentverarbeitung

Texttransformation mit XSLT

Transformation von XML-Dokumenten. IDE SummerSchool 2013, Chemnitz

Seminar: XML und intelligente Systeme

XML 1. Einführung, oxygen. Ulrike Henny. IDE Summer School 2013, Chemnitz

Einführung. Hallo-Welt in XSLT

Übersicht. Web (Site) Engineering (WebSE) XML-Beispieldokument. Simple API for XML (SAX) [Pro] XML-Beispiel. Vorlesung 6: Tools und Programmierung

IN A NUTSHELL. Elliotte Rusty Harold & W, Scott Means. Deutsche Übersetzung von Kathrin Lichtenberg & Jochen Wiedmann O'REILLY*

XPath XML Path Language

APEX und Apache FOP Freie PDF-Erstellung mit APEX 3.0.1

XSL Transformationen. -Teil 2 - Schwerpunkt: Templates und Kontrollstrukturen. XSL Transformationen - Teil 2 Christina Krieglstein / 66

XPath Lokalisierspfade Achsen in Lokalisierungsschritten

Grundlagen der Extensible Stylesheet Language

Klinikum Göttingen BE Tumorzentrum XML-Schema und TuDaSch-XML

XML-Verarbeitung. XPath XSL die extensible Stylesheet Language. Torsten Schaßan SCRIPTO Modul 4: EDV Wolfenbüttel

<XML und XSLT Eine Einführung/> Katharina Hemmeter, Claus Ludewig SQ: Digitale Dokumente

Einführung in XML Extensible Markup Language

DOM Document Object Model

Seminar im Sommersemester 2006 Institut für Mikrosystemtechnik, niversität Siegen

XML. XML-Verarbeitung mittels XSL

XML. XML-Abfrage- und Transformationssprachen. XPath DTD. XQuery. XML-Schema XSLT XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

XML. XML-Datenmodellierung / XML-Schemasprachen. XPath DTD. XQuery. XML-Schema XSLT XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis

XPATH (XPATH) Lernziele

XSLT extensible Stylesheet Language Transformation

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis

XML exemplarisch. nach: André Bergholz, Extending Your Markup: An XML Tutorial IEEE Internet Computing, Jul./Aug. 2000, 74 79

Gruppe 3 / 5 / 10. Tutorübung zu Einsatz und Realisierung von Datenbanksystemen (SS 17) Michael Schwarz

06 Formatierungssprachen, XSL. Manuel Burghardt Lehrstuhl für Medieninformatik

XSL < Extensible Stylesheet Language/>

Klaus Schild, XML Clearinghouse Transformation von XML-Dokumenten

XML Vorlesung FHA SS

X-Technologien. XML and Friends. Jörn Clausen 9. Juli 2001

2. Klausur Web-basierte Informationssysteme SS 2016

Duale Zustellung. Standardprofile. Version 1.0.0, DI Arne Tauber

XSLT. h_da SS Seite 1

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

Einführung in XML. Arthur Brack FHDW Hannover. 1. Oktober 2009

Fragestunde: Neuerungen in XQuery und XSLT

Inhaltsverzeichnis. 1 Grundlagen. Vorwort VII

TEI und XSLT. Referat von Hannah Goldschmidt und Christian Lütticke Datenbanktechnologie Sommersemester 2011

XSLT: Transformation von XML

XSLT XSL Transformations

XSLT XSL Transformations

extended Markup Language (XML)

Templat-Regeln: XSLT Transformation: XML-Dokumente als Bäume: sieben Arten von Knoten. XSLT Verarbeitungsmodell für Templat-Regeln.

Projektseminar "Texttechnologische Informationsmodellierung"

XSL - Extensible Stylesheet Language

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Softwareentwicklung mit Komponenten

bitflux CMS ein crossmedia-fähiges opensource System ein Vortrag von Marcel Linnenfelser

Softwaretechnik 2 - XML -

Daten- und Metadatenstandards Wintersemester 2011 / März 2012 Wiederholung und Klausurvorbereitung

Verteilte Anwendungen. Teil 8: XSL II (XSLT)

Datenbanksysteme 2 Frühjahr-/Sommersemester April Darf man in der XML Declaration die Versionsnummer weglassen? (d.h.

Projektseminar Texttechnologische Informationsmodellierung

XML Vorlesung FHA SS

XML-Praxis. Mit XSLT arbeiten. Jörn Clausen

Verarbeitung von XML-Daten XSLT & XPath. Heiko Paoli (FZI)

XPath & XQuery Standardisierte Abfragesprachen für XML-Dokumente. Sebastian Apel

Erstellen von PDF-Dokumenten für Business-Anwendungen mit XSL-FO

Praktikum zu XML: Übung 11

Daten- und Metadatenstandards Wintersemester 2011 / Januar 2012 Wiederholung

Projektarbeit: Übersetzung von XML-Updatesprachen

Anfragen an XML-Dokumente mit XPath

Übersicht. Web (Site) Engineering (WebSE) Java-Applets II. Java-Applets. Client-basierte Techniken Applets

Dynamische Inhalte und Formate

Datenbanksysteme. XML Technologien. XML, XPath, XQuery und XSLT. Dr. Martin Gieseking

Einführung in XML Torsten Schaßan SCRIPTO digital Wolfenbüttel

XML-Praxis. XSL-FO Übungen. Jörn Clausen

Einführung in XML Einführung in XML. Erik Wilde Institut für Technische Informatik und Kommunikationsnetze (TIK) ETH Zürich

Ruhr.pm XML-Daten verarbeiten mit XML::LibXML Autor: Datum:

FileMaker Konferenz 2010 XML / XSLT. Ein Workshop mit [x] cross solution Armin Egginger

Einführung: Installation und Anpassung der Site zum Buch 15

XSLT. Heutige Vorlesung. Warum XML-Dokumente transformieren? XSLT zur Transformation von XML-Dokumenten XSL-FO zur Erzeugung von druckfähigem Layout

Praktikum zur Veranstaltung XML-Technologie: Übung 09

XML und Dokumentenmanagement

Zusammenfassung des Vortrags Syntaktische Transformation


XSLT (XSLT) Lernziele

XSL. extended Stylesheet Language. Die Stylesheet Sprache für XML

Verarbeitung von XML-Dateien. Jörn Clausen

Transkript:

XSL Transformation Eine praxisorientierte Einführung Philip Heck

Agenda Motivation Hello World - Getting Started with XSLT XSLT Verarbeitung im Detail XPath 2

Motivation datenzentriertes XML als Standard für den Dokumentenaustausch XML Datenrepräsentationen sind nicht sonderlich lesbar 3

Motivation <dokument titel="xsl Transformation" autor="philip Heck"> <kapitel titel="motivation"> <paragraph> XSLT ist... </paragraph> <paragraph>... </paragraph> </kapitel> <kapitel titel="'hello World' - Hands on">... </kapitel> <kapitel titel="xpath">... </kapitel> </dokument> 4

Motivation XSL Transformation von Philip Heck 1. Motivation XSLT ist...... 2. Hello World... 3. XPath... 5

Motivation Das Bedürfnis XML Dokumente in eine andere - z.b. lesbarere - Form zu transformieren hat zur Entwicklung von XSLT geführt 6

XSLT Extensible Stylesheet Language Transformation neben XSL-FO und XPath einer der drei Komponenten der XSL offizielle Empfehlung des W3C XML in HTML, XML, PDF, SVG, Text,... transformieren 7

Anwendungsgebiete Website liefert Informationen an eine Vielzahl von Endgeräten 8

Anwendungsgebiete Datenaustausch zwischen heterogenen Datenbanksystemen 9

Getting Started 10

Transformationsprozess XSLT-Prozessor XML HTML XSL 11

XSLT Prozessoren xsltproc - XSLT C Library des Gnome Projekts http://xmlsoft.org/xslt/xsltproc2.html xsltproc -o AUSGABE.HTML STYLESHEET.XSL QUELLE.XML Xalan - XSLT-Engine des Apache Projekts http://xalan.apache.org/ Saxon - XSLT-Engine vom XSLT Autor Michael Kay http://saxon.sourceforge.net/ java -jar $SAXON/saxon8.jar QUELLE.XML STYLESHEET.XSL 12

Die Quelldatei <?xml version="1.0"?> <nachricht> Hallo Welt! </nachricht> 13

Das Ergebnis <html> <body> <h1>hallo Welt!</h1> </body> </html> 14

Das Stylesheet <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output method="html"/> <xsl:template match="/"> <xsl:apply-templates select="nachricht"/> </xsl:template> <xsl:template match="nachricht"> <html> <body> <h1> <xsl:value-of select="."/> </h1> </body> </html> </xsl:template> </xsl:stylesheet> 15

Das Stylesheet <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output method="html"/> es handelt sich um ein XSLT 1.0 Dokument Ausgabe soll html sein. XSLT definiert 3 Ausgabemethoden: html, xml oder text. 16

Das Stylesheet <xsl:template match="/"> <xsl:apply-templates select="nachricht"/> </xsl:template> Gibt es ein Template für den aktuellen Knoten ( / )? Der / ist ein XPath-Ausdruck, der Wurzel des Dokuments bedeutet. Später mehr dazu... Wende auf alle nachricht -Elemente das dazu passende Template an 17

Das Stylesheet <xsl:template match="nachricht"> <html> <body> <h1> <xsl:value-of select="."/> </h1> </body> </html> </xsl:template> </xsl:stylesheet> XML-Elemente ohne XSL-Namensraum oder reiner Text werden einfach ausgegeben <xsl:value-of select=. /> schreibt den Wert des aktuellen Elements in den Ausgabestrom 18

vielfältige Möglichkeiten <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:apply-templates select="nachricht"/> </xsl:template> #!/usr/bin/ruby puts Hallo Welt! <xsl:template match="nachricht"> #!/usr/bin/ruby puts <xsl:value-of select="."/> </xsl:template> </xsl:stylesheet> 19

XSLT Verarbeitung im Detail 20

XSLT Verarbeitung 1. Lese und parse die Eingabedokumente in interne Baumstrukturen 21

Beispiel XML <dokument titel="xsl Transformation" autor="philip Heck"> <kapitel titel="motivation"> <paragraph> XSLT ist... </paragraph> <paragraph>... </paragraph> </kapitel> <kapitel titel="hello World">... </kapitel> <kapitel titel="xpath">... </kapitel> </dokument> 22

Baumstruktur root dokument kapitel kapitel kapitel paragraph paragraph 23

XSLT Verarbeitung 1. Lese und parse die Eingabedokumente in interne Baumstrukturen 2. Finde ein <xsl:template >, welches auf den aktuellen Knoten zutrifft und führe es aus 24

XSLT Verarbeitung root dokument kapitel kapitel kapitel <xsl:template match= / > <xsl:apply-templates /> <xsl:template/> paragraph paragraph 25

XSLT Verarbeitung 1. Lese und parse die Eingabedokumente in interne Baumstrukturen 2. Finde ein <xsl:template >, welches auf den aktuellen Knoten zutrifft und führe es aus 3. Wenn weitere <xsl:template > Anweisungen vorhanden sind GOTO 2 26

XSLT Verarbeitung root <xsl:template match= / > <xsl:apply-templates /> <xsl:template/> kapitel dokument kapitel kapitel <xsl:template match= dokument > <h1><xsl:value-of select= @titel /></h1> <xsl:apply-templates select= kapitel /> <xsl:template/> paragraph paragraph <xsl:template match= kapitel > <h2><xsl:value-of select= @titel /></h2 <p><xsl:value-of select=. /></p>... 27

XSLT Verarbeitung root <xsl:template match= / > <xsl:apply-templates /> <xsl:template/> kapitel dokument kapitel kapitel <xsl:template match= dokument > <h1><xsl:value-of select= @titel /></h1> <xsl:apply-templates select= kapitel /> <xsl:template/> paragraph paragraph <xsl:template match= kapitel > <h2><xsl:value-of select= @titel /></h2 <p><xsl:value-of select=. /></p>... 28

XSLT Verarbeitung XSL Transformation Motivation XSLT ist...... Hello World... XPath... 29

XSLT Verarbeitung root <xsl:template match= / > <xsl:apply-templates /> <xsl:template/> kapitel dokument kapitel kapitel <xsl:template match= dokument > <h1><xsl:value-of select= @titel /></h1> <xsl:apply-templates select= kapitel /> <xsl:template/> paragraph paragraph <xsl:template match= kapitel > <h2><xsl:value-of select= @titel /></h2 <p><xsl:value-of select=. /></p>... 30

XSLT Verarbeitung root <xsl:template match= / > <xsl:apply-templates /> <xsl:template/> kapitel dokument kapitel kapitel <xsl:template match= dokument > <h1><xsl:value-of select= @titel /></h1> <xsl:apply-templates select= kapitel /> <xsl:template/> paragraph paragraph <xsl:template match= kapitel > <h2><xsl:value-of select= @titel /></h2 <p><xsl:value-of select=. /></p>... 31

XSLT Verarbeitung XSL Transformation Motivation XSLT ist...... Hello World... XPath... 32

XPath 33

Motivation Abfragesprache um Elemente eines XML Dokuments zu adressieren XSLT benötigt XPath um Elemente aus dem Quelldokument für die Transformation auszuwählen 34

Funktionsweise XPath sieht ein XML Dokument als einen Baum aus Knoten an, ähnlich Document Object Model (DOM) Mit Hilfe von XPath Ausdrücken kann in einem XML Dokument navigiert werden 7 Typen von Knoten, die wichtigsten werden kurz erläutert 35

Beispiel XML <dokument titel="xsl Transformation" autor="philip Heck"> <kapitel titel="motivation"> <paragraph> XSLT ist... </paragraph> <paragraph>... </paragraph> </kapitel> <kapitel titel="'hello World' - Hands on">... </kapitel> <kapitel titel="xpath">... </kapitel> </dokument> 36

Wurzelknoten <dokument titel="xsl Transformation" autor="philip Heck"> der Knoten, der das gesamte Dokument enthält in XPath-Ausdrücken durch einen einzelnen / gekennzeichnet der String-Wert (<xsl:value-of select= / />) ist die Verkettung aller Textknoten der Abkömmlinge des Wurzelknotens 37

Elementknoten <kapitel titel="motivation"> <paragraph> XSLT ist... </paragraph> <paragraph>... </paragraph> </kapitel> jedes Element im Quelldokument der Stringwert ist die Verkettung des Textes dieses Knotens und aller seiner Kinder name() liefert den Namen des Knotens zurück 38

Attributknoten <dokument titel="xsl Transformation" autor="philip Heck"> <kapitel titel="motivation"> Attribut eines Elementknotens Elementknoten sind die Elternknoten ihrer Attributknoten (Attribut Element) Attributknoten sind nicht die Kinder des Elementknotens (Element Attribut) Möchte ein Element auf seine Attribute zugreifen, muss es diese speziell adressieren. Später mehr... 39

Kontext alle XPath Aktionen werden im aktuellen Kontext interpretiert (<xsl:value-of select=. />) Kontextknoten: der XPath-Ausdruck wird von diesem Knoten aus ausgewertet Ist der Kontext eine Sammlung von Knoten: existieren Kontextposition und Kontextgröße 40

Adressierung von Elementen Wurzelknoten auswählen <xsl:template match= / /> Kontextknoten auswählen <xsl:value-of select=. /> <xsl:value-of select=.. /> Ebenen adressieren <xsl:apply-templates select= dokument/kapitel /> 41

relative und absolute Adressierung absolute Adressierung <xsl:apply-templates select= /dokument/kapitel /> relative Adressierung <xsl:apply-templates select= dokument/kapitel /> 42

Lokalisierungspfade Name des Knoten <xsl:value-of select= name() /> Attribut des Knoten <xsl:value-of select= dokument/@titel /> Text eines Knoten (Inhalt ohne Kindelemente) <xsl:value-of select= dokument/text() /> 43

Wildcards/Platzhalter * wählt alle Elementknoten im aktuellen Kontext aus @* wählt alle Attributknoten im aktuellen Kontext aus //element wählt element aus, unabhängig von seiner Position im Dokument. Performancekritisch! Je spezieller der XPath Ausdruck, desto effizienter die Verarbeitung. 44

Achsen Mit Achsen lässt sich ausgehend vom aktuellen Kontext im XML Dokument navigieren z.b. alle Vorfahren eines Knoten, alle Kinder eines Knoten, alle Geschwister, d.h. alle Knoten, welche den selben Elternknoten haben, usw. 45

Achsen child-achse: alle Kinder des Kontextknoten <xsl:apply-templates select= child::dokument /> parent-achse: der Elternknoten des Kontextknoten. Äquivalent zu... <xsl:apply-templates select= parent::kapitel /> 46

Achsen self-achse: der Kontextknoten selbst. Äquivalent zu.. <xsl:apply-templates select= self::kapitel /> attribute-achse: alle Attribute eines Knoten. Äquivalent zu @. <xsl:apply-templates select= attribute::titel /> 47

Prädikate Mit sog. Prädikaten kann ein Ergebnis weiter eingeschränkt werden Prädikate stehen in eckigen Klammern <xsl:apply-templates select= kapitel[2] /> Ist das Prädikat für einen Knoten true, wird dieser ausgewählt <xsl:apply-templates select= kapitel[position()=2 and @titel] /> 48

Prädikate Zur Auswahl können XPath und XSLT Funktionen verwendet werden <xsl:apply-templates select= kapitel[last()] /> <xsl:apply-templates select= kapitel[@titel= Motivation ] /> 49

Quellen Michael Kay, XSLT Programmer's Reference, Wrox Press Ltd. Birmingham, 2000 Doug Tidwell, XSLT, O'Reilly Media, Inc., 2001 50