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: |