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

<p:declare-step type="p:label-elements">
   <p:input port="source"/>
   <p:output port="result"/>
   <p:option name="attribute" select="'xml:id'"/> <!-- QName -->
   <p:option name="attribute-prefix"/> <!-- NCName -->
   <p:option name="attribute-namespace"/> <!-- anyURI -->
   <p:option name="label" select="'concat("_",$p:index)'"/><!-- XPathExpression -->
   <p:option name="match" select="'*'"/> <!-- XSLTMatchPattern -->
   <p:option name="replace" select="'true'"/> <!-- boolean -->
</p:declare-step>

Der <p:label-elements>-Step erzeugt ein Label und fügt es den entsprechenden Elementen als Attribut hinzu. Die zur Verfügung stehenden Optionen geben dem Benutzer die Möglichkeit, das Label zu konfigurieren. Die Option “attribute“ erwartet als Eingabetyp einen QName, was der spätere Anzeigename des Attributs sein wird. Die Optionen “attribute-prefix“ und “attribute-namespace“ geben dem Benutzer die Möglichkeit, dem Attribut einen Namensraum und ein Präfix zuzuweisen. “label“ und “match“ dienen der Positionierung und dem Inhalt des Labels. “match“ erwartet einen XSLT-Ausdruck, der dem Prozessor mitteilt, an welcher Stelle im Dokument das Label platziert werden soll. Die Option “label“ hingegen erwartet einen XPath-Ausdruck, der den Inhalt des Labels erzeugt. Falls “replace“ auf “true“ gesetzt ist, wird ein bereits vorhandenes Label mit dem neuen überschrieben.

Beispiel

Im bekannten Eingabe-Dokument (“filmsammlung.xml“) soll ein Label mit dem Inhalt des Filmtitels erzeugt werden. Das Beispiel ist sehr trivial und soll nur die Funktionalität dieses Features verdeutlichen.

<?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:label-elements attribute="Titel" match="/FilmSammlung/Film/Titel" label="text()"/>
</p:declare-step>

Das Resultat dieses Stylesheets würde folgendermaßen aussehen (Auszug):

[...]   
  <Titel Titel="Star Wars: Episode IV - A New Hope">Star Wars: Episode IV - A New Hope</Titel>
[...]      
  <Titel Titel="Eraserhead">Eraserhead</Titel>
[...]
  <Titel Titel="Unforgiven">Unforgiven</Titel>
[...]
Tipp der data2type-Redaktion:
Zum Thema XProc bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: