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) &gt; 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: