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

<p:declare-step type="p:xquery">
   <p:input port="source" sequence="true" primary="true"/>
   <p:input port="query"/>
   <p:input port="parameters" kind="parameter"/>
   <p:output port="result" sequence="true"/>
</p:declare-step>

Durch den <p:xquery>-Step ist es möglich, XQuery-Prozeduren auszuführen. Das zu verarbeitende Dokument wird am entprechenden Input-Port (“source“) eingelesen. Der eigentliche XQuery-Aufruf ist am Input-Port “query“ zu definieren (z.B. durch <p:inline>, dann aber in einem <c:query>-Element, oder durch eine Referenz auf ein XQuery-Dokument via <p:document>). Gesetzt den Fall, dass dem Aufruf zusätzliche Parameter zugewiesen werden müssen, werden diese am Input-Port “parameters“ eingetragen. Das Resultat wird am Output-Port “result“ ausgegeben. Die Abfragesprache XQuery ist ein W3C-Standard. Weitere Informationen zu XQuery finden Sie auf der parsQube-Homepage.

Beispiel

Im folgenden Beispiel wird ein simpler XQuery-Aufruf durchgeführt. Es sollen sämtliche Autoren ausgegeben werden.

<?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:xquery>
      <p:input port="query">
         <p:inline>
            <c:query>/FilmSammlung/Film/Autor</c:query>
         </p:inline>
      </p:input>
      <p:input port="parameters">
         <p:empty/>
      </p:input>
   </p:xquery>
</p:declare-step>

Im entsprechenden <c:xquery>-Element können beliebig komplexe XQuery-Aufrufe definiert werden. Sie müssen allerdings als Resultat eine Sequenz von Dokumenten ausgeben. Andernfalls würde es einen dynamischen Fehler zur Folge haben.

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