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

<p:declare-step type="p:insert">
   <p:input port="source" primary="true"/>
   <p:input port="insertion" sequence="true"/>
   <p:output port="result"/>
   <p:option name="match" select="'/*'"/> <!-- XSLTMatchPattern -->
   <p:option name="position" required="true"/> <!-- "first-child" | "last-child" | "before" | "after" -->
</p:declare-step>

Durch <p:insert> ist es möglich, Inhalte (z.B. XML-Dokumente) an eine selbst bestimmte Stelle in einem Dokument einzufügen. Die gewünschten Inhalte werden am entsprechenden Input-Port (“insertion“) angegeben und das betroffene Dokument analog an einem weiteren Input-Port (“source“). Die Ausgabe erfolgt über den Output-Port (“result“). Der Benutzer kann durch die Option “match“ einen XSLT-Ausdruck definieren, der die Stelle angibt, wo im betroffenen Dokument der Inhalt geschrieben werden soll. Durch die Option “position“ kann diese Angabe noch verfeinert werden. Da der XSLT-Ausdruck bei “match“ lediglich ein Element oder Attribut beschreiben kann, ist es durch die Angaben “first-child“, “last-child“, “before“ und “after“ noch zusätzlich möglich, anzugeben, an welcher Position die gewünschten Inhalte gesetzt werden sollen.

Beispiel

Der bekannten Beispiel-Datei (“filmsammlung.xml) soll ein weiterer Film hinzugefügt 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:insert match="/FilmSammlung/Film[3]" position="before">
      <p:input port="insertion">
         <p:inline exclude-inline-prefixes="#all">
            <Film>
               <Titel>Star Wars: Episode V - The Empire Strikes Back</Titel>
               <Jahr>1980</Jahr>
               <Genre>SciFi</Genre>
               <Regisseur>Irvin Kershner</Regisseur>
               <Produzent>George Lucas</Produzent>
               <Cast>
                  <Hauptdarsteller>Mark Hamill</Hauptdarsteller>
                  <Hauptdarsteller>Harrison Ford</Hauptdarsteller>
               </Cast>
               <Laenge>124 min</Laenge>
               <Autor>George Lucas</Autor>
            </Film>
         </p:inline>
      </p:input>
   </p:insert>
</p:declare-step>

Im Beispiel wird durch den XSLT-Ausdruck in “match“ und der Angabe in “position“ bestimmt, dass das neue “Film“-Element, welches in <p:inline> erzeugt wird, vor dem dritten “Film“-Element im Eingangsdokument platziert wird.

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