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:add-xml-base

<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>
 [...]
Tipp der data2type-Redaktion:
Zum Thema XProc bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: