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:choose name? = NCName> (p:xpath-context?, p:variable*, p:when*, p:otherwise?) </p:choose>
Durch <p:choose> können fallbezogene Entscheidungswege implementiert werden. Ausgehend von einem, entsprechenden XSLT Ausdruck, der in <p:when> definiert wird, werden je nach Resultat die entsprechenden Subpipelines ausgeführt. Falls keine Bedingung von <p:when> zutrifft, wird <p:otherwise> (wenn angegeben) durchgeführt, was einem Default Wert entspricht.
<p:when test = XPathExpression> (p:xpath-context?, (p:output | p:log)*, subpipeline) </p:when>
Der <p:when> Step hat unter “test“ einen XPath Ausdruck als Attribut hinterlegt. Trifft dieser zu, wird seine subpipeline ausgeführt. Weiterhin kann der Step noch durch <p:xpath-context>, <p:log> und <p:output> konfiguriert bzw. erweitert werden.
<p:otherwise> ((p:output | p:log)*, subpipeline) </p:otherwise>
<p:otherwise> ist der Standard Weg, der von <p:choose> gegangen wird, für den Fall das sämtliche Abfragebedingungen nicht erfüllt werden. So wird die entsprechende Subpipeline des Steps ausgeführt und das Resultat auf den Ouput Port geschrieben.
Beispiel
Im folgenden Beispiel wird der p:choose Step vorgestellt.
<?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:input> <p:output port="result"> <p:empty/> </p:output> <p:choose> <p:when test="count(//Film)&gt;1"> <p:store href="mehrlaseinedatei.xml"/> </p:when> <p:when test="count(//Film)=1"> <p:store href="einedatei.xml"/> </p:when> <p:otherwise> <p:store href="standard.xml"/> </p:otherwise> </p:choose> </p:declare-step>
Im Beispiel wird durch die entsprechenden XPath Ausdrucke innerhalb von <p:when> geprüft wieviele “Film“ Elemente im Quell-Dokument vorliegen. Je nach Fall wird eine entsprechende Datei erzeugt. Das Beispiel soll lediglich die Funktionsweise des Steps erläutern.