XSLT

01.05.2017 07:31 Uhr

Vorab:

XML mit CSS

Mittels CSS kann jede Markup Instanz gestaltet werden. Genau wie CSS bei HTML5 angewendet wurde, kann auch eine XML Datei auf diese Weise gestaltet werden.

Einbinden einer CSS Datei:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet href="beispiel.css" type="text/css"?>  

Beispiel einer XML, die mit CSS gestaltet wurde: XMLundCSS


XSLT

Das Grundprinzip:

  • Die Informationsstrukturierung nach inhaltlichen Gesichtspunkten
  • Allgemeine Transformationsoption in beliebige, zukünftige Formate

XSLT steht für Extensible Stylesheet Language Transformation. Es ermöglicht die Transformation eines XML Dokuments in ein beliebig anderes Dokument. Mittels der XSLT Datei, die Regeln für die Umwandlung enthält, werden durch die Verwendung von Stylesheets bzw. Templates Transformationen von Tags in beliebige andere möglich. Zum Beispiel um ein XML-Dokument in ein HTML-Dokument zu transformieren, oder aber auch XML in ein noch nicht zu bestimmendes Zukunftsformat.

XSLT - XSLT Prozessor

CC-BY-2.5

Notwendig für eine solche Transformation ist ein XSLT Prozessor. Seit langem sind Browser wie Mozilla Firefox, Internet Explorer, Google Chrome, Opera und Apple Safari sind mit einem solchen Prozessor ausgestattet und natürlich auch die XML-Editoren.

Da bei dem Prozess der Umwandlung bestimmte Elemente (Knoten) der XML-Ausgangsinstanz angesprochen werden müssen, ist XPath ein wesentlicher Teil von XSLT.

Nachfolgenden Beispiele entnommen aus: http://www.w3schools.com/xsl/xsl_transformation.asp
Dort findet sich auch ein weiterführendes Tutorial.

XML Datenbasis für die nachfolgenden Beispiele:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
.
</catalog>

Um diese XML-Datenbasis im Web zu verwenden, soll aus der XML-Instanz XHML-Code erzeugt werden. Dazu muss eine Datei geschrieben werden, die als XSL Style Sheet eingesetzt wird und beispielsweise unter dem Namen cdcatalog.xsl abgespeichert wird und wie folgt aussehen könnte:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
<html> ... 
<body> 
<h2>My CD Collection</h2> 
<table border="1"> 
<tr bgcolor="#9acd32"> 
<th>Title</th> 
<th>Artist</th> 
</tr> 
<xsl:for-each select="catalog/cd"> 
<tr> 
<td><xsl:value-of select="title"/></td> 
<td><xsl:value-of select="artist"/></td> 
</tr> 
</xsl:for-each> 
</table> 
</body> 
</html>
 </xsl:template> 
</xsl:stylesheet>

Das Resultat wäre eine Browserausgabe wie diese:

XSLT - CD Collection

Um eine XML-Datei als XSLT Stylesheet zu verwenden, muss dies im Headerbereich der Instanz angegeben werden.

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Dabei gilt <xsl:stylesheet> und <xsl:transform> haben die gleiche Bedeutung und können beide verwendet werden.

Anschließend werden Regeln als sogenanntes template formuliert und mit dem Element <xsl:template> umschlossen.

Die Wertzuweisung des Attributs @match gibt mit einem XPath-Ausdruck an, welche Elemente der XML Basis ausgewählt werden sollen. Im Beispiel steht / für die gesamte XML-Instanz.

Nun wird der HTML Code geschrieben, der die Zieldatei strukturiert, im Beispiel eine Überschrift und eine Tabelle mit zwei Spalten, die jeweils eine Überschrift aufweisen. Diese Tabelle soll nun mit Inhalt gefüllt werden, der aus der XML-Datenbasis stammt. Dazu wird das Element <xsl:value-of> verwendet, das auf der Basis der Wertzuweisung des @select-Attributes den Inhalt eines Elementes ausliest. Um alle vorhandenen Elemente auszulesen, wird diese Angabe mit einer Schleife versehen, die so lange die XML-Instanz durchsucht, bis alle angegebenen Bereich durchlaufen sind:

<xsl:for-each select="catalog/cd">

Dies bedeutet konkret, dass innerhalb aller Elemente <cd> gesucht werden soll, die ihrerseits ein Eltern-Element namens <catalog> aufweisen.

Die gefundenen Inhalte dieser Elemente werden an die XSLT Datei zurückgeliefert und in die HTML-Tabelle eingefügt.

(Wichtig: auch ohne die strukturierenden HTML-Elemente ist ein Einsatz denkbar!)


Zum Schluß muss die XML-Instanz mit dem XSLT Dokument verbunden werden. Dazu wird folgendes eingefügt:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet href="beispiel.xsl" type="text/xsl"?>  

(vgl. css)

vorherige Folie/nächste Folie

Schlagwörter: