Port Binding

Ports müssen mit ihren entsprechenden Quellen verknüpft (to bind) werden. Ein Input-Port benötigt seine Quell-Dokumente und für einen Output-Port muss definiert sein, zu welchem Step oder Pipelineausgang er gehört. Um einen Port mit einer Datenquelle zu verknüpfen, gibt es mehrere Möglichkeiten:

  • Die Daten können aus dem Output eines vorherigen Steps entstammen.
  • Sie können durch <p:inline> direkt definiert werden oder einer Dokument-Sequenz entstammen.
  • Weiterhin können sie durch eine externe Datei (einer URI-Angabe, z.B. mit <p:document>) eingebunden werden.
  • Sie können explizit leer sein (z.B. durch <p:empty>).

p:pipe

Mittels <p:pipe> werden Ports mit Ports eines vorhergehenden Steps explizit verbunden. Die Angaben innerhalb der Attribute “step“ und “port“ geben den Namen des Steps und Ports an, von dem die zu empfangenden Daten stammen.

<p:pipe
  step = NCName
  port = NCName/>

Beispiel

Das folgende Beispiel zeigt das übliche Vorgehen mit <p:pipe>.

<?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" name="BeispielPipeline">
  <p:input port="source">
    <p:inline>
      <doc>Hallo Welt</doc>
    </p:inline>
  </p:input>
  <p:output port="result"/>
  <p:identity>
    <p:input port="source">
      <p:pipe port="source" step="BeispielPipeline"/>
    </p:input>
  </p:identity>
</p:declare-step>

Der <p:identity>-Step bekommt durch die Angabe innerhalb seines Input-Ports “source“ durch <p:pipe> mitgeteilt, dass sein Input von einem Step namens “BeispielPipeline“ aus dem Port “source“ stammt. Dies ist der Name der gesamten Pipeline (Pipelines werden wie Steps behandelt). Nach dem Ausführen dieses Dokuments wird das durch <p:inline> erzeugte Dokument <doc>Hallo Welt</doc> ausgegeben.

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