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:choose
<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, dass 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) > 1">
<p:store href="mehralseinedatei.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-Ausdrücke 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.
Tipp der data2type-Redaktion: Zum Thema XProc bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |