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

<p:declare-step type="p:hash">
   <p:input port="source" primary="true"/>
   <p:output port="result"/>
   <p:input port="parameters" kind="parameter"/>
   <p:option name="value" required="true"/> <!-- string -->
   <p:option name="algorithm" required="true"/> <!-- QName -->
   <p:option name="match" required="true"/> <!-- XSLTMatchPattern -->
   <p:option name="version"/> <!-- string -->
</p:declare-step>

Der <p:hash>-Step erzeugt einen sogenannten Hash-Wert. Mit solchen Werten können eindeutige Strings erzeugt werden. Am Input-Port (“source“) muss das Dokument definiert sein, welches den Hash-Wert übergeben bekommen soll. Am Output-Port wird das Resultat ausgegeben. Weiterhin können dem Input-Port “parameters“ noch spezielle Werte übergeben werden, die das Erzeugen des Hash-Werts beeinflussen. Weiterhin stehen noch vier Optionen zur Auswahl, von denen drei allerdings verpflichtend anzugeben sind.

Die Option “value“ benötigt einen String. Von diesem String ausgehend, wird der spätere Hash-Wert erzeugt. Die Optionen “algorithm“ (crc, md, sha) und “version“ (32, 5, 1) legen fest, welcher Algorithmus beim Erstellen zum Einsatz kommen soll. Durch “match“ muss der Benutzer festlegen, an welcher Stelle (durch einen entsprechenden XSLT-Ausdruck) im Dokument der Hash-Wert eingetragen werden soll. Die Angaben von “value“, “match“ und “algorithm“ sind erforderlich.

Beispiel

Im folgenden Beispiel wird ein Hash-Wert erzeugt und in das bekannte Zieldokument geschrieben.

<?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="Pipeline">
   <p:input port="source">
      <p:document href="filmsammlung.xml"/>
   </p:input>
   <p:output port="result"/>
   <p:hash value="Testwert" algorithm="crc" match="/FilmSammlung/Film/Titel/@id">
      <p:input port="source">
         <p:pipe port="source" step="Pipeline"/>
      </p:input>
      <p:input port="parameters">
         <p:empty/>
      </p:input>
   </p:hash>
</p:declare-step>

Ausgehend vom Wert “Testwert“ wird ein Hash-Wert basierend auf dem “crc“-Algorithmus erstellt. Dieser soll jeweils in die “id“-Attribute ausgehend vom Dokument “filmsammlung.xml“ am Input-Port eingetragen werden. Dies wird durch den entsprechenden XSLT-Ausdruck im Attribut “match“ von <p:hash> festgelegt. Als Attribut von <p:hash> wird der initiale Testwert und eingesetzte Algorithmus eingetragen.

Das Resultat sieht folgendermaßen aus (Auszug):

<Titel id="1eb147c8">Star Wars: Episode IV - A New Hope</Titel>
Tipp der data2type-Redaktion:
Zum Thema XProc bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: