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: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, das 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 in Abbildung 175 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>