Optionen

Fast jeder Step verfügt über Optionen. Sie werden über Attribute des jeweiligen Elements realisiert. Sie nehmen Einfluss auf das Verhalten des Steps.

p:option

<p:option
  name = QName
  required? = boolean
  select = XPathExpression/>

Eine Option hat immer einen Namen. Ist das boolsche Flag “required“ auf “true“ gesetzt, so ist die Angabe verpflichtend (erzeugt sonst einen Static Error). Einige Optionen haben sogenannte “Default“-Werte, also vordefinierte Angaben. Diese werden durch einen entsprechenden XPath-Ausdruck definiert.

Beispiel

Im folgenden Beispiel wird anhand des Atomic Steps <p:delete> eine Option gezeigt.

<p:declare-step type="p:delete">
   <p:input port="source"/>
   <p:output port="result"/>
   <p:option name="match" required="true"/> <!-- XSLTMatchPattern -->
</p:declare-step>

<p:delete> verlangt eine Option namens “match“. Dies ist ersichtlich, weil das boolsche Flag “required“ auf “true“ steht.

<?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:delete match="/FilmSammlung/Film/Cast"/>
</p:declare-step>

Wird kein Wert im Attribut “match“ angegeben, würde dies zu einem Static Error führen.

p:with-option

<p:with-option
  name = QName
  select = XPathExpression>
   ((p:empty |
   p:pipe |
   p:document |
   p:inline |
   p:data)? &
  p:namespaces*)
</p:with-option>

Durch <p:with-option> können innerhalb eines Steps Optionen zugewiesen werden. Dem Attribut “name“ wird die gewünschte Option zugewiesen und “select“ der entsprechende Wert. Da hier ein XPath-Ausdruck verlangt wird, kann eine Pipeline stark an Dynamik zunehmen.

Beispiel

Im folgenden Beispiel wird der Step <p:filter> durch <p:with-option> bedient.

<?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" sequence="true"/>
  <p:filter>
     <p:with-option name="select" select="'/FilmSammlung/Film/Titel'">
  </p:with-option>
  </p:filter>
</p:declare-step>

Um sicherzustellen, dass der XPath-Ausdruck im “select“-Attribut nicht aufgelöst wird, da <p:filter> selbst einen XPath-Ausdruck erwartet, wird in diesem Beispiel der Ausdruck durch entsprechende ‘ ‘-Zeichen maskiert. So wird dem XProc-Prozessor mitgeteilt, dass er den eingetragenen Wert nicht als XPath-Ausdruck behandeln darf, sondern lediglich als Zeichenkette.

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XProc bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: