Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sommersemester 2012 -- Blockseminar Daten- und Metadatenstandards | 06: XSLT und XPath

Jan Wieners
September 20, 2012

Sommersemester 2012 -- Blockseminar Daten- und Metadatenstandards | 06: XSLT und XPath

Jan Wieners

September 20, 2012
Tweet

More Decks by Jan Wieners

Other Decks in Education

Transcript

  1. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    Daten- und Metadatenstandards Sommersemester 2012 [Blockseminar] 27. September 2012 – XSLT und XPath
  2. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     Kurzwiederholung DTD  XSLT und Xpath ◦ Sprachkern: Praxisrelevante Anweisungen  Mehr zur Theorie:  http://www.w3schools.com/xsl/  http://de.wikipedia.org/wiki/XSL_Transformation  http://www.usegroup.de/software/xmltutorial/  http://de.selfhtml.org/xml/darstellung/xslgrundlagen.htm ◦ Navigation im Baum  Knotenbeziehungen  Elternknoten  Kindknoten  Geschwisterknoten  …  Achsen  Adressierung / Pfadangaben  relativ  absolut ◦ Praxis: Umwandlung von *.XML nach *.HTML & Co. Kursthemen
  3. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     XML  DTD ◦ Schritt I: XML-Datei mit DTD verknüpfen: <!DOCTYPE rss SYSTEM “zeit-rss.dtd"> ◦ Schritt II: Überlegen, wie die Elemente in der XML-Datei verschachtelt sind, ggf. Baumdiagramm erstellen: Kurzwiederholung DTD rss channel title description language link copyright … version
  4. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     XML  DTD ◦ Schritt III: Neue Datei erstellen: zeit-rss.dtd ◦ Schritt IV: Elemente abbilden  Ebene für Ebene <!ELEMENT rss (channel)> <!ATTLIST rss version CDATA #REQUIRED> <!ELEMENT channel (title, description, language, link, copyright, docs, webMaster, image, item+)> <!ELEMENT title (#PCDATA)> […] <!ELEMENT image (url, title, link)> Kurzwiederholung DTD
  5. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     DTD  XML ◦ Schritt I: XML-Datei erstellen (rezeptsammlung.xml) ◦ Schritt II: XML-Datei mit DTD verknüpfen. In XML-Datei: <?xml version="1.0" encoding="iso-8859-1" standalone="no" ?> <!DOCTYPE rezeptsammlung SYSTEM “rezeptsammlung.dtd"> Kurzwiederholung DTD II
  6. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     DTD  XML ◦ Schritt III: XML-Markup nach DTD umsetzen: <rezeptsammlung> <title>Einige Rezepte</title> <drink> <drinkname>Acapulco Gold</drinkname> <autor>unbekannt</autor> <zutaten> <zutat> <zutatname>Tequila</zutatname> <menge einheit="cl">3</menge> </zutat> </zutaten> […] </rezeptsammlung> Kurzwiederholung DTD II
  7. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     Mit Verarbeitungs- anweisung <?xml-stylesheet type="text/css" href="dateinamedesstyl esheets.css"?> CSS
  8. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     CSS und XML: Die Elemente eines XML- Dokumentes können ausschließlich in der Reihenfolge abgearbeitet werden, wie sie sich im XML- Dokument finden. Schwächen von CSS
  9. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     Mit CSS ist‘s nicht möglich: ◦ Elemente vor der Darstellung zu sortieren nur eine (!) Zeile in XSLT: <xsl:sort select="titel"/> Schwächen von CSS
  10. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     Mit CSS ist‘s nicht möglich: ◦ Elemente nach definierten Kriterien zu filtern Beispiel: Alle Datensätze mit Jahresangabe größer 1900 (jahr > 1900) ausgeben: <xsl:if test="jahr > 1900"> Schwächen von CSS
  11. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     Mit CSS ist‘s nicht möglich: ◦ Die Ausgabe auf Elemente zu beschränken, die bestimmte Kriterien erfüllen <xsl:if test="jahr > 1900 or jahr='?' "> Schwächen von CSS
  12. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    XSLT: Intro  XSL Transformation (XSLT) ist eine Programmiersprache zur Transformation von XML- Dokumenten.  XSLT beschreibt die Umwandlung eines XML- Dokumentes in ein anderes Dokument, z.B. eine XHTML- Website, XML, SVG, etc.: XML  XSLT-Prozessor  Ausgabedokument (z.B. XML, HTML, XHTML)
  13. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    XSLT: Intro II  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).
  14. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    XSLT: Intro III  Eine Transformation besteht aus einer Reihe von einzelnen Transformationsregeln, die als „Templates“ („Schablonen“) bezeichnet werden.  Ein Template besitzt ein auf XPath basierendes Muster, das beschreibt, für welche Knoten es gilt, und einen Inhalt, der bestimmt, wie das Template seinen Teil des Zielbaums erzeugt.
  15. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    XSLT: Funktionsweise  Aus einem Ausgangsdokument (.xml) wird mit Hilfe einer Verarbeitungsanweisung (.xslt) ein Ergebnisdokument (z.B. .html) generiert.  Es existieren verschiedene XSLT- Prozessoren:  Saxon  Xalan  MSXML  Es gibt ~ 50 Elemente = „Befehle“ in XSLT 2.0 (bzw. im xsl-Namensraum)  Baumkonzept  Schablonenkonzept  Verknüpfung von XML- und XSLT- Dokument
  16. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     Intention: Sprache, mit der auf einzelne Elemente von XML-Dokumenten zugegriffen werden kann  Basis: Baummodell, durch das die im XML- Dokument enthaltenen Informationseinheiten repräsentiert werden XPath nachrichtensammlung nachricht sender empfaenger inhalt
  17. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     cdkatalog.xml (seminarbegleitende Materialien) XSLT und die Praxis: CD-Katalog
  18. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    XPath arbeitet mit dem vom Prozessor verarbeiteten (geparsten) XML-Dokument Ein Beispiel: <?xml version="1.0" encoding="UTF-8"?> <buecher> <autor> <name>Murakami</name> <vorname>Haruki</vorname> </autor> <titel>Hard-boiled Wonderland</titel> <gattung>Roman</gattung> </buecher> XPath
  19. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    1 <buecher> 2 <autor> 3 <name>Murakami</name> 4 <vorname>Haruki</vorname> </autor> 5 <titel>Hard-boiled Wonderland</titel> 6 <gattung>Roman</gattung> </buecher> XPath 1 2 5 6 3 4 Zahlenwerte 1 bis 6 geben die Reihenfolge an, in der ein XML- Prozessor die Knoten ablaufen wird.  Dokumentreihenfolge („Document Ordner“) / Tiefensuche
  20. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    Begrifflichkeiten XPath  Wurzelknoten (Root Node)  Wurzel des XML-Dokuments  Elementknoten  Attributknoten  Kommentarknoten  Namensraumknoten  Processing-Instruction-Knoten  Textknoten XPath 1 2 5 6 3 4
  21. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    Knotenbeziehungen:  Elternknoten (parent) – Jedes Element verfügt über einen Elternknoten. Ausnahme: ???  Vorfahre (ancestor) – Elternknoten von Knoten Beispiel: Der Knoten „2“ ist Vorfahre des Knotens „3“.  Kind (child) – Untergeordnete Knoten Beispiel: „3“ ist Kindknoten von „2“.  Geschwister (siblings): Knoten mit gleichen Elternknoten sind Geschwisterknoten. Beispiel: Der Knoten „3“ ist Geschwisterknoten des Knotens „4“. Xpath: Navigation im Baum 1 2 5 6 3 4
  22. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     Verarbeitungsanweisung <?xml-stylesheet type="text/xsl" href="dateiname.xsl"?> ◦ <xsl:value-of select= "//vorname" />  Holt den Inhalt des Elementes bzw. Knotens „vorname“ aus dem Baum XPath: Navigation 1 <buecher> 2 <autor> 3 <name>Murakami</name> 4 <vorname>Haruki</vorname> </autor> 5 <titel>Hard-boiled Wonderland</titel> 6 <gattung>Roman</gattung> </buecher>
  23. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     Um auf die Knoten eines XML-Dokumentes zugreifen zu können, müssen sie adressiert werden. In XPath wird hierzu – vom aktuellen Knoten ausgehend – ein Pfad definiert.  Unterscheidung ausführliche vs. verkürzte Achsenbezeichnung: ◦ ausführlich: /child::autor/child::buch/attribute::titel ◦ verkürzt: /autor/buch/@titel Adressierung
  24. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     Über die Achsen wird festgelegt, in welche Richtung im Knotenbaum navigiert wird: ◦ „Navigiere vom Wurzelement „buecher“ zum Kindelement „autor“ und gebe mir den Inhalt des Kindelementes „name“ aus: <xsl:value-of select="/buecher/autor/name" /> ◦ Ich befinde mich im Element „name“. Gehe von hier aus zurück zum Geschwisterknoten „vorname“ und gebe mir den Inhalt aus: <xsl:value-of select= "../vorname" /> XPath: Achsen
  25. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

     Verfügbare Achsen: ◦ child (Kind) ◦ parent (Elternknoten) ◦ descendant (Nachkommen) ◦ ancestor (Vorfahre) ◦ following (Nachfolgende Knoten) ◦ preceding-sibling (Vorherige Geschwisterknoten) ◦ following-sibling (Nachfolgende Geschwisterknoten) ◦ self (aktueller Knoten) ◦ descendant-or-self (Nachkomme oder aktueller Knoten) ◦ ancestor-or-self (Vorfahre oder aktueller Knoten) XPath: Achsen
  26. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    I. Laden Sie das XML-Dokument und die XSLT- Datei von der kursbegleitenden Website herunter und binden Sie Ihre DTD ein. II. Versuchen Sie, die Adressierung von Elementen des XML-Dokumentes mit XSLT bzw. XPath nachzuvollziehen. Übung I
  27. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    III. Passen Sie die XSLT- Datei an, um die folgende Darstellung der CD-Sammlung zu erhalten, z.B. mit HTML-Tabellen: Übung II
  28. Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners, MA <[email protected]>

    IV. Lassen Sie die Tabellenzeilen sortieren nach dem Veröffentlichungsjahr Übung III