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

      <p:declare-step type="p:count">
         <p:input port="source" sequence="true"/>
         <p:output port="result"/>
          <p:option name="limit" select="0"/> <!-- integer -->
      </p:declare-step>

Der Step p:count zählt die Anzahl der vorkommenden Dokumente, die durch den Input-Port “source“ gelangen und gibt als Resultat (Am Output Port “result“) den entsprechenden Wert aus. Der Option “limit“ kann durch den Benutzer ein Integer Wert übergeben werden. Dieser setzt einen maximal Wert, der vorschreibt, wie weit gezählt werden soll. Falls der Benutzer den Wert 0 einträgt, wird unbegrenzt gezählt.

Beispiel

Im folgenden Beispiel werden die Dokumente der bekannten Eingangsdatei “filmsammlung.xml“ gezählt.

      <?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:count limit="0"/>
      </p:declare-step>
 

Da am Input-Port eine Datei eingelesen wird und keine weiteren Zwischenschritte in der Pipe vorkommen, die das Resultat von <p:count> beeinflussen könnten, ist das Ergebnis dieser Pipeline der numerische Wert “1“.

Im nächsten Beispiel wird vor den Step <p:count> noch ein <p:filter> Step angebracht, der das Dokument nach den “Film“-Elementen aufteilen soll.

      <?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:filter select="/FilmSammlung/Film"/>
        <p:count limit="0"/>
      </p:declare-step>
 

Da im Eingangsdokument “filmsammlung.xml“ drei “Film“-Elemente vorhanden sind und <p:filter> aufgrund der XPath Anweisung die Eingangsdaten nach diesen Elementen filtert, ist das Ergebnis dieser Pipeline der numerische Wert “3“.