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