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:add-xml-base"> <p:input port="source"/> <p:output port="result"/> <p:option name="all" select="'false'"/> <!-- boolean --> <p:option name="relative" select="'true'"/> <!-- boolean --> </p:declare-step
Der Step p:add-xml-base fügt dem Wurzelelement des zugrundeliegenden Dokuments ein Attribut namens “xml:base“ hinzu und gibt es am Output-Port (“result“) aus. Als Wert beinhaltet es den Pfad im Dateisystem zur ursprünglich eingelesenen Datei am Input-Port (“source“). Ist die boolsche Option “all“ auf “true“, also wahr gesetzt, wird das “xml:base“ Attribut in jedes Element im Eingangsdokument geschrieben. Wird “relative“ auf “true“ gesetzt, so wird falls andere Elemente schon ein “xml:base“ Attribut mit einer abweichenden Pfadangabe als die vom Wurzelelement haben, die Pfadangabe im jeweiligen "xml:base" Attribut relativ dargestellt. Es darf nur jeweils eine der beiden Optionen auf “true“ stehen, andernfalls gibt der Prozessor einen dynamischen Fehler aus.
Beispiel
Es wird lediglich ein <p:identity> Step durchgeführt. Allerdings mit einem vorgestellten <p:add-xml-base> Step.
<?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:add-xml-base/> <p:identity/> </p:declare-step>
Das Resultat dieser Prozedur sieht folgendermaßen aus (Auszug):
<FilmSammlung xml:base="file:/Users/tg/Documents/XProc/Quellcodes/filmsammlung.xml"> <Film> <Titel>Star Wars: Episode IV - A New Hope</Titel> <Jahr>1978</Jahr> <Genre>SciFi</Genre [...]