13./15.November 2006 ― 1Elektronisches Publizieren: Transformation von XML-Dokumenten Transformation von XML-Dokumenten — XSLT und XPath — Anne Brüggemann-Klein.

Slides:



Advertisements
Ähnliche Präsentationen
Lösungsansätze zur automatischen Portierung von Internet-Inhalten für das interaktive Fernsehen Konzeption und Implementierung einer XHTML- Schnittstelle.
Advertisements

Verarbeiten und Präsentieren von
Anmerkungen zu XML Im September 2000 Entwicklung/Anspruch von XML
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
XML - Aufbau und Struktur - mit Einsatz im B2B
IMS Universität Stuttgart 1 Einführung in XML Hannah Kermes HS: Elektronische Wörterbücher Do,
FH-Hof Einbindung von JavaScript Anweisungen
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Dynamische Datentypen
DOM (Document Object Model)
XPATH XML Path Language. Xpath – XML Path Language IT Zertifikat - Daten und Metadatenstandards: XPath 2 Entwicklung des W3C Adressierungssprache für.
XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.
XML-Schema HKI Proseminar Wintersemester 2010/11 Dozentin: Frau Kurz von Jan Kohl und Christian Lütticke.
© 2002 Prof. Dr. G. Hellberg 1 XML-Seminar XML-Technologie: XML in Theorie und Praxis Prof. Dr. G. Hellberg XML-Technologie: XML in Theorie und Praxis.
Document Object Model (DOM)
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
XSL eXtensible Stylesheet Language. © Prof. T. Kudraß, HTWK Leipzig Was ist XSL? Analogie zu CSS in HTML XSL ist eine Sprache, die ein wohlgeformtes XML-Dokument.
XML Standardisierungen und Abfragesprachen
Einführung XML XML Einführung Andreas Leicht.
XPointer Die Xpointer beschreiben einen Ort oder Bereich innerhalb einer XML-Instanz. Die XPointer bauen auf der XML Path Language auf. Die XPointer ist.
Xlink / Xpointer - Framework
DVG Klassen und Objekte
Einführung in die Programmierung Datensammlung
XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch.
© data2type 2005, 1 Publishing mit XML Einsatz von XSL für das multimediale, automatisierte Publishing.
XML – Grundlagen und Anwendungen Teil 6: Verarbeitung von XML-Dokumenten: XSLT Prof. Dr. Michael Löwe, FHDW Hannover.
Tobias Högel & Dennis Böck,
1 Grundlagen und Anwendung der Extensible Markup Language (XML ) Peter Buxmann Institut für Wirtschaftsinformatik Johann Wolfgang Goethe-Universität Frankfurt.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI
XML Path Language XPath
Die Persistenzschicht
- XML-Path Language (xPath) ist eine Empfehlung des W3C - es wurde entwickelt, um durch ein XML- Dokument zu navigieren - und ist ein großer Teil von.
XSLT.
Xpath und XQuery.
XML - Konzepte XHTML XML Base XPath XInclude XLink XForms XPointer
Datenbanktechnologie Daniel Ebner SS Mai Ulrike Lohner.
Java für Fortgeschrittene
XPath Was ist XPath XPath ist eine Syntax für das Definieren der Teile eines XML-Dokumentes. XPath benutzt Pfade, um XML-Elemente zu definieren. XPath.
XSL und XSLT1 eXstensible Stylesheet Language und eXstensible Stylesheet Language Transformation.
Übersicht Was ist cocoon? Separation of Concerns Pipeline Modell
Verarbeiten von XML-Daten
Wohlgeformtheit und Gültigkeit Grundlagen der Datenmodellierung Anke Jackschina.
Ausgabe vom Seite 1, XML Eine Einführung XML - Eine Einführung.
XSLT Voraussetzungen, trivial
Gruppe 5. Einleitung ElzbietaChristofTommy SimonIngoMax.
XML (Extensible Markup Language)
ADAT©2004 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a XML EXTENSIBLE MARKUP LANGUAGE.
Algorithmen und Datenstrukturen Übungsmodul 8
Einführung in PHP.
Einführung in PHP 5.
XSL in der Praxis Anwendungsbeispiele für die eXtensible Stylesheet Language Andreas Kühne XML One 2000.
Drucken mit XSL-FO DaimlerChrysler  Drucken von Webseiten
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
© 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg.
Hauptseminar Web-Services und verteilte Datenbanken Thema XML, DTDs und XML-Schema XML, DTDs und XML-Schema - Stefan Kurz, 25. April 2003.
IT-Zertifikat der Phil.Fak Kurs 4: Daten- und Metadatenstandards Patrick Sahle XML-BasicsWS 08/09.
XPath Datenmodell und Sequenzen Universität zu Köln – Historisch-Kulturwissenschaftliche Informationsverarbeitung Datenbanktechnologie – Daniel Ebner –
IT-Zertifikat_Seminar: Metadatenstandards XSLT Eine Transformationssprache.
1 Java und XML Stephan Baldes Warum XML? In welchem Format wurden die Daten gespeichert? Bernd;Thomas;3;5;1987;Freiburg;Karlsruhe Peter;Maier;7;9;1980;Karlsruhe;Freiburg.
XSLT I Re-usable Content in 3D und Simulationssystemen Dozent: Prof. Manfred Thaller Referentin: Elisabeth Chang.
5.Februar 2007 – 1Vorlesung Elektronisches Publizieren: Formatierung von XML-Dokumenten mit XSL Formatierung von XML-Dokumenten — XSL — Anne Brüggemann-Klein.
Einführung. Ziel der Veranstaltung  Vermittlung von Grundkenntnissen in C++  Solide Basis für anschließende Weiterentwicklung  Fähigkeit, kleine Programme.
XPath und XQuery Marko Harasic Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme
XSLT Marko Harasic Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme
Datentransformation mit XSLT Seminarvortrag von Johannes Engels.
13.Dezember 2006–1Elektronisches Publizieren: Schemasprachen — Relax NG Schemasprachen für XML — Relax NG — Anne Brüggemann-Klein TU München.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
 Präsentation transkript:

13./15.November 2006 ― 1Elektronisches Publizieren: Transformation von XML-Dokumenten Transformation von XML-Dokumenten — XSLT und XPath — Anne Brüggemann-Klein TU München

13./15.November 2006 ― 2Elektronisches Publizieren: Transformation von XML-Dokumenten XSLT … o XML (und XML Namespaces und Unicode) zur Kodierung von Dokumentendaten o XSLT zur Bearbeitung von Dokumentendaten o Paradigma: Transformation (Querysprache) o Wurzel: Stylesheets o Zielsprachen: HTML, XML (z.B. XSL-FO), Text o Grundlage: Ausdruckssprache XPath o Adressierung von Teilen des XML-Dokuments o Konstruktion von XML-Fragmenten durch Berechnung und Transformation o Grundlage: Datenmodell o Erfahrung: XSLT macht XML operationabel

13./15.November 2006 ― 3Elektronisches Publizieren: Transformation von XML-Dokumenten … XSLT o XSLT-Sprache o deklarativ, berechenbarkeitsuniversell o mit XQuery das SQL für XML: XQuery als Abfragesprache, XSLT für Komposition von Ergebnissen o XML-Syntax o XSLT-Prozessor o Interpreter o Rolle von XML-Parsern o aufgerufen von XSLT-Prozessor für XML-Dokument und XSLT- Programm (transparent) o transparente Benutzung von APIs (normalerweise SAX und DOM/eigenes Dokumentenmodell)

13./15.November 2006 ― 4Elektronisches Publizieren: Transformation von XML-Dokumenten XML  XSLT XML Transformation zwischen Formaten bzw. Baumstrukturen, basierend auf Information Set XSLT-Prozessor Text, XML  XML, HTML, Text

13./15.November 2006 ― 5Elektronisches Publizieren: Transformation von XML-Dokumenten W3C-Standardisierung Candidate Recommendations seit 8.6./ o XSLT 2.0 o XPath 2.0 o Gemeinsames Datenmodell für XPath/XQuery XSLT: XSL Transformation, W3C-Standard seit XPath: XML Path Language, W3C-Standard seit

13./15.November 2006 ― 6Elektronisches Publizieren: Transformation von XML-Dokumenten Datenmodell … o XQuery 1.0 and XPath 2.0 Data Model (XDM) W3C Candidate Recommendation 11 Juli 2006 ( o XML Information Set (Second Edition) W3C Recommendation 4 February 2004 ( o Gemeinsames Datenmodell von XPath, XSLT, XQuery o abgeleitet aus XML Information Set des W3C (einheitliche Terminologie für XML-Konstrukte) o gemeinsame Abstraktionsschicht oberhalb der Zeichenkettensicht auf XML o konzeptionelles Ergebnis des Parsens, auf das die genannten Prozessoren zugreifen können

13./15.November 2006 ― 7Elektronisches Publizieren: Transformation von XML-Dokumenten … Datenmodell … o Steckbrief o XDM als Baummodell mit Knoten (Element- und Attributknoten bereits besprochen) o Sieben Knotentypen mit Attributen zur Beschreibung der Knoten selbst und der Relationen zwischen den Knoten o Keine Berücksichtigung von Entitäten-Referenzen Aufbau des Datenmodells nach Expansion von Referenzen o Warnung: Unsymmetrische Eltern-Kind-Beziehung o Kindbeziehung nur zwischen Elementknoten und untergeordneten Element-, Text-, PI- und Kommentarknoten o Elternbeziehung auch zwischen Attribut- und Namespaceknoten zu zugehörigem Elementknoten

Root Node (Document Inf Item) [namespaces] [expanded name] [attributes] [children] [expanded name] [content] [prefix] [parent] [expanded name] [parent] [children] Element Node (Element Inf Item) Attribute Node (Attribute Inf Item) Namespace Node (Namespace Decl Inf Item) Text Node (Character Inf Items) [content] Processing Instruct Node (Proc Instruct Inf Item) [content] [parent] Comment Node (Comment Information Item) [parent] [value] [parent] [namespace name]

13./15.November 2006 ― 9Elektronisches Publizieren: Transformation von XML-Dokumenten … Datenmodell o Document Order o Reihenfolge der Knoten bestimmt durch erstes Zeichen des Knotens im XML-Dokument (gilt für Element Nodes, Text Nodes, Comment Nodes, Processing Instruction Nodes) o Root Node an erster Position o Nach Element Node erst alle zum Element gehörigen Namespace Nodes, dann alle Attribute Nodes, jeweils in unbestimmter Reihenfolge, dann erst die Inhaltsknoten (geordnet) o Visualisierung mit grau hinterlegten Namespace-Knoten (../../xmlSamples/compBookNSModel.vsd) Weiteres Beispiel im XDM-Standard (

13./15.November 2006 ― 10Elektronisches Publizieren: Transformation von XML-Dokumenten XSLT-Programmierung nach dem Pull-Prinzip o Programmierprinzip Pull (fill in the blanks, output driven) o Transformationsprogramm als Ergebnis-Skelett o Lokalisieren von zu importierenden Bestandteilen des Eingabedokuments in die „Leerstellen“ des Ergebnis-Skeletts über XPath-Ausdrücke o Schleifen für Import-Wiederholungen (Iterationen definiert durch XPath-Ausdrücke über Eingabedokument) o Beispiel../../xsltBeispiele/king.xml../../xsltBeispiele/acknowledgePullSimple.xsl../../xsltBeispiele/ack.king.xml../../xsltBeispiele/doAcknowledgePullSimple.bat

13./15.November 2006 ― 11Elektronisches Publizieren: Transformation von XML-Dokumenten XSLT-Befehle für Pull-Programmierung … o Wörtliche Daten o Text (alternativ mit XSLT-Kommando xsl:text ) o literal result elements, auch mit Attributen o XSLT-Kommandos (XSLT-Namespace) für eingabeabhängige und berechnete Daten o Import von Text aus Eingabedokument: xsl:value-of mit Attribut select (XPath-Ausdruck) o Import von Teilstrukturen: xsl:copy-of mit Attribut select (XPath-Ausdruck) o Konstruktion von Elementen und Attributen xsl:element mit Attribut name (XPath-Template) xsl:attribute mit Attribut name (XPath-Template)

13./15.November 2006 ― 12Elektronisches Publizieren: Transformation von XML-Dokumenten … XSLT-Befehle für Pull-Programmierung o XSLT-Kommandos (XSLT-Namespace) zur Ablaufsteuerung o Bedingte Anweisung: xsl:if mit Attribut test (XPath-Ausdruck) o Alternative: xsl:choose mit Kindelementen xsl:when und xsl:otherwise o Schleife: xsl:for-each mit Attribut select (XPath-Ausdruck)

13./15.November 2006 ― 13Elektronisches Publizieren: Transformation von XML-Dokumenten XSLT-Prozessor Xalan o Xalan (Apache) o XSLT-Prozessor in C++ und Java (Open Source) o Parser Xerces (Apache) o Commandline-Interface java org.apache.xalan.xslt.Process -in xmlQuelle -xsl xsltRegeln -out output o Aufruf aus Java-Anwendung: TrAX API als Teilmenge von JAXP 1.1 o Applet-Wrapper, Servlet Wrapper o XPath-Implementierung o Xalan-Erweiterungen: Funktionen und Elemente

13./15.November 2006 ― 14Elektronisches Publizieren: Transformation von XML-Dokumenten XSLT Ressourcen o o (James Tauber) o (Robin Cover) o (O'Reilly) o o o Michael Kay: XSLT 2nd Edition. Wrox 2001.

13./15.November 2006 ― 15Elektronisches Publizieren: Transformation von XML-Dokumenten XPath: Steckbrief o XML Path Language (XPath), Version 1.0 W3C Recommendation, 16. November 1999 (wie XSLT) o XPath-Ausdrücke, um Teile von XML-Dokumenten zu adressieren (Navigation durch die hierarchische Struktur) Auch Berechnungen allgemeiner Art o Verwendet in XSLT o Formulierung von Mustern o Adressierung von zu transformierenden Bestandteilen o Berechnung von zu generierenden Teilen der Ausgabe o Verwendet in XLink, XForms und XQuery

13./15.November 2006 ― 16Elektronisches Publizieren: Transformation von XML-Dokumenten Ausdruckstyp Location Path Lokalisierung von XML-Konstrukten durch Navigation (z.B. mit ) ausgehend von Kontextknoten o Step mit drei Teilen o Achse (Richtung für den Schritt) o Knotentest (für Typ und Expanded Name) o Prädikate mit beliebigen Ausdrücken o AxisSpec: Achse für die zu berechnenden Knoten; z.B. Kinder, Vergänger etc. o NodeTest: Namen und Typ der zu berechnenden Knoten o Prädikat: Filter für Initialmenge von Knoten (iterativ) o Pfadausdruck: Folge von Steps

13./15.November 2006 ― 17Elektronisches Publizieren: Transformation von XML-Dokumenten Beispiele für Location Path-Ausdrücke child::parachild::* child::text()child::node() attribute::versiondescendant::para ancestor::divancestor-or-self::div descendant-or-self::paraself::para child::chapter/descendent::parachild::*/child::para //descendant::para /descendant::olist/child::item child::para[position()=1] child::para[position()=last()-1] child::*[self::chapter or self::appendix][position()=last()] child::para[attribute::type=´warning´][position()=5] child::para[position()=5][attribute::type=´warning´] child::chapter[child::title=´Introduction´] child::chapter[child::title]

13./15.November 2006 ― 18Elektronisches Publizieren: Transformation von XML-Dokumenten Achsen in Location Path-Ausdrücken o XPath kennt die folgenden Axennamen child descendant parent ancestor following-sibling preceding-sibling following preceding attribute namespace self descendant-or-self ancestor-or-self

13./15.November 2006 ― 19Elektronisches Publizieren: Transformation von XML-Dokumenten Node Tests in Location Path-Ausdrücken o NodeTest:=NameTest | NodeType ´()´ | ´processing-instruction´ ´(´Lit´)´ NodeType:=´text´ | ´node´ | ´comment´ | ´processing-instruction´ NameTest::=´*´ | NCName´:´´*´ | QName (für Elemente und Attribute)

13./15.November 2006 ― 20Elektronisches Publizieren: Transformation von XML-Dokumenten Prädikate in Location Path-Ausdrücken … o Predicate:=´[´ PredicateExpr ´]´ PredicateExp:=Exp o Prädikat filtert eine Menge von Knoten bzgl. einer Axe und produziert neue Menge von Knoten o Für jeden Knoten n in der Ausgangsmenge wird Exp evaluiert; dabei ist n Kontextknoten und Context Size und Context Position ergeben sich aus der Achse, auf der n liegt; falls Exp sich als der Boolesche Wert true interpretieren läßt, wird n in die Ergebnismenge übernommen

13./15.November 2006 ― 21Elektronisches Publizieren: Transformation von XML-Dokumenten … Prädikate in Location Path-Ausdrücken o Eine Zahl n als Ergebnis von Exp wird als true interpretiert, wenn das Kontextelement die Position n hat o Ein String wird als true interpretiert, wenn er nicht-leer ist o Eine Menge wird als true interpretiert wenn sie nicht-leer ist

13./15.November 2006 ― 22Elektronisches Publizieren: Transformation von XML-Dokumenten Abkürzungen in Location Path-Ausdrücken o AbbrAbsoluteLocPath:=´//´ RelativeLocPath AbbrRelativeLocPath:=RelativeLocPath ´//´ Step AbbrStep;=´.´ | ´..´ o ///descendant-or-self::node()/.self::node()..parent::node()

13./15.November 2006 ― 23Elektronisches Publizieren: Transformation von XML-Dokumenten Beispiele für abgekürzte Location Path-Ausdrücke */para //para para[1] */ chapter//para //olist/item *[self::chapter or self::appendix][last()] chapter[title=´Introduction´] chapter[title]

13./15.November 2006 ― 24Elektronisches Publizieren: Transformation von XML-Dokumenten Erweiterung von Location Path-Ausdrücken Beliebiger Ausdruck vom Typ Knotenmenge o optional gefolgt von Filterprädikaten o optional gefolgt von Location Path

13./15.November 2006 ― 25Elektronisches Publizieren: Transformation von XML-Dokumenten Bewertung o XPath als Sprache von Ausdrücken, mit denen Fragmente von XML-Dokumenten lokalisiert werden können o Schrittweises Navigieren durch Dokumentenbaum, von Kontextknoten ausgehend, in jedem Schritt lokale Filterung, führt zu Knotenmenge als Ergebnis o Lokalisierung durch Navigation im Dokumentenbaum o eingängig, auch durch Analogie bei Directories o Komplexe Syntax, optimiert auf kurze Ausdrücke o Grundsätzliche Fragen (z.B. der Optimierung und simultanen Auswertung) weitgehend offen

13./15.November 2006 ― 26Elektronisches Publizieren: Transformation von XML-Dokumenten Aufgaben (Abgabe ) o Installieren Sie Xalan. o Schreiben Sie ein XSLT-Programm nach dem Pull- Prinzip, mit dem Sie die Wirkung von XPath-Ausdrücken gegenüber einem XML-Dokument testen können. Außer dem XSLT-Kommando xsl:value-of können Sie auch die Befehle xsl:copy-of und xsl:copy zum Kopieren von XML-Strukturen von der Quelle in das Zieldokument benutzen. o Testen Sie Ihr Programm und einige Ausdrücke. o Alternative: o Schreiben Sie ein XSLT-Programm, das Ihr Gedicht/Ihren Song nach HTML konvertiert.

13./15.November 2006 ― 27Elektronisches Publizieren: Transformation von XML-Dokumenten Allgemeine XPath-Ausdrücke o Ausdrücke evaluieren zu einem von vier Typen o node-set o boolean o number o string in einem Kontext aus fünf Bestandteilen o Kontextknoten o Kontextposition und Kontextgröße o Menge von Variablenbindungen o Funktionsbibliothek o Menge von Namespace-Deklarationen ändern sich bei Teilausdrücken

13./15.November 2006 ― 28Elektronisches Publizieren: Transformation von XML-Dokumenten Allgemeine Ausdrücke … o Ausdrücke aus Typ PathExpr mit Operatoren: o or o and o = != o = o + - o * div mod o - (einstellig) o | o mehrstellige Operatoren linksassoziativ, steigende Präzedenz

13./15.November 2006 ― 29Elektronisches Publizieren: Transformation von XML-Dokumenten … Allgemeine Ausdrücke … op: = != = >NodeSet A NodeSet A´A op A´ gdw ex n in A, n´ in A´: stringValue(n) op stringValue(n´) Number zA op z gdw ex n in A: number(stringValue(n)) op z String sA op s gdw ex n in A: stringValue(n) op s Boolean bA op b gdw boolean(A) op b op: = !=Boolean Number String op: = >Konvertiere Operanden nach Number

13./15.November 2006 ― 30Elektronisches Publizieren: Transformation von XML-Dokumenten … Allgemeine Ausdrücke o XPath-Ausdruck o Location Path o sonstiger Ausdruck, im Falle von Typ Knotenmenge o optional gefolgt von Filterprädikaten o optional gefolgt von Location Path o PrimaryExp::= VariableReference | ´(´ Exp ´)´ | Literal | Number | FunctionCall FilterExp::= PrimaryExp Pred* PathExp::= LocPath | FilterExp | FilterExp ´/´ RelativeLocPath | FilterExp ´//´ RelativeLocPath

13./15.November 2006 ― 31Elektronisches Publizieren: Transformation von XML-Dokumenten XPath: Funktionen … o number last() o number position() o number count(node-set) o node-set id(object) o string local-name(node-set?) o string namespace-uri(node-set?) o string name(node-set?) o string string(object?) o string concat(string,string,string*) o boolean starts-with(string,string) o boolean contains(string,string)

13./15.November 2006 ― 32Elektronisches Publizieren: Transformation von XML-Dokumenten … XPath: Funktionen … o string substring-before(string,string) o string substring-after(string,string) o string substring(string,number,number?) o number string-length(string?) o string normalize-space(string?) o string translate(string,string,string) o boolean boolean(object) o boolean not(boolean) o boolean true() o boolean false() o boolean lang(string)

13./15.November 2006 ― 33Elektronisches Publizieren: Transformation von XML-Dokumenten … XPath: Funktionen o number number(object?) o number sum(node-set) o number floor(number) o number ceiling(number) o number round(number)

13./15.November 2006 ― 34Elektronisches Publizieren: Transformation von XML-Dokumenten XPath-Beispiele para[last()-1] *[self::chapter or self::appendix][last()] chapter[title=´Introduction´] chapter[title] document(´lookup.xml´) $paragraphs$paragraphs[23] $sections/body$sections[3]/body (//section | //subsection) [title=´Introduction´] (//section | //subsection) //para (//section | //subsection) //para)[last()]

13./15.November 2006 ― 35Elektronisches Publizieren: Transformation von XML-Dokumenten Profil XSLT XSLT als deklarative Sprache für Transformationen Typische Transformationen o Umbenennungen von Textstrukturen o Verschieben und Duplizieren von Textstrukturen o Generieren und Unterdrücken von Textstrukturen o Aggregation und Gruppierung von Textstrukturen o Arithmetische Umrechnungen o Sortieren o Auswahl von Textstrukturen (XPath) Insbesondere: Transformation in XML-Dialekte (z.B. Formatanpassungen) und Präsentationsformate (HTML, XSL-FO/PDF, WML, …)

13./15.November 2006 ― 36Elektronisches Publizieren: Transformation von XML-Dokumenten o Aus der Organisation einer Konferenz Beispiel für Daten als Dokumente o Einfache Form der XSLT-Programmierung (Fill in the Blanks, Outputsteuerung, Pull-Prinzip) o Transformationsprogramm als Ergebnis-Skelett o „Freistellen“ im Ergebnis-Skelett importieren über XPath- Ausdrücke die gewünschen Inhalte, eventuell abhängig von Bedingungen oder eingebettet in Schleifen für Wiederholungen king.xmlking.xml | acknowledgePull.xsl | ack.king.xml | doAcknowledgePullacknowledgePull.xslack.king.xmldoAcknowledgePull XML  XSLT XML am Beispiel

13./15.November 2006 ― 37Elektronisches Publizieren: Transformation von XML-Dokumenten o Mächtigere Form der XSLT-Programmierung, geeignet für Transformation narrativer Dokumente (Inputsteuerung, Push-Prinzip) o Transformationsprogramm als Sammlung von Templates (z.B. pro Element) mit Ergebnis-Skelett o „Freistellen“ im Ergebnis-Skelett gefüllt durch rekursiven Aufruf weiterer Templates, eventuell abhängig von Bedingungen oder eingebettet in Schleifen für Wiederholungen o Beim Aufruf eines Templates o Angabe welche Elemente bearbeitet werden o Suche nach passendem Template für jedes Element king.xmlking.xml | acknowledgePush.xsl | ack.king.xmlacknowledgePush.xslack.king.xml bios.xmlbios.xml | bios2html.xsl | bios.htmbios2html.xslbios.htm Konzept.xmlKonzept.xml | Konzept.xsl | Konzept.htm | doKonzept.batKonzept.xslKonzept.htmdoKonzept.bat XML  XSLT XML am Beispiel

13./15.November 2006 ― 38Elektronisches Publizieren: Transformation von XML-Dokumenten Prozeßmodell von XSLT … XSLT-Transformationsprogramm: Sammlung von Regeln ( xsl:template ) o Muster/Aufhänger (Attribut match von xsl:template ) Auf welche Elemente im Quelldokument paßt die Regel? o Blaupause/Schablone/Ergebnisskelett (Inhalt von xsl:template ) Was schreibt die Regel für das passende Element vor? Was wird im Zieldokument eingefügt? Baum bzw. Hecke (Sequenz von Bäumen): o wörtliche Daten: Text und literal result elements o zentrale XSLT-Kommandos (XSLT-Namespace) o xsl:apply-templates mit Attribut select o xsl:value-of mit Attribut select

13./15.November 2006 ― 39Elektronisches Publizieren: Transformation von XML-Dokumenten … Prozeßmodell von XSLT Anwendung eines XSLT-Stylesheets auf ein XML-Dokument (bzw. seine Source-Tree-Repräsentation) erzeugt Result Tree (initialisiert mit dem Wurzelknoten) o Kontextknoten im Source Tree (Start bei Root) o Platzhalterknoten (Einfügezeiger) im Result Tree o Auswahl einer Regel, die auf den Kontextknoten paßt: Konfliktauflösung o Umsetzung der Blaupause zur gefundenen Regel (Instantiieren): Ausführen von XSLT-Kommandos und Kopieren von Daten (literal result elements und Text) zum Result Tree

13./15.November 2006 ― 40Elektronisches Publizieren: Transformation von XML-Dokumenten Die Sprache XSLT … o Oberstes Element: xsl:stylesheet, xsl:transform o Präfix xsl gebunden an URL o version='1.0' o Darunter die folgenden Top-Level-Elemente von XSLT o xsl:import href='', xsl:include href='' o xsl:strip-space elements='' o xsl:output method='' encoding='' indent='' o xsl:variable name='' select'' o xsl:param name='' select'' o xsl:template match='' priority='' mode='' name=''

13./15.November 2006 ― 41Elektronisches Publizieren: Transformation von XML-Dokumenten … Die Sprache XSLT … o Patterns o Ausdrücke im Attribut match von xsl:template o Verallgemeinerung und Spezialisierung von XPath-Ausdrücken, die zu Knotenmengen evaluieren o Ein Pattern trifft auf einen Knoten zu (Match), wenn der Knoten, von beliebigem Kontextknoten aus evaluiert, in der Ergebnismenge des Patterns liegt „Ausdrücke von rechts nach links statt von links nach rechts evaluieren“ o Konfliktauflösung für Templates

13./15.November 2006 ― 42Elektronisches Publizieren: Transformation von XML-Dokumenten … Die Sprache XSLT … o Default-Templates o

13./15.November 2006 ― 43Elektronisches Publizieren: Transformation von XML-Dokumenten … Die Sprache XSLT … Kommandos unterhalb von xsl:template o xsl:apply-templates select='' mode='' o xsl:with-param name='' select='' o xsl:value-of select='' disable-output-escaping= '' o erzeugt Textknoten o Ausdruck in Attribut select wird evaluiert und zu String konvertiert o xsl:text disable-output-escaping= '' o Text als Inhalt des Elements o xsl:number level='' count='' from='‚ format='' value=''

13./15.November 2006 ― 44Elektronisches Publizieren: Transformation von XML-Dokumenten … Die Sprache XSLT … o xsl:element name= '' namespace= '' o xsl:attribute name= '' namespace= '' o Attributwert als Inhalt des Elements o xsl:copy, xsl:copy-of o flache bzw. tiefe Kopie von Knoten o xsl:processing-instruction name= '' o PI-Inhalt als Inhalt des Elements o xsl:comment o Kommentar als Inhalt des Elements

13./15.November 2006 ― 45Elektronisches Publizieren: Transformation von XML-Dokumenten … Die Sprache XSLT o xsl:call-template name='' xsl:with-param name='' select='' o xsl:for-each select= '' o Ausdruck in Attribut select muß zu Knotenmenge evaluieren o xsl:if test='' o Ausdruck in Attribut test muß zu Booleschem Wert evaluieren o xsl:param name='' select'‚ o xsl:variable name='' select''

13./15.November 2006 ― 46Elektronisches Publizieren: Transformation von XML-Dokumenten Drei XSLT-Programmierstile o Pull-Schema (Fill in the blanks, navigierend) o Zielstruktur wird statisch zusammengesetzt, mit Bausteinen aus Quellstruktur o Mittel: xsl:value-of und prozedurale Anweisungen o typisch für datenorientierte Anwendungen o Push-Schema (regelbasiert) o Transformation von Zielstruktur aus Quelle o Mittel: xsl:apply-templates, Modi o typisch für textorientierte Anwendungen o Funktionale Programmierung (rekursiv) o Benannte Templates mit Parametern

13./15.November 2006 ― 47Elektronisches Publizieren: Transformation von XML-Dokumenten Variablen und Parameter in XSLT o Variablentypen (read-only) o Globale Variablen: auf oberster Ebene Gültigkeitsbereich: ganzes Transformationsprogramm o Lokale Variablen: in Blaupause eines Templates Gültigkeitsbereich (statisch): auf Definition folgende Geschwister und deren Nachkommen (Blockstruktur) Instantiierung dynamisch mit Template o Definition … o Verwendung: $vName

13./15.November 2006 ― 48Elektronisches Publizieren: Transformation von XML-Dokumenten Verwendung von Variablen o Abkürzung, Vermeidung von Mehrfachberechnungen  Verbesserung der Lesbarkeit und Effizienz o Referenz auf Kontextknoten, lesbar nach Kontextwechsel bios.xml | bios2html.xsl | bios.htm bios.xmlbios2html.xslbios.htm o Speicher für temporären Teilbaum (über Wurzelknoten), (ab XSLT 1.1) mit XPath-Ausdrücken navigierbar

13./15.November 2006 ― 49Elektronisches Publizieren: Transformation von XML-Dokumenten Parameter in XSLT o Parameter genauso wie Variablen, zusätzlich Werte von außen setzbar (Aufruf von Programm oder Template) o Parametertypen o Globale Parameter: auf oberster Ebene, von außen initialisierbar o Lokale Parameter: in Blaupause eines Templates, bei Aufruf initialisierbar o Definition … o Verwendung: $pName

13./15.November 2006 ― 50Elektronisches Publizieren: Transformation von XML-Dokumenten Funktionale Programmierung … o Programm: Funktionsaufruf mit Argumenten, die wieder Funktionsaufrufe enthalten o beliebige Schachtelungstiefe o auch Rekursion o Modell:  -rekursive Funktionen o Programmiersprachen: Lisp, Haskell

13./15.November 2006 ― 51Elektronisches Publizieren: Transformation von XML-Dokumenten … Funktionale Programmierung o Funktionsausführung ohne Seiteneffekte: keine Veränderung eines globalen Zustands, keine Setzung von Variablen mit globaler Gültigkeit o Ergebnis einer Funktionsausführung nur abhängig von Argumenten, nicht von Vorgeschichte o Rekursion statt Iteration o In XSLT: Ausführung eines Templates nur abhängig von Kontext, nicht von Vorgeschichte  Variablen nach Initialisierung read-only dadurch inkrementelle Ausführung einer XSLT- Transformation nach Änderungen im Dokument möglich o In XSLT: Rekursive Template-Aufrufe mit Argumenten

13./15.November 2006 ― 52Elektronisches Publizieren: Transformation von XML-Dokumenten Rekursion statt Iteration

13./15.November 2006 ― 53Elektronisches Publizieren: Transformation von XML-Dokumenten Fazit XSLT ist berechenbarkeitsuniversell

13./15.November 2006 ― 54Elektronisches Publizieren: Transformation von XML-Dokumenten Bedingte Wertzuweisung 0 1

13./15.November 2006 ― 55Elektronisches Publizieren: Transformation von XML-Dokumenten Sortieren … o Bestimmen der Reihenfolge der zu bearbeitenden Knoten mit xsl:sort o Verwendbar mit xsl:apply-templates und xsl:for-each o Attribute select AusdruckSortierkriterium orderascending,Sortierreihenfolge descending case-orderupper-first,Sortiermethode lower-first lang SprachkodeSortiermethode data-typetext, number,Sortiermethode Name o Mehrere xsl:sort kombinierbar, keine Doppeleliminierung

13./15.November 2006 ― 56Elektronisches Publizieren: Transformation von XML-Dokumenten … Sortieren

13./15.November 2006 ― 57Elektronisches Publizieren: Transformation von XML-Dokumenten Identifizieren und Vergleichen o Berechnung einer eindeutigen Knoten-ID mit Funktion generate-id() (pro XSLT-Bearbeitung!) o Anwendung Monats-Kontainer: Vergleich von Knoten April … … May … …

13./15.November 2006 ― 58Elektronisches Publizieren: Transformation von XML-Dokumenten Lokalisieren von Knoten nach Werten … o Aufbau eines Indexes mit xsl:key o Verwendbar auf oberster Ebene eines XSLT-Programms o Attribute name NameName des Indexes match Ausdruck zu indexierende Knoten use Ausdruck Indexterm o Nutzung des Indexes mit Funktion key(Indexname,Indexterme )

13./15.November 2006 ― 59Elektronisches Publizieren: Transformation von XML-Dokumenten … Lokalisieren von Knoten nach Werten …

13./15.November 2006 ― 60Elektronisches Publizieren: Transformation von XML-Dokumenten … Lokalisieren von Knoten nach Werten

13./15.November 2006 ― 61Elektronisches Publizieren: Transformation von XML-Dokumenten o Komplexere Form der XSLT-Programmierung mit Vielzahl von Regeln, Rekursion, XPath-Ausdrücken o Spielzeugbuch über Compilerbau:compBook.xmlcompBook.xml o DTD für Spielzeugbücher:book.dtdbook.dtd o XSLT-Transformationsregeln:book2html.xslbook2html.xsl o Ergebnis der Transformation:compBook.htmcompBook.htm o CSS-Stylesheet für HTML:book.cssbook.css o Parseraufruf:parseCompBook.batparseCompBook.bat o Transformationsaufruf:doBook2html.batdoBook2html.bat XML  XSLT HTML am Beispiel

13./15.November 2006 ― 62Elektronisches Publizieren: Transformation von XML-Dokumenten o Formatierung als Transformation in eine XML-kodierte Designstruktur und deren Interpretation (preformat.bat, format.bat): Transformation Designstruktur Interpretationpreformat.batformat.bat o XSL-FO: XML-Format für Designstrukturen o Umgesetzt mit der Extensible Style Language XSL Spezialfall Formatierung strukturierte DokumenteFormatvorgabe Designstruktur formatiertes Dokument XMLXSLT XSL-FO XSL = XML (  XSLT XML)*  XSLT XSL-FO PDF XSLT-P FOP

13./15.November 2006 ― 63Elektronisches Publizieren: Transformation von XML-Dokumenten Literatur zu XSL und XSL-FO o W3C: Extensible Stylesheet Language (XSL). Okt [ ] o E.R. Harold: The XML Bible. [ ] o J.D. Eisenberg: Using XSL Formatting Objects. [ ] o RenderX: XSL Formatting Objects Tutorial. [ http;// ] http;// o Antenna House: How to Develop Stylesheet for XML to XSL-FO Transformation. [ ]