Universität zu Köln
Historisch-Kulturwissenschaftliche Informationsverarbeitung
IT-Zertifikat der Phil.-Fak.: Advanced Mar...
Universität zu Köln
Historisch-Kulturwissenschaftliche Informationsverarbeitung
IT-Zertifikat der Phil.-Fak.: Advanced Mar...
Universität zu Köln
Historisch-Kulturwissenschaftliche Informationsverarbeitung
IT-Zertifikat der Phil.-Fak.: Advanced Mar...
Universität zu Köln
Historisch-Kulturwissenschaftliche Informationsverarbeitung
IT-Zertifikat der Phil.-Fak.: Advanced Mar...
Universität zu Köln
Historisch-Kulturwissenschaftliche Informationsverarbeitung
IT-Zertifikat der Phil.-Fak.: Advanced Mar...
Universität zu Köln
Historisch-Kulturwissenschaftliche Informationsverarbeitung
IT-Zertifikat der Phil.-Fak.: Advanced Mar...
Nächste SlideShare
Wird geladen in …5
×

IT-Zertifikat: Advanced Markup & Metadata - Handout XSLT

3.250 Aufrufe

Veröffentlicht am

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
3.250
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
113
Aktionen
Geteilt
0
Downloads
2
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

IT-Zertifikat: Advanced Markup & Metadata - Handout XSLT

  1. 1. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung IT-Zertifikat der Phil.-Fak.: Advanced Markup & Metadata Jan G. Wieners, MA - jan.wieners@uni-koeln.de IT-Zertifikat: Daten- und Metadatenstandards Transformation von XML-Dokumenten mit XSLT (und XPATH) XSLT – kurz und knackig I. Was ist XSLT? XSL Transformation (XSLT) ist eine Programmiersprache zur Transformation von XML-Dokumenten. Die rechtsstehende Grafik illustriert das Verfahren der Umwandlung von XML-Dokumenten: Ein Eingabedokument (z.B. eine Datei mit der Dateiendung xml) wird über den „XSLT-Prozessor“ in ein Zieloder Ausgabedokument umgewandelt. Wie die Umwandlung stattzufinden hat, d.h. welche Elemente des Eingabedokumentes sich schließlich im Ausgabedokument wiederfinden sollen, das ist angegeben im XSLT-Code (i.e. eine Datei mit der Dateiendung xslt, die XSLT-Anweisungen enthält). II. Wozu dient XSLT? XSLT beschreibt die Umwandlung (z.B.) eines XML-Dokumentes in ein anderes Dokument, z.B. eine XHTML-Website, XML, SVG, etc. III. Wie funktioniert die Umwandlung bzw. Transformation? XSLT verwendet die Abfragesprache Xpath, um Teile eines XML-Dokumentes zu adressieren. Die eigentliche Umwandlung findet im Hintergrund, z.B. im Browser statt (darum brauchen wir uns nicht zu kümmern). IV. Wie funktioniert die Umwandlung bzw. Transformation nun genau? Eine Transformation besteht aus einer Reihe von einzelnen Transformationsregeln, die als „Templates“ („Schablonen“) bezeichnet werden. Ein Template besitzt ein auf XPath basierendes Pattern („Muster“), das beschreibt, für welche Knoten es gilt, und einen Inhalt, der bestimmt, wie das Template seinen Teil des Zielbaums erzeugt. XSLT … und die Praxis Beispiel I: Darstellung einer CD-Sammlung Eine CD-Sammlung soll über eine XML-Entität repräsentiert werden. Jede CD ist charakterisiert durch die Informationen (title, artist, label, year, previewimage, price, currency). -1/6-
  2. 2. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung IT-Zertifikat der Phil.-Fak.: Advanced Markup & Metadata Jan G. Wieners, MA - jan.wieners@uni-koeln.de cdkatalog.xml (findet sich in den kursbegleitenden Materialien) <?xml version="1.0" encoding="UTF-8"?> <catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="cdkatalogschablone.xsd"> <cd previewimage="http://ecx.images-amazon.com/images/I/51e9ZoomINL._AA115_.jpg"> <title>Drukqs</title> <artist>Aphex Twin</artist> <label>Warp</label> <price currency="EUR">10.90</price> <year>2001</year> </cd> <cd previewimage="http://ecx.images-amazon.com/images/I/41BGQHT1ZEL._SL500_AA300_.jpg"> <title>I care because you do</title> <artist>Aphex Twin</artist> <label>Warp</label> <price currency="EUR">20.99</price> <year>1995</year> </cd> […] </catalog> Transformation der durch XML repräsentierten Information: XSLT 1.: XML-Dokument um XSLT-Angabe ergänzen: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="cdkatalog.xslt"?> <catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="cdkatalogschablone.xsd"> <catalog> […] -2/6-
  3. 3. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung IT-Zertifikat der Phil.-Fak.: Advanced Markup & Metadata Jan G. Wieners, MA - jan.wieners@uni-koeln.de 2.: Neue Datei mit Dateiendung xslt anlegen (zu finden in den kursbegleitenden Materialien) Ein XSL-Stylesheet beginnt immer mit der XMLDeklaration cdkatalog.xslt <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="html"/> Definiert, dass das Dokument ein XSLT Stylesheet ist. <xsl:template match="/"> <html> Hier wird das Ausgabeformat (HTML) festgelegt. <body> <h2>Meine CD-Kollektion</h2> <h3>CD I</h3> Das <xsl:template> Element definiert ein Titel: <xsl:value-of select="/catalog/cd[1]/title" /> Template. Das match=“/“ Attribut <br /> verknüpft das Template mit dem Künstler: <xsl:value-of select="/catalog/cd[1]/artist" /> Wurzelelement des XML-Dokumentes. <br /> Label: <xsl:value-of select="/catalog/cd[1]/label" /> Der Inhalt von <xsl:template> <br /> definiert die HTML-Ausgabe. Jahr: <xsl:value-of select="/catalog/cd[1]/year" /> <br /> Bild: <xsl:value-of select="/catalog/cd[1]/@previewimage"/> <h3>CD V</h3> Zugriff auf das fünfte Element Titel: <xsl:value-of select="/catalog/cd[5]/title" /> („/catalog/cd[5]/title“) der XML-Datei. <br /> Künstler: <xsl:value-of select="/catalog/cd[5]/artist" /> <br /> Zugriff auf den Wert des Attributes Label: <xsl:value-of select="/catalog/cd[5]/label" /> „previewimage“ von <cd>. <br /> Jahr: <xsl:value-of select="/catalog/cd[5]/year" /> <br /> Bild: <xsl:value-of select="/catalog/cd[5]/@previewimage"/> </body> </html> </xsl:template> </xsl:stylesheet> -3/6-
  4. 4. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung IT-Zertifikat der Phil.-Fak.: Advanced Markup & Metadata Jan G. Wieners, MA - jan.wieners@uni-koeln.de XPath In der oben wiedergegebenen XSLT-Datei werden XPath-Ausdrücke verwendet, um auf Elemente des XML-Baumes zuzugreifen, z.B. auf die erste CD des CD-Kataloges („<xsl:value-of select="/catalog/cd[5]/“). Die Selektion von Elementen des XML-Baumes funktioniert nach der folgenden Logik: Knoten auswählen: Pfadausdrücke Ausdruck Beschreibung nodename / // . .. @ Wählt alle Kindknoten des bezeichneten Knotens Wählt den Wurzelknoten aus Wählt den bezeichneten Knoten aus – egal, wo sich der Knoten befindet Wählt den aktuellen Knoten aus Wechsel zum Elternknoten des aktuell angewählten Knotens Auswahl von Attributen Auf das CD-Beispiel übertragen: <catalog> <cd previewimage="http://ecx.images-amazon.com/images/I/51bnHWsisxL._SL500_AA300_.jpg"> <title>The Campfire Headphase</title> <artist>Boards of Canada</artist> <label>Warp</label> <price currency="EUR">16.99</price> <year>2005</year> </cd> </catalog> Ausdruck Beschreibung catalog /catalog Alle Kindknoten von <catalog> auswählen Wählt das Wurzelelement „catalog“ aus. Achtung, startet die Pfadangabe mit /, so ist damit der absolute Pfad zu einem Element bezeichnet. Wählt alle <cd> Elemente aus, die Kindelemente sind von <catalog> Wählt alle <cd> Elemente aus – egal, wo sich die Elemente befinden Wählt alle <cd> Elemente unterhalb des Elementes <catalog> aus – egal, wo sich die Elemente befinden Wählt alle Attribute mit der Bezeichnung „previewimage“ aus catalog/cd //cd catalog//cd //@previewimage -4/6-
  5. 5. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung IT-Zertifikat der Phil.-Fak.: Advanced Markup & Metadata Jan G. Wieners, MA - jan.wieners@uni-koeln.de Prädikate Prädikate werden verwendet, um spezifische Knoten zu finden bzw. Knoten ausfindig zu machen, die einen bestimmten Wert enthalten. Prädikate werden umschlossen von eckigen Klammern. Beispiele für Prädikate: Ausdruck Ergebnis /catalog/cd[1] /catalog/cd[last()] /catalog/cd[last()-1] //price[@currency] //price[@currency ='EUR'] Wählt das erste <cd> Element aus, das Kindelement ist von <catalog> Wählt das letzte <cd> Element aus, das Kindelement ist von <catalog> Wählt das vorletzte <cd> Element aus, das Kindelement ist von <catalog> Wählt alle <price> Elemente aus, die über ein Attribut „currency“ verfügen Wählt alle <price> Elemente aus, die über ein Attribut „currency“ mit dem Attributwert „EUR“ verfügen Auswahl unbekannter Knoten XPath Wildcards können verwendet werden, um unbekannte Elemente zu adressieren: Wildcard Beschreibung * @* node() Entspricht einem beliebigen Elementknoten Entspricht einem beliebigen Attributknoten Entspricht einem Knoten jeglicher Art Beispiele: Pfadausdruck Result /catalog/* //* //price[@*] Wählt alle Kindknoten des <catalog> Elementes aus Wählt alle Elemente im XML-Dokument aus Wählt alle <price> Elemente aus, die über ein Attribut verfügen -5/6-
  6. 6. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung IT-Zertifikat der Phil.-Fak.: Advanced Markup & Metadata Jan G. Wieners, MA - jan.wieners@uni-koeln.de Probleme und ihre Lösungen / Code-Snippets I. Wie lässt sich der Attributwert von „previewimage“ in das HTML Bild-Tag <img> einbetten? Lösung: <xsl:attribute> Beispiel: <img> Tag um src-Attribut ergänzen <img> <xsl:attribute name="src"><xsl:value-of select="/catalog/cd[5]/@previewimage"/></xsl:attribute> </img> II. Wie lässt sich die Anzahl von Elementen im XML-Dokument bestimmen? Lösung: count Beispiel: Ausgabe der Anzahl von <cd> Tags: <h3>Titel (&lt;cd&gt; Tags) in XML-Datenbasis: <xsl:variable name="Anzahl_CDs" select="/catalog/cd"/> <xsl:value-of select="count($Anzahl_CDs)"/> </h3> III. Wie lassen sich alle Elemente des XML-Dokumentes traversieren, ohne die Nummer des Elementes explizit angeben zu müssen? Lösung: <xsl:for-each select=““> Beispiel: Ausgabe aller <cd> Elemente und Zugriff auf Kindelemente: <xsl:for-each select="/catalog/cd"> Titel: <xsl:value-of select="title" /> <br /> Künstler: <xsl:value-of select="artist" /> <br /> Bildurl: <xsl:value-of select="@previewimage"/> </xsl:for-each> IV. Nummer des aktuell verarbeiteten Elementes ausgeben Lösung: position() Beispiel: <xsl:for-each select="/catalog/cd"> <h3>CD <xsl:value-of select="position()" /> </xsl:for-each> Die Kurzreferenz unter http://www.helmut-vonhoegen.de/Kurzreferenz_XSLT.pdf bietet einen feinen Überblick über die XSLT-Funktionalität. -6/6-

×