XProc-Steps
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
p:xslt
<p:declare-step type="p:xslt">
<p:input port="source" sequence="true" primary="true"/>
<p:input port="stylesheet"/>
<p:input port="parameters" kind="parameter"/>
<p:output port="result" primary="true"/>
<p:output port="secondary" sequence="true"/>
<p:option name="initial-mode"/> <!-- QName -->
<p:option name="template-name"/> <!-- QName -->
<p:option name="output-base-uri"/> <!-- anyURI -->
<p:option name="version"/> <!-- string -->
</p:declare-step>
Mit Hilfe des Steps <p:xslt> können XSLT-Transformationen durchgeführt werden. Er besitzt drei Input-Ports, welche das einzulesende Dokument, das zu transformierende XSLT-Stylesheet und optionale Parameter angeben. Weiterhin hat der Step zwei Output-Ports. Der Primary-Output (“result“) liefert das primäre Ergebnis der jeweiligen Transformation, der zweite Output-Port (“secondary“) gibt alle anderen Ausgabedokumente aus (falls welche erzeugt wurden). Weiterhin stehen noch Optionen zur Verfügung. So kann der Benutzer unter “inital-mode“ eine Angabe geben, die das Verhalten der Transformation beeinflussen kann. Dieser Modus muss allerdings im zugrundeliegenden XSLT-Stylesheet definiert worden sein. Unter “template-name“ kann der Name eines Named Templates im XSLT-Stylesheet angegeben werden. Das bedeutet, dass die Transformation mit diesem Template beginnt. Durch “output-base-uri“ ist es möglich, eine Angabe zur Ausgabe der XSLT-Transformation im Dateisystem zu geben. “version“ gibt die zu verwendende XSLT-Version an (1.0 oder 2.0). Sämtliche Optionen sind optional.
Beispiel
Es soll ein XSLT-Stylesheet ausgeführt werden, was die einzulesende Datei in eine XHTML-Seite mit Angabe der Filmtitel in einer Liste umwandelt.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" version="2.0">
<xsl:output method="xhtml"/>
<xsl:template match="/">
<html>
<body>
<h1>Filmliste</h1>
<ul>
<xsl:apply-templates select="//Titel"/>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="Titel">
<li>
<xsl:value-of select="."/>
</li>
</xsl:template>
</xsl:stylesheet>
Das gezeigte XSLT-Stylesheet erzeugt anhand der Beschaffenheit der eingelesenen XML-Datei eine XHTML-Seite, die eine unsortierte Liste mit den jeweiligen Filmtiteln erstellt. Dieses Stylesheet soll nun Teil des XProc-Dokuments werden.
<?xml version="1.0" encoding="UTF-8"?>
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
<p:input port="source">
<p:document href="filmsammlung.xml"></p:document>
</p:input>
<p:output port="result"/>
<p:xslt>
<p:input port="stylesheet">
<p:document href="xslt_stylesheet.xsl"></p:document>
</p:input>
<p:input port="parameters">
<p:empty/>
</p:input>
</p:xslt>
</p:declare-step>
Im Step <p:xslt> werden die benötigten Input-Ports definiert. So wird im Port “stylesheet“ via <p:document> das einzulesende XSLT-Stylesheet angegeben. Im Beispiel wird angenommen, dass die Dateien alle im selben Verzeichnis liegen. Da dem Stylesheet keine Parameter mitgegeben werden, muss dies durch <p:empty> klar angegeben werden (würde sonst zu einem “dynamic error“ führen).
Das Resultat der Transformation sieht folgendermaßen aus:
<html xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl">
<body>
<h1>Filmliste</h1>
<ul>
<li>Star Wars: Episode IV - A New Hope</li>
<li>Eraserhead</li>
<li>Unforgiven</li>
</ul>
</body>
</html>
Tipp der data2type-Redaktion: Zum Thema XProc bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |