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