Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "13./15.November 2006 ― 1Elektronisches Publizieren: Transformation von XML-Dokumenten Transformation von XML-Dokumenten — XSLT und XPath — Anne Brüggemann-Klein."—  Präsentation transkript:

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

2 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

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

4 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

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

6 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 (http://www.w3.org/TR/xpath-datamodel/)http://www.w3.org/TR/xpath-datamodel/ o XML Information Set (Second Edition) W3C Recommendation 4 February 2004 (http://www.w3.org/TR/xml-infoset/)http://www.w3.org/TR/xml-infoset/ 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

7 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

8 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]

9 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 (http://www.w3.org/TR/2005/CR-xpath-datamodel-20051103/dm-example-large.png)../../xmlSamples/compBookNSModel.vsdhttp://www.w3.org/TR/2005/CR-xpath-datamodel-20051103/dm-example-large.png

10 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

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

12 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 13./15.November 2006 ― 13Elektronisches Publizieren: Transformation von XML-Dokumenten XSLT-Prozessor Xalan o Xalan (Apache) http://xml.apache.org/xalan/overview.html 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

14 13./15.November 2006 ― 14Elektronisches Publizieren: Transformation von XML-Dokumenten XSLT Ressourcen o http://www.w3.org/Style/XSL/ o http://www.xslinfo.com/ (James Tauber) o http://www.oasis-open.org/cover/xsl.html (Robin Cover) o http://www.xml.com/ (O'Reilly) o http://msdn.microsoft.com/xml/ o http://www.mulberrytech.com/xsl/xsl-list o Michael Kay: XSLT 2nd Edition. Wrox 2001.

15 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

16 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

17 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]

18 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

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

20 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

21 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

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

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

24 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

25 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

26 13./15.November 2006 ― 26Elektronisches Publizieren: Transformation von XML-Dokumenten Aufgaben (Abgabe 18.11.2006) 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: http://www.futurelab.ch/xmlkurs/xpath.de.html http://www.futurelab.ch/xmlkurs/xpath.de.html o Schreiben Sie ein XSLT-Programm, das Ihr Gedicht/Ihren Song nach HTML konvertiert.

27 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

28 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

29 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

30 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

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

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

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

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

35 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, …)

36 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

37 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

38 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

39 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

40 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 http://www.w3.org/1999/XSL/Transform 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=''

41 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

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

43 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=''

44 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

45 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''

46 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

47 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

48 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

49 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

50 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

51 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

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

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

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

55 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

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

57 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 … …

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

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

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

61 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

62 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

63 13./15.November 2006 ― 63Elektronisches Publizieren: Transformation von XML-Dokumenten Literatur zu XSL und XSL-FO o W3C: Extensible Stylesheet Language (XSL). Okt 2001. [ http://www.w3.org/TR/xsl/ ] http://www.w3.org/TR/xsl/ o E.R. Harold: The XML Bible. [ http://www.ibiblio.org/xml/books/bible2/chapters/ch18.html ] http://www.ibiblio.org/xml/books/bible2/chapters/ch18.html o J.D. Eisenberg: Using XSL Formatting Objects. [ http://www.xml.com/pub/a/2001/01/17/xsl-fo/index.html ] http://www.xml.com/pub/a/2001/01/17/xsl-fo/index.html o RenderX: XSL Formatting Objects Tutorial. [ http;//www.renderx.net/Content/support/xep/tutorial.html ] http;//www.renderx.net/Content/support/xep/tutorial.html o Antenna House: How to Develop Stylesheet for XML to XSL-FO Transformation. [ http://www.antennahouse.com/XSLsample/howtoRC/Howtodevelop-en-2.pdf ] http://www.antennahouse.com/XSLsample/howtoRC/Howtodevelop-en-2.pdf


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

Ähnliche Präsentationen


Google-Anzeigen