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. XQuery ist ein W3C Standard und wird im Kapitel Grundlagen näher erläutert.

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.