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:string-replace

<p:declare-step type="p:string-replace">
   <p:input port="source"/>
   <p:output port="result"/>
   <p:option name="match" required="true"/> <!-- XSLTMatchPattern -->
   <p:option name="replace" required="true"/> <!-- XPathExpression -->
</p:declare-step>

Durch <p:string-replace> ist es möglich, Strings auszutauschen. Ausgehend von einem XSLT-Ausdruck, der in der Option “match“ angegeben wird, wird das entsprechende Ziel durch den neuen String, welcher in der Option “replace“ als XPath-Ausdruck hinterlegt wird, ausgetauscht. Das initale Dokument wird am Input-Port (“source“) angegeben. Das Ergebnis wird auf den Ouput-Port (“result“) geschrieben.

Beispiel

Im folgenden Beispiel sollen sämtliche “Hauptdarsteller“-Einträge mit dem Wert “Mark Hamill“ durch “Harrison Ford“ ersetzt 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"/>
   <p:string-replace match="/FilmSammlung/Film/Cast/Hauptdarsteller[text()='Mark Hamill']" replace="/FilmSammlung/Film/Cast/Hauptdarsteller[text()='Harrison Ford']"/>
</p:declare-step>

In der Ausgabe werden nach dem Durchführen dieses Stylesheets sämtliche “Hauptdarsteller“-Elemente mit dem Wert “Mark Hamill“ durch “Harrison Ford“ ersetzt. Allerdings ohne Markup-Tags, da XPath lediglich den Wert des spezifizierten Elements adressiert. Das Ergebnis würde so aussehen (Auszug):

[...]
  <Cast>
     Harrison Ford
     <Hauptdarsteller>Harrison Ford</Hauptdarsteller>
  </Cast>
[...]
Tipp der data2type-Redaktion:
Zum Thema XProc bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: