XSLT XSL Transformations

Ähnliche Dokumente
XML-Praxis. XML-Anwendungen. Jörn Clausen

Transformation von XML-Dokumenten. IDE SummerSchool 2013, Chemnitz

Komplexe Transformationen mit XSLT

Komplexe Transformationen mit XSLT

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

Projektseminar "Texttechnologische Informationsmodellierung"

Hinweise für die Nutzung von XSLTs beim PDF Export der BlueBridge Wiki Extensions

Verarbeitung von XML-Dateien. Jörn Clausen

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

Verwaltungsaufgaben lösen mit XML und L A T E X

XSLT Muster und Lösungen

XSL Templates. Mit Templates arbeiten. XSL Templates

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

XML-Scripting mit XSLT für SysAdmins

Klaus Schild, XML Clearinghouse Transformation von XML-Dokumenten

Duale Zustellung. Standardprofile. Version 1.0.0, DI Arne Tauber

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

Dynamische Websites mit XML und PHP4

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

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

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

Angewandte Softwareentwicklung XML

XML XPath XSLT. Wiederholung und Auffrischung. Ulrike Henny und Patrick Sahle. IDE Autumn School 2012, Chemnitz

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

Web-Anwendungsentwicklung mit dem Delivery Server

2 Volldampf voraus: Ein XML-, XPath-, XSLT-Crashkurs

XSLT (XSLT) Lernziele

UnivIS ein Informationssystem für Hochschulen

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

XML Extensible Markup Language

Konfiguration von Web Services zur Ausführung von Jobs

Projektseminar Texttechnologische Informationsmodellierung

MySQL Queries on "Nmap Results"

Marek Kubica Michael Kerscher Rechnernetze und Verteilte Systeme Übungsblatt 10 Gruppe G

Kontrollstrukturen - Universität Köln

Interdisziplinäres Praktikum

XML Kurs LRZ 1

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

Studentische Lösung zum Übungsblatt Nr. 7

Buchstabensuppe. Standards für die Präsentation von XML-Instanzen

XML Extensible Markup Language

WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN?

Softwareentwicklung mit Komponenten

Die kleine XML-Apotheke Einführendes zum Thema XML, XSL und Datenbanken

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Klausur zur Vorlesung Einführung in XML

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

Vorwort. Konzeption der Reihe

WordXML Datenfluß. Autor: Frank Eppinger Datum: Status: in Arbeit Version: 0.2

XML-Praxis. XML-Grammatiken. Jörn Clausen

VNUML Projektpraktikum

Projektarbeit Sommersemester Fachhochschule Ravensburg- Weingarten

1. Zusammenfassung der letzten Vorlesung

1. Zusammenfassung der letzten Vorlesung

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

Migrationsanleitung von 2.0 auf 2.1

Codegeneratoren mit Xtend , A. Arnold

XML Extensible Markup Language

Die LogTrace-Bibliothek

Installation des edu- sharing Plug- Ins für Moodle

Magento Theming Ein Einstieg Rainer Wollthan

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

Inhaltsverzeichnis. Teil 1 Grundlagen 5. Teil 2 Formatierung 31 INHALTSVERZEICHNIS

EXT: kool_leute. Extension Key: kool_leute Copyright , Renzo Lauper,

XML mit SAS leicht gemacht

XML-QL. Querysprachen für XML. Semistrukturierte Datenmodell und XML Datenmodell. Beispiel

Web-Programmierung (WPR)

TYPO3 und TypoScript

XML Extensible Markup Language

Schulungsunterlagen: ARCWAY Cockpit Report Engine. Erstellen und Anpassen von Berichtsvorlagen für ARCWAY Cockpit

Herzlich willkommen!

Streaming Transformations for XML STX

DATACOPY. Schulungskonzept. DATACOPY-Schulungskonzept Version 1.05 Stand:

Entwicklung eines Tools zur Verwaltung und Generierung von XSL-Templates

Übungsblatt 8- Lösungsvorschlag

A) Durchsuchen von Datenbanken im Internet durch Endnote

Ablauf Unit2. Walkthrough

Design anpassen eine kurze Einführung

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Template Programmierung mit Joomla!

XML-RPC, SOAP und Web Services. Jörn Clausen

VBA-Programmierung: Zusammenfassung

DataTables LDAP Service usage Guide

Query Transformation based on XSLT

TextGrid: der GWES im Einsatz

Proseminar XML. Cocoon, eine Einführung. Wintersemester 2000/01. Sebastian Wassen

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio /9

Aufgaben zu XPath und XQuery

xmltex Oder Wie bringt man XML und TeX zusammen? Daniel Radünz

Einführung in DocBook

Einstieg in VBA mit Excel Galileo Press

mach,, Benjamin Kurtz, Bastian Bonnermann

Spezifikationen und Voraussetzung

Inhaltsverzeichnis. jetzt lerne ich

Spezifikationen und Voraussetzung

Wirtschaftsinformatik I

Web Service Entwicklung mit Java. Sven Lindow

Institut für Dokumentologie und Editorik. XML-Datenbanken und XQuery

Transkript:

XML-Praxis XSLT XSL Transformations Teil 2 Jörn Clausen joern@techfak.uni-bielefeld.de

Übersicht weitere XSLT-Techniken: Bedingungen, Verzweigungen Schleifen templates aufrufen Variablen, Parameter Anwendungsbeispiel XML-Praxis XSLT XSL Transformations, Teil 2 2/20

Bedingungen Datum ausgeben, falls date-attribut gesetzt <head> <title> <xsl:value-of select="title"/> <xsl:if test="@date!= "> (<xsl:value-of select="@date"/>) </xsl:if> </title> </head> XPath-Ausdrücke, relativ zum Kontext-Knoten auf korrekte Schachtelung der quotes im Test achten kein if-then-else, nur if-then XML-Praxis XSLT XSL Transformations, Teil 2 3/20

Verzweigungen <body> <xsl:attribute name="bgcolor"> </xsl:attribute> <xsl:apply-templates/> </body> XML-Praxis XSLT XSL Transformations, Teil 2 4/20

Verzweigungen <body> <xsl:attribute name="bgcolor"> <xsl:choose> </xsl:choose> </xsl:attribute> <xsl:apply-templates/> </body> XML-Praxis XSLT XSL Transformations, Teil 2 4/20

Verzweigungen <body> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="@status= draft "> </xsl:when> </xsl:choose> </xsl:attribute> <xsl:apply-templates/> </body> XML-Praxis XSLT XSL Transformations, Teil 2 4/20

Verzweigungen <body> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="@status= draft "> </xsl:when> <xsl:when test="@status= final "> </xsl:when> </xsl:choose> </xsl:attribute> <xsl:apply-templates/> </body> XML-Praxis XSLT XSL Transformations, Teil 2 4/20

Verzweigungen <body> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="@status= draft "> </xsl:when> <xsl:when test="@status= final "> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:apply-templates/> </body> XML-Praxis XSLT XSL Transformations, Teil 2 4/20

Verzweigungen <body> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="@status= draft "> <xsl:text>red</xsl:text> </xsl:when> <xsl:when test="@status= final "> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:apply-templates/> </body> XML-Praxis XSLT XSL Transformations, Teil 2 4/20

Verzweigungen <body> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="@status= draft "> <xsl:text>red</xsl:text> </xsl:when> <xsl:when test="@status= final "> <xsl:text>blue</xsl:text> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:apply-templates/> </body> XML-Praxis XSLT XSL Transformations, Teil 2 4/20

Verzweigungen <body> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="@status= draft "> <xsl:text>red</xsl:text> </xsl:when> <xsl:when test="@status= final "> <xsl:text>blue</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>white</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:apply-templates/> </body> XML-Praxis XSLT XSL Transformations, Teil 2 4/20

Schleifen Inhaltsverzeichnis für Präsentation <table> <xsl:for-each select="/presentation/slide"> <xsl:if test="title/@toc= yes "> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="position()"/></td> </tr> </xsl:if> </xsl:for-each> </table> Schleife liefert node set position() relativ zum node set XML-Praxis XSLT XSL Transformations, Teil 2 5/20

Schleifen, cont. Sortierung ändern <xsl:for-each select="person"> <xsl:sort select="name"/>... </xsl:for-each> xsl:sort unmittelbar nach xsl:for-each Reihenfolge umkehren <xsl:sort select="name" order="descending"/> numerisch sortieren <xsl:sort select="zipcode" data-type="number"/> XML-Praxis XSLT XSL Transformations, Teil 2 6/20

templates aufrufen Wie wird Inhaltsverzeichnis in Ausgabe eingebunden? named templates <xsl:template name="maketoc"> <table> <xsl:for-each select="/presentation/slide">... </xsl:template> Aufruf an gewünschter Stelle <xsl:call-template name="maketoc"/> XML-Praxis XSLT XSL Transformations, Teil 2 7/20

template-aufrufe steuern bisher <xsl:template match="/presentation">... <xsl:apply-templates/>... ein xsl:apply-templates für title, author und slide maketoc soll dazwischen <xsl:apply-templates select="title author"/> <xsl:call-template name="maketoc"/> <xsl:apply-templates select="slide"/> Nachteil: Stylesheet nicht mehr so allgemein XML-Praxis XSLT XSL Transformations, Teil 2 8/20

push vs. pull templates push templates: <xsl:apply-templates select="slide"/> pull templates: <xsl:for-each select="slide">... </xsl:for-each> Stylesheet kann aus einem einzigen pull template bestehen Stylesheets haben sehr unterschiedlichen Aufbau Wahl hängt von der Struktur der Quell- und Zieldatei ab XML-Praxis XSLT XSL Transformations, Teil 2 9/20

Variablen Aufgabe: erzeuge Hyperlink <link>http://www.techfak.uni-bielefeld.de</link> verwende Variable <xsl:template match="link"> <xsl:variable name="url" select="."/> <a href="{$url}"><xsl:value-of select="$url"/></a> </xsl:template> alternative Zuweisung <xsl:variable name="today"> today is <xsl:value-of select="@date"/> </xsl:variable> XML-Praxis XSLT XSL Transformations, Teil 2 10/20

Variablen, cont. Variablen nicht nachträglich änderbar Platzhalter wie in funktionalen Sprachen keine Seiteneffekte imperative Programmierverfahren funktionieren nicht stattdessen: z.b. Rekursion XML-Praxis XSLT XSL Transformations, Teil 2 11/20

Sichtbarkeit von Variablen scope: aktueller Block falsch: <xsl:if test="@status= draft "> <xsl:variable name="color" select="red"/> </xsl:if> richtig: <xsl:variable name="color"> <xsl:if test="@status= draft "> <xsl:text>red</xsl:text> </xsl:if> </xsl:variable> XML-Praxis XSLT XSL Transformations, Teil 2 12/20

parametrisierte templates Parameter <xsl:template name="tocrow"> <xsl:param name="entry"/> <xsl:param name="page"/> <tr> <td><xsl:value-of select="$entry"/></td> <td><xsl:value-of select="$page"/></td> </tr> </xsl:template> Aufruf <xsl:call-template name="tocrow"> <xsl:with-param name="entry" select="title"/> <xsl:with-param name="page" select="position()"/> </xsl:call-template> XML-Praxis XSLT XSL Transformations, Teil 2 13/20

Parameter, cont. default-werte <xsl:template name="phone"> <xsl:param name="prefix">0521/106-</xsl:param> <xsl:param name="extension"/> globale Parameter <xsl:stylesheet> <xsl:param name="email">webmaster</xsl:param> Übergabe beim Aufruf des XSLT-Prozessors $ xsltproc --param email "juser" tohtml.xsl page.xml XML-Praxis XSLT XSL Transformations, Teil 2 14/20

rekursive templates <xsl:template name="square"> <xsl:param name="value">1</xsl:param> <xsl:param name="maxval"/> <tr> <td><xsl:value-of select="$value"/></td> <td><xsl:value-of select="$value * $value"/></td> </tr> <xsl:if test="$value < $maxval"> <xsl:call-template name="square"> <xsl:with-param name="value" select="$value + 1"/> <xsl:with-param name="maxval" select="$maxval"/> </xsl:call-template> </xsl:if> </xsl:template> XML-Praxis XSLT XSL Transformations, Teil 2 15/20

rekursive templates, cont. Verwendung <table> <xsl:call-template name="square"> <xsl:with-param name="maxval" select="5"/> </xsl:call-template> </table> kann genauso effizient sein wie Schleife (tail recursion) XML-Praxis XSLT XSL Transformations, Teil 2 16/20

weitere Eigenschaften von XSLT XSLT kann noch mehr: modulare Stylesheets mit xsl:import und xsl:include Import weiterer XML-Dateien mit document() Kopie von Elementen mit xsl:copy und xsl:copy-of XSLT Standard Library (http://xsltsl.sourceforge.net) Erweiterungen prozessorabhängige Extensions to XSLT (http://www.exslt.org) XML-Praxis XSLT XSL Transformations, Teil 2 17/20

ein Beispiel aus der Praxis Aufgabe: Perl-Module installieren Problem: Abhängigkeiten zwischen verschiedenen Modulen beschreibe Daten in XML <module name="xml-parser"> <instance version="2.31" installer="joern" date="2002-08-19"/> <depends>expat 1.95.4</depends> </module> <module name="xml-twig"> <instance version="3.05" installer="joern" date="2002-08-21"/> <uses module="xml-parser"/> </module> XML-Praxis XSLT XSL Transformations, Teil 2 18/20

ein Beispiel aus der Praxis, cont. erzeuge Web-Seite mit tabellarischer Übersicht alphabetisch sortiert aktuelle Version hervorheben, ältere Versionen dokumentieren Abhängigkeiten als Hyperlinks A verwendet B B wird von A verwendet visualisiere Abhängigkeitsgraph Softwarepaket GraphViz erzeuge Graphbeschreibung im ASCII-Format dot XML-Praxis XSLT XSL Transformations, Teil 2 19/20

ein Beispiel aus der Praxis, cont. XML-Praxis XSLT XSL Transformations, Teil 2 20/20