SELFHTML

XPath-Funktionen

Informationsseite

nach unten Hinweise zu den XPath-Funktionen
nach unten boolean() (Argument als wahr oder falsch bewerten)
nach unten ceiling() (Zahl aufrunden)
nach unten concat() (Zeichenketten zu einer zusammenfassen)
nach unten contains() (auf bestimmte Teilzeichenkette �berpr�fen)
nach unten count() (Anzahl Knoten in einem Knoten-Set ermitteln)
nach unten current() (aktuellen Knoten ermitteln)
nach unten document() (anderes XML-Dokument aufrufen)
nach unten element-available() (Verf�gbarkeit eines XSLT-Elements �berpr�fen)
nach unten false() (booleschen Wert f�r "falsch" erzeugen)
nach unten floor() (Zahl abrunden)
nach unten format-number() (Zahl in Zeichenkette umwandeln)
nach unten function-available() (Verf�gbarkeit einer XPath-Funktion �berpr�fen)
nach unten generate-id() (eindeutigen Bezeichner f�r ein Element generieren)
nach unten id() (Element mit bestimmtem Bezeichner ausw�hlen)
nach unten key() (Elemente mit Hilfe eines Schl�sselwerts ausw�hlen)
nach unten lang() (Element auf bestimmten Sprachcode �berpr�fen)
nach unten last() (Positionsnummer des letzten Knotens einer Reihe ermitteln)
nach unten local-name() (lokalen Namen eines Knoten-Sets ermitteln)
nach unten name() (Namen eines Knoten-Sets ermitteln)
nach unten namespace-uri() (Namensraum eines Elements ermitteln)
nach unten normalize-space() (Leerzeichen am Anfang und Ende einer Zeichenkette entfernen)
nach unten not() (Argument verneinen)
nach unten number() (Argument in eine Zahl umwandeln)
nach unten position() (Positionsnummer des aktuellen Knotens ermitteln)
nach unten round() (kaufm�nnisch auf- oder abrunden)
nach unten starts-with() (�berpr�fen, ob Zeichenkette mit bestimmter Teilzeichenkette beginnt)
nach unten string() (Argument in Zeichenkette umwandeln)
nach unten string-length() (Anzahl Zeichen einer Zeichenkette ermitteln)
nach unten substring() (Teilzeichenkette aus Zeichenkette extrahieren)
nach unten substring-after() (Zeichenkette ab einer Position mit Teilzeichenkette ermitteln)
nach unten substring-before() (Zeichenkette vor einer Position mit Teilzeichenkette ermitteln)
nach unten sum() (Summe von Zahlenwerten ermitteln)
nach unten system-property() (Systemeigenschaften ermitteln)
nach unten translate() (Suchen und Ersetzen von Zeichen in einer Zeichenkette)
nach unten true() (booleschen Wert f�r "wahr" erzeugen)
nach unten unparsed-entity-uri() (ungeparste Eintr�ge der DTD ermitteln)

 nach unten 

Hinweise zu den XPath-Funktionen

Funktionen in XPath haben die Aufgabe, die �bersetzung der XML-Ausgangsdaten in den Ergebnisbaum (zum Beispiel nach HTML) genauer zu kontrollieren und dabei zus�tzliche Features zur Verf�gung zu stellen. Sie sind f�r den Einsatz innerhalb von XSLT-Stylesheets gedacht. Die einzelnen XPath-Funktionen erf�llen einen bestimmten Zweck (zum Beispiel das Extrahieren einer Teilzeichenkette aus einer Zeichenkette) und liefern im Normalfall einen Wert zur�ck (zum Beispiel die extrahierte Teilzeichenkette).

Die Funktionen bestehen aus einem Funktionsnamen, gefolgt von runden Klammern, in denen so genannte Argumente stehen k�nnen. Argumente werden ben�tigt, damit eine Funktion ihre Aufgabe erf�llen kann. So muss beispielsweise der Funktion, die aus einer Zeichenkette eine Teilzeichenkette extrahiert, mitgeteilt werden, aus welcher Zeichenkette sie welchen Teil extrahieren soll.
Bei der Beschreibung der Funktionen in diesem Abschnitt wird f�r jede Funktion beschrieben, ob sie Argumente erwartet, und wenn ja, welche. Wenn mehrere Argumente erforderlich sind, werden die einzelnen Argumente durch Komma getrennt. Wird als Argument eine Zeichenkette notiert, muss diese in Anf�hrungszeichen stehen. Da XPath-Funktionen jedoch meistens innerhalb von Wertzuweisungen an Attribute von XSLT-Elementen vorkommen, die selbst schon in Anf�hrungszeichen stehen, m�ssen Sie andere Anf�hrungszeichen benutzen. Wenn die Wertzuweisung an das XSLT-Element beispielsweise in doppelten Anf�hrungszeichen steht, muss eine Zeichenkette, die innerhalb davon einer XPath-Funktion �bergeben wird, in einfachen Anf�hrungszeichen (Hochkommata) stehen, also z.B. so: <xsl:value-of select="document('datei2.xml')" />. Zahlen und Namen von Elementen der XML-Daten k�nnen dagegen ohne Anf�hrungszeichen �bergeben werden.

Da die Funktionen einen Wert zur�ckgeben, werden sie innerhalb von XSLT normalerweise an den Stellen verwendet, wo Attribute Wertzuweisungen erhalten. So k�nnte beispielsweise das XSLT-Element Seite value-of in der folgenden Form notiert werden:
<xsl:value-of select="last()" />
Dabei wird also dem select-Attribut ein Wert zugewiesen, allerdings kein fester Wert, sondern ein dynamisch ermittelter. In diesem Fall wird er von der Funktion nach unten last() ermittelt.

Generell besteht keine Gew�hr, dass jeder XSL-Prozessor, also die XSL interpretierende Software, alle die hier aufgelisteten und zum Standard geh�renden XPath-Funktionen kennt oder in vollem Umfang verarbeitet.

Bei den Beschreibungen der Funktionen ist h�ufig von Knoten und Knotentypen die Rede. Diese Begriffe werden im Abschnitt Seite Knoten und Knoten-Sets in der Baumstruktur einf�hrend erl�utert. Vertiefende Informationen dazu stehen im Abschnitt �ber Seite XPath-Syntax.

nach obennach unten

XPath 1.0 boolean() (Argument als wahr oder falsch bewerten)

Ermittelt, ob ein Ausdruck wahr oder falsch ist.

Erwartet folgende Argumente:

[Ausdruck] irgendein mit XSL realisierbarer Ausdruck, der sich als wahr oder falsch bewerten l�sst. Es kann sich z.B. um eine Vergleichsoperation handeln, aber auch um den Test auf Vorhandensein eines Knotens.

Liefert true (wahr) oder false (falsch) zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="name">
 <xsl:choose>
  <xsl:when test="boolean(vorname) != boolean(nachname)">
   <xsl:message>Es m�ssen entweder Vor- und Nachname,
    oder �berhaupt kein Name angegeben werden!</xsl:message>
  </xsl:when>
  <xsl:otherwise>
   <xsl:apply-templates select="vorname">
   <xsl:apply-templates select="nachname">
  </xsl:otherwise>
 </xsl:choose>
</xsl:template>

Erl�uterung:

Im Beispiel wird ein Template f�r ein XML-Element namens name definiert. Es wird angenommen, dass dieses Element zwei untergeordnete Elemente vorname und nachname enthalten muss. Im Beispiel-Stylesheet wird mit <xsl:when test="boolean(vorname) != boolean(nachname)"> abgefragt, ob tats�chlich beide untergeordneten Elemente vorhanden sind. Ist das nicht der Fall, wird eine entsprechende Meldung ausgegeben. Andernfalls wird der xsl:otherwise-Zweig ausgef�hrt, der die Templates zum �bersetzen der Unterelemente aufruft.

nach obennach unten

XPath 1.0 ceiling() (Zahl aufrunden)

Rundet eine Bruchzahl zur n�chsth�heren Ganzzahl auf. Die Zahl 5.7234 wird auf 6 aufgerundet, aber 0.00001 wird auch auf 1 aufgerundet. Wichtig ist, dass "Kommazahlen" den Punkt als Dezimalzeichen haben. Andernfalls werden sie als ung�ltige Zahlen (NaN - not a number) interpretiert.

Erwartet folgende Argumente:

[Zahl] Die aufzurundende Zahl. Es kann sich auch um den Inhalt eines Knotens oder den einer Variablen handeln. Dabei wird der Wert intern zun�chst als Zahl umgewandelt, und zwar so, als w�rde die Funktion nach unten number() angewendet.

Liefert die n�chsth�here Ganzzahl zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:value-of select="ceiling(betrag)" /><xsl:text>.-</xsl:text>

Erl�uterung:

Im Beispiel wird von einem XML-Element namens betrag angenommen, dass es einen "krummen" Wert enth�lt, der auf den n�chsth�heren Euro-Ganzzahlwert aufgerundet werden soll. Dazu wird beim Ausw�hlen des Inhalts von betrag mit Seite xsl:value-of im select-Attribut die Funktion ceiling() aufgerufen. Sie bewirkt, dass der Elementinhalt aufgerundet wird, bevor er in den Ergebnisbaum der Datenausgabe �bernommen wird.

nach obennach unten

XPath 1.0 concat() (Zeichenketten zu einer zusammenfassen)

H�ngt mehrere Zeichenketten aneinander.

Erwartet folgende Argumente:

[Zeichenkette], [Zeichenkette], ... H�ngt alle Zeichenkette in der angegebenen Reihenfolge aneinander. Es kann sich direkt um Text handeln, aber auch um den Inhalt eines Knotens oder den Wert einer Variablen. Die Zeichenketten werden durch Kommata getrennt.

Liefert die zusammengesetzte Zeichenkette zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:value-of select="concat(vorname, ' hei�t mit Zuname ', zuname)"/>

Erl�uterung:

Im Beispiel wird angenommen, dass es zwei verf�gbare XML-Elemente vorname und zuname gibt. Bei der �bersetzung in den Ergebnisbaum soll daraus ein Satz vom Typ Heidi hei�t mit Zuname Finkenzeller erzeugt werden. Dazu wird beim Ausw�hlen des Inhalts mit Seite xsl:value-of im select-Attribut die Funktion concat() angewendet. Sie bekommt drei Zeichenketten �bergeben: den Inhalt des Elements vorname, die feste Zeichenkette hei�t mit Zuname, und den Inhalt des Elements zuname. Beachten Sie, dass Variablennamen, Elementnamen (oder Elementpfade nach Seite XPath-Syntax) direkt angegeben werden, feste Zeichenketten dagegen in Anf�hrungszeichen eingeschlossen werden. Dabei muss es sich um andere Anf�hrungszeichen handeln als bei dem XSLT-Attribut, innerhalb dessen die Funktion steht. Wenn die Funktion, wie beim Beispiel im select-Attribut, in dessen doppelten Anf�hrungszeichen "..." vorkommt, m�ssen einfache Anf�hrungszeichen verwendet werden, so wie im Beispiel ' hei�t mit Zuname '.

nach obennach unten

XPath 1.0 contains() (auf bestimmte Teilzeichenkette �berpr�fen)

�berpr�ft, ob in einer Zeichenkette eine bestimmte Teilzeichenkette vorhanden ist.

Erwartet folgende Argumente:

[Zeichenkette] Die Zeichenkette, in der �berpr�ft werden soll.
[Teilzeichenkette] Die Teilzeichenkette, auf die hin die Zeichenkette �berpr�ft werden soll.

Liefert true zur�ck, wenn die Teilzeichenkette vorhanden ist, und false, wenn sie nicht vorhanden ist.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:if test="contains(zuname, 'A')">
  <xsl:value-of select="zuname" />
</xsl:if>

Erl�uterung:

Im Beispiel wird mit Seite xsl:if gepr�ft, ob der Wert eines XML-Elements zuname ein gro�es A enth�lt. Wenn ja, wird der Inhalt des Elements ausgegeben. Dazu wird im test-Attribut der xsl:if-Anweisung mit contains(zuname, 'A') in der Zeichenkette, die das Element zuname speichert, nach der Teilzeichenkette A gesucht. Auf diese Weise k�nnten also beispielsweise nur Zunamen in den Ergebnisbaum einflie�en, die mit A beginnen.

nach obennach unten

XPath 1.0 count() (Anzahl Knoten in einem Knoten-Set ermitteln)

Ermittelt, wieviele Knoten auf der Ebene unterhalb eines Knoten-Sets enthalten sind.

Erwartet folgende Argumente:

[Knoten-Set] Ein Knoten-Set bzw. einen Pfad nach Seite XPath-Syntax, f�r das die Anzahl der darin enthaltenen Knoten der n�chstunteren Ebene bestimmt werden soll.

Liefert die Anzahl der untergeordneten Knoten zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:variable name="anzahl" select="count(//listeneintrag)" />
...
<xsl:template match="liste">
    <xsl:for-each select="listeneintrag">
    <p>
        <xsl:value-of select="position()" />
         <xsl:text>. von </xsl:text>
         <xsl:value-of select="$anzahl" />
         <xsl:text>: </xsl:text>
         <xsl:value-of select="." />
    </p>
    </xsl:for-each>
</xsl:template>

Erl�uterung:

Das Beispiel nimmt an, dass es ein XML-Element namens liste gibt, das aus mehreren Unterelementen listeneintrag besteht. Zun�chst wird mit Seite xsl:variable eine Variable namens anzahl definiert, in der die Anzahl der Listeneintr�ge gespeichert wird. Dazu wird im select-Attribut die Funktion count() angewendet. Als Argument wird ihr das Element listeneintrag �bergeben. In der Seite for-each-Schleife, die alle Listeneintr�ge abarbeitet, wird vor dem Text des Listeneintrags jeweils die aktuelle Positionsnummer mit nach unten position() ausgegeben, und dahinter die Gesamtzahl, die in der Variablen anzahl gespeichert ist, also etwa so:
1. von 5: Text des ersten Listeneintrags
2. von 5: Text des zweiten Listeneintrags

nach obennach unten

XPath 1.0 current() (aktuellen Knoten ermitteln)

Stellt den Bezug zum jeweils aktuellen Knoten her.

Erwartet keine Argumente.

Liefert das Knoten-Set zur�ck, das den aktuellen Knoten enth�lt.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:value-of select="current()" />

Erl�uterung:

Die Anweisung im Beispiel dr�ckt das gleiche aus wie die �blichere Anweisung:
<xsl:value-of select="." />

Beachten Sie:

current() und . liefern dann das gleiche Ergebnis, wenn current() in einem freistehenden XPath-Ausdruck steht, also z.B. direkt in einem select-Attribut. Wenn Sie current() dagegen in einem Pr�dikat (steht immer zwischen [...]) anwenden, kann das zur�ckgelieferte Ergebnis ein anderes sein als das Ergebnis von select=".". Der Grund ist, dass XPath intern zwischen "current node" und "context node" unterscheidet. Ein "current node", also ein aktueller Knoten, ist nur dann gegeben, wenn ein Knoten-Set der Reihe nach abgearbeitet wird. In diesem Fall ist der jeweils bearbeitete Knoten der "current node". Au�erhalb einer solchen Serienbearbeitung gibt es jedoch keinen "current node". Einen "context node", wie man ihn durch die Punkt-Syntax (.) ermitteln kann, ist dagegen zu jedem Zeitpunkt gegeben.

nach obennach unten

XPath 1.0 document() (anderes XML-Dokument aufrufen)

Erlaubt es, XML-Ausgangsdaten aus anderen XML-Dateien als der, in der das Stylesheet eingebunden ist, mit in den Ergebnisbaum zu �bernehmen.

Erwartet folgende Argumente:

[URI] Angabe einer XML-Datei, die mit eingebunden werden soll. Es kann sich um eine relative Adressierung handeln oder um eine absolute Angabe, z.B. http://.... Wird keine andere XML-Datei angegeben, sondern ein Element mit Seite XPath-Syntax adressiert, so wird das Element und gegebenenfalls sein untergeordneter Elementenbaum an dieser Stelle eingebunden.
[Knoten-Set] (optional) Angabe der Basis innerhalb der eingebundenen Daten, auf das sich relative XPath-Adressierungen beziehen k�nnen. Gemeint ist der erste Knoten des Knoten-Sets.

Liefert die ermittelte Elementstruktur der anderen XML-Datei oder des angegebenen Elements ab dem Wurzelelement zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="beispiel">
 <pre>
  <xsl:value-of select="document(./@quelle)" />
 </pre>
</xsl:template>

Erl�uterung:

Im Beispiel wird angenommen, dass es ein XML-Element namens beispiel gibt, dass in einem Attribut eine Quellenangabe zu einer XML-Datei enth�lt, z.B.: <beispiel quelle="../quellen/beispiel03.xml" />. Im Stylesheet wird f�r die HTML-Ausgabe dieses Elements mit <pre>...</pre> ein Bereich mit pr�formatiertem Text definiert. Darin wird mit Seite xsl:value-of der Inhalt der Datei ausgegeben, die im Attribut quelle angegeben ist. Um auf die Datei zuzugreifen, wird im select-Attribut die document()-Funktion angewendet. Als Argument wird ihr die Angabe zum Attribut quelle �bergeben.

nach obennach unten

XPath 1.0 element-available() (Verf�gbarkeit eines XSLT-Elements �berpr�fen)

Ermittelt, ob ein XSLT-Element im verwendeten XSLT-Parser verf�gbar ist oder nicht. Dient daher als Ma�nahme zur Vermeidung von Fehlern.

Erwartet folgende Argumente:

[Elementname] Name eines XSLT-Elements, dessen Verf�gbarkeit �berpr�ft werden soll.

Liefert true zur�ck, wenn das Element verf�gbar ist, und false, wenn es nicht verf�gbar ist.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:if test="element-available('xsl:number')">
   <xsl:number level="single" count="eintrag" format="1. " />
 </xsl:if>

Erl�uterung:

Das Beispiel �berpr�ft mit Hilfe der Seite xsl:if-Anweisung, ob das XSLT-Element Seite xsl:number verf�gbar ist. Wenn ja, wird es innerhalb der xsl:if-Anweisung angewendet. Wenn nicht, wird zumindest ein Fehler vermieden.

Beachten Sie:

Dieser Funktion ist auch dann n�tzlich, wenn es darum geht herauszufinden, ob der XSLT-Prozessor Hersteller-spezifische Erweiterungen kennt, z.B.:
<xsl:when test="element-available('saxon:entity-ref')">...</xsl:when>.
In diesem Beispiel wird abgefragt, ob der Prozessor das Element entity-ref kennt, das der Saxon-Prozessor interpretiert.

nach obennach unten

XPath 1.0 false() (booleschen Wert f�r "falsch" erzeugen)

Verneint einen Ausdruck.

Erwartet keine Argumente

Liefert einfach den logischen Wert false zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:variable name="passwortanzeige" select="false()"/>

<xsl:template name="passwort">
 <xsl:choose>
  <xsl:when test="$passwortanzeige">
    <xsl:value-of select="." />
  </xsl:when>
  <xsl:otherwise>
   <xsl:text>[Passwort]</xsl:text>
  </xsl:otherwise>
 </xsl:choose>
</xsl:template>

Erl�uterung:

Im Beispiel wird mit Seite xsl:variable eine Variable namens passwortanzeige definiert, deren Wert auf den logischen Wert false gesetzt wird. Verantwortlich daf�r ist der Einsatz der Funktion false(), die einfach dem select-Attribut zugewiesen wird und dadurch f�r das Setzen des Wertes sorgt. Weiterhin zeigt das Beispiel eine Template-Definition f�r ein Element namens passwort. Innerhalb dieser Template-Definition wird in einer Seite xsl:choose-Konstruktion abgefragt, wie es mit der Passwortanzeige steht. Wenn die Variable $passwortanzeige wahr ist, wird mit <xsl:value-of select="." /> der Wert des passwort-Elements ausgegeben. Andernfalls wird nur die Zeichenkette [Passwort] ausgegeben.

nach obennach unten

XPath 1.0 floor() (Zahl abrunden)

Rundet eine Bruchzahl zur basierenden Ganzzahl ab. Die Zahl 5.7234 wird auf 5 abgerundet, und 5.99997 wird auch zu 5 abgerundet. Wichtig ist, dass "Kommazahlen" den Punkt als Dezimalzeichen haben. Andernfalls werden sie als ung�ltige Zahlen (NaN - not a number) interpretiert.

Erwartet folgende Argumente:

[Zahl] Die abzurundende Zahl. Es kann sich auch um den Inhalt eines Knotens oder den Wert einer Variablen handeln. Dabei wird der Wert intern zun�chst als Zahl umgewandelt, und zwar so, als w�rde die Funktion nach unten number() angewendet.

Liefert die basierende Ganzzahl zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="zahl">
 <div style="background-color:yellow"><xsl:value-of select="floor(./@wert)" /></div>
</xsl:template>

Erl�uterung:

Das Beispiel nimmt ein XML-Element namens zahl an, das z.B. folgende Auspr�gung haben k�nnte: <zahl wert="63,47" />. In der Template-Definition zur HTML-Ausgabe dieses Elements wird auf das Attribut mit @wert zugegriffen. Dabei wird dieser Attributzugriff jedoch in die Funktion floor() eingebettet, sodass im Falle einer Zahl mit dem Wert 63,47 nur 63 in der HTML-Ausgabe erscheint.

nach obennach unten

XPath 1.0 format-number() (Zahl in Zeichenkette umwandeln)

Wandelt eine Zahl in eine Zeichenkette um und erlaubt es, die Formatierung der umgewandelten Zahl zu beeinflussen.

Erwartet folgende Argumente:

[Zahl] Der umzuwandelnde Wert. Es kann sich auch um den Inhalt eines Elements oder den Wert einer Variablen handeln. Dabei wird der Wert intern zun�chst als Zahl umgewandelt, und zwar so, als w�rde die Funktion nach unten number() angewendet.
[Formatregel] Eine Darstellungs-Syntax f�r die Formatierung der umgewandelten Zahl. Die Syntax der Formatregel orientiert sich dabei an dem Schema, das in Java 1.1 f�r die decimal_format-Klasse implementiert ist. Allerdings gibt es keine zwingende Korrelation zwischen der XPath-Syntax und der Java-Implementierung. Folgende Zeichen sind �blich:
0 = eine Ziffer
# = eine Ziffer, 0 wird jedoch nicht angezeigt
. = Platzhalter f�r Dezimalpunkt-Trennzeichen
, = Platzhalter f�r ein Gruppierungs-Trennzeichen, z.B. f�r Tausender
; = zum Trennen von mehreren Formaten
- = negatives Vorzeichen als Voreinstellung
% = Wert mit 100 multiplizieren und als Prozentwert anzeigen
? = Wert mit 1000 multiplizieren und als Promillewert anzeigen
= W�hrungssymbol, wird durch das voreingestellte W�hrungssymbol ersetzt (noch nicht in Java 1.1!).
' = zum Maskieren von format-bedeutenden Zeichen wie 0, #, . usw.
[Name] (optional) Name eines Formats, das mit Seite xsl:decimal-format definiert wird.

Liefert eine Zeichenkette mit der formatierten Zahl zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="wert">
 <xsl:value-of select="format-number(.,'##0.0%')" />
</xsl:template>

Erl�uterung:

Das Beispiel nimmt ein XML-Element namens wert an, f�r dessen Ausgabe in den HTML-Ergebnisbaum ein Template definiert wird. Dabei wird der Inhalt des Elements wert, angesprochen durch die Funktion nach oben current() als erstes Argument der Funktion format-number() �bergeben. F�r die Formatierung wird bestimmt, dass es eine bis zu dreistellige Zahl mit einer Nachkommastelle sein kann, die als Prozentwert ausgegeben wird. Durch die Zuweisung dieses Konstrukts an das select-Attribut von Seite xsl:value-of wird bewirkt, dass der Inhalt von wert entsprechend der Formatregel ausgegeben wird.

nach obennach unten

XPath 1.0 function-available() (Verf�gbarkeit einer XPath-Funktion �berpr�fen)

Ermittelt, ob eine XPath-Funktion im verwendeten XSLT-Parser verf�gbar ist oder nicht. Dient daher als Ma�nahme zur Vermeidung von Fehlern.

Erwartet folgende Argumente:

[Funktionsname] Name einer XPath-Funktion, deren Verf�gbarkeit �berpr�ft werden soll.

Liefert true zur�ck, wenn die Funktion verf�gbar ist, und false, wenn sie nicht verf�gbar ist.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:choose>
  <xsl:when test="function-available('normalize-space')">
    <xsl:value-of select="normalize-space(.)" />
  </xsl:when>
  <xsl:otherwise>
   <xsl:value-of select="." />
  </xsl:otherwise>
</xsl:choose>

Erl�uterung:

Das Beispiel �berpr�ft mit Hilfe einer Seite xsl:choose-Konstruktion, ob die XPath-Funktion nach unten normalize-space() verf�gbar ist. Wenn ja, wird sie innerhalb der Seite xsl:value-of-Anweisung angewendet, um bei der Ausgabe des aktuellen Elements, das mit . angegeben wird, alle �berfl�ssigen Leerraumzeichen am Anfang und am Ende zu entfernen. Andernfalls, wenn die Funktion nicht verf�gbar ist, wird der Inhalt des aktuellen Elements ohne weitere Vorbehandlung ausgegeben.

nach obennach unten

XPath 1.0 generate-id() (eindeutigen Bezeichner f�r ein Element generieren)

Erzeugt im Ergebnisbaum automatisch einen eindeutigen Bezeichner. Der Bezeichner muss nicht bei jedem Generierungsvorgang der gleiche sein (k�nnte also zum Beispiel durch zeitabh�ngige Algorithmen erzeugt sein), aber er ist in jedem Fall innerhalb des einzelnen Dokuments eindeutig. Der generierte Bezeichner entspricht in jedem Fall den Konventionen f�r Bezeichner in XML.

Erwartet folgende Argumente:

[Knoten-Set] (optional) Knoten-Set bzw. einen Pfad nach Seite XPath-Syntax, der eine ID erhalten soll.

Liefert eine Zeichenkette mit dem generierten Bezeichner zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="absatz">
<p><a name="{generate-id(.)}">
 <xsl:value-of select="." />
</a></p>
</xsl:template>

Erl�uterung:

Das Beispiel definiert ein Template f�r ein h�ufiger vorkommendes XML-Element namens absatz. Jedes dieser Elemente erh�lt bei der �bersetzung in ein HTML-Konstrukt einen Anker, definiert mit <a name=>...</a>. Der Wert, der jeweils beim Attribut name vergeben wird, wird automatisch erzeugt, und zwar durch Anwendung der Funktion generate-id(). Als Argument wird das aktuelle Element (.) �bergeben. Wichtig sind die geschweiften Klammern, in denen die Funktion bei der Wertzuweisung an name zus�tzlich steht. Dies ist n�tig, weil die Funktion in diesem Beispiel nicht in der Wertzuweisung an ein Attribut einer XSLT-Anweisung steht, sondern in einer Wertzuweisung an ein Attribut eines Elements des Ergebnisbaums - im Beispiel an das name-Attribut des a-Elements der Ergebnissprache HTML.

Beachten Sie:

generate-id() kann man auch dazu verwenden, um herauszufinden, ob Knoten identisch sind. Beispiel:
<xsl:if test="a = b"> pr�ft nur, ob a und b den gleichen Inhalt haben.
<xsl:if test="generate-id(a) = generate-id(b)"> pr�ft dagegen, ob es wahr ist, dass beide Knoten identisch sind.

nach obennach unten

XPath 1.0 id() (Element mit bestimmtem Bezeichner ausw�hlen)

W�hlt ein Element aufgrund einer ID aus. Dazu muss das Element ein Seite Attribut mit Identifikationswert besitzen, das in der zugeh�rigen DTD entsprechend definiert sein muss. Da die Wertzuweisungen an solche Attribute dokumentweit eindeutig sein m�ssen, eignen sie sich hervorragend, um das Element auszuw�hlen.

Erwartet folgende Argumente:

[ID-Wert] Der ID-Wert desjenigen Elements, das ausgew�hlt werden soll.

Liefert das Element oder mehrere Elemente zur�ck, deren ID-Wert ausgew�hlt wurde.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="name">
<li><xsl:value-of select="id('p01')" /><xsl:value-of select="." /></li>
</xsl:template>

Erl�uterung:

Das Beispiel definiert ein Template f�r ein Element namens name. Darin wird in einem HTML Aufz�hlungspunkt ein fixes Label (denkbar w�re z.B. ein Wert wie Name, Vorname: ) und dahinter der aktuelle Wert des Elements name mit <xsl:value-of select="." /> ausgegeben. Der Wert des Labels wird ebenfalls mit einer xsl:value-of-Anweisung ermittelt. Dabei ist im select-Attribut die Funktion id() notiert, die auf ein Element mit dem Identifikationswert p01 zugreift. Dieses Element k�nnte in den XML-Daten beispielsweise so notiert sein:
<prefix x="p01">Name, Vorname: </prefix>
Dabei w�re das Attribut x in der zugeh�rigen DTD als Attribut mit Identifikationswert definiert.

nach obennach unten

XPath 1.0 key() (Elemente mit Hilfe eines Schl�sselwerts ausw�hlen)

W�hlt einen Knoten aus, der f�r einen benannten Schl�ssel einen bestimmten Wert besitzt. Sinnvoll, um etwa von allen Elementen nur solche auszuw�hlen, die aufgrund von Inhalt oder Wertzuweisungen an Attribute bestimmte Kriterien erf�llen.

Erwartet folgende Argumente:

[Name] Name eines Schl�ssels. Der Schl�ssel selbst muss zuvor mit Hilfe der Seite xsl:key-Anweisung definiert worden sein und im name-Attribut der Anweisung den hier angegebenen Namen erhalten haben.
[Wert] Der Wert, der zur Eingrenzung auszuw�hlender Elemente dient. Nur Elemente, die dem Schl�ssel entsprechen und dabei diesen Wert besitzen, werden ausgew�hlt.

Liefert das erste Element zur�ck, das den Auswahlkriterien entspricht.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:key name="k3" match="datensatz" use="handelsklasse" />

<xsl:template match="/">
 <html><head><body>
  <xsl:for-each select="key('k3','III')">
    <xsl:apply-templates />
  </xsl:for-each>
 </body></html>
</xsl:template>

Erl�uterung:

Im Beispiel wird mit Hilfe der xsl:key-Anweisung f�r ein Element namens datensatz ein Schl�ssel definiert, der den Namen k3 erh�lt und sich auf den Inhalt eines zu datensatz untergeordneten Elements namens handelsklasse bezieht. Es wird angenommen, dass die XML-Daten unterhalb ihres Wurzelelements aus vielen Elementen vom Typ datensatz bestehen. Durch Anwendung der Seite xsl:for-each-Anweisung in Verbindung mit der Funktion key() im select-Attribut werden nur solche Datens�tze ausgew�hlt, die im untergeordneten Element handelsklasse den Wert III enthalten. F�r diesen Fall werden mit Seite xsl:apply-templates untergeordnete Template-Definitionen aufgerufen.

nach obennach unten

XPath 1.0 lang() (Element auf bestimmten Sprachcode �berpr�fen)

�berpr�ft, ob ein Element einen bestimmten Sprachcode verwendet. Voraussetzung ist, dass in dem Element das XML-Attribut xml:lang notiert ist, also beispielsweise:
<description xml:lang="de">die Beschreibung zu irgendetwas</description>
In der DTD w�re folgende zugeh�rige Definition erforderlich:
<!ATTLIST description  xml:lang NMTOKEN #IMPLIED>
Die Angaben zum Attribut xml:lang k�nnen Seite Sprachenk�rzel sein.

Erwartet folgende Argumente:

[Zeichenkette] f�r den L�ndercode, auf den hin �berpr�ft werden soll (z.B. de).

Liefert true zur�ck, wenn das Element diesen L�ndercode in seinem xml:lang-Attribut angibt, und false, wenn kein xml:lang-Attribut vorhanden ist, oder wenn es einen anderen als den im Argument �bergebenen Wert hat.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="description">
 <xsl:choose>
  <xsl:when test="lang('de')">
   <h4><xsl:text>Beschreibung:</xsl:text></h4>
  </xsl:when>
  <xsl:otherwise>
   <h4><xsl:text>Description:</xsl:text></h4>
  </xsl:otherwise>
  <p><xsl:value-of select="." /></p>
 </xsl:choose>
</xsl:template>

Erl�uterung:

Das Beispiel sorgt daf�r, dass einem Element namens description im HTML-Ergebnisbaum eine h4-�berschrift vorangestellt wird. Dabei wird mit Hilfe der Seite xsl:choose-Anweisung im when-Zweig mit Hilfe der Funktion lang() �berpr�ft, ob das description-Element xml:lang="de" als Attribut enth�lt. Wenn ja, wird als Text der h4-�berschrift das deutsche Wort Beschreibung ausgegeben, andernfalls das englische Wort Description. Am Ende wird dann noch mit Seite xsl:value-of der Inhalt des description-Elements ausgegeben.

nach obennach unten

XPath 1.0 last() (Positionsnummer des letzten Knotens einer Reihe ermitteln)

Ermittelt die Positionsnummer des letzten von mehreren Knoten eines Knoten-Sets.

Erwartet keine Argumente.

Liefert die Positionsnummer des letzten Knotens zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="zahl">
 <xsl:value-of select="." />
 <xsl:if test="position() != last()">
  <xsl:text>, </xsl:text>
 </xsl:if>
</xsl:template>

Erl�uterung:

Das Beispiel definiert ein Template f�r ein Element namens zahl. Im Beispiel wird angenommen, dass mehrere solcher Elemente nacheinander innerhalb eines gemeinsamen �bergeordneten Elements notiert sind, also beispielsweise die einzelnen Zahlen innerhalb einer Lottozahlenreihe. Bei jeder Anwendung des Templates wird zun�chst mit Seite xsl:value-of die aktuelle Zahl ausgegeben. Danach soll hinter allen au�er der letzten Zahl ein Komma ausgegeben werden, sodass eine Ausgabe wie z.B. 3,15,28,29,33,43 entsteht. Dazu wird mit Seite xsl:if abgefragt, ob die Positionsnummer des aktuellen Elements innerhalb der Reihe (ermittelt mit nach unten position()) ungleich (!=) der Positionsnummer des letzten Elements (ermittelt mit der last()-Funktion) ist. Ist dies der Fall, wird ein Komma ausgegeben.

nach obennach unten

XPath 1.0 local-name() (lokalen Namen eines Knoten-Sets ermitteln)

Ermittelt aus einem Knotennamen mit Namensraumangabe den lokalen Namensteil - aus einem Elementnamen wie xhtml:blockquote w�rde also blockquote ermittelt.

Erwartet folgende Argumente:

[Knoten-Set] (optional) Ein Knoten-Set bzw. einen Pfad nach Seite XPath-Syntax, dessen lokaler Name ermittelt werden soll. Fehlt die Angabe des Arguments, wird die Funktion auf das jeweils aktuelle Element angewendet.

Liefert den lokalen Elementnamen zur�ck, sofern der Elementname aus einer Namensraumangabe und dem lokalen Elementnamen besteht. Ansonsten wird eine leere Zeichenkette zur�ckgeliefert.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="autor:*">
 <div>
  <p>Name des Knotens: <b><xsl:value-of select="name(.)" /></b></p>
  <p>local-name:<b><xsl:value-of select="local-name(.)" /></b></p>
  <p>Inhalt:<b><xsl:apply-templates /></b></p>
 </div>
</xsl:template>

Erl�uterung:

Der Beispielausschnitt zeigt eine Template-Definition f�r angenommene Elemente, die aus dem Namensraum autor stammen. In XML w�ren das beispielsweise Elemente, die in der Form <autor:vorname>...</autor:vorname> notiert sind. Das Template ermittelt mit nach unten name(.) den vollst�ndigen Namen des aktuellen Knotens, also z.B. autor:vorname, und mit local-name(.) den lokalen Namensteil, also z.B. vorname. Anschlie�end werden mit Seite xsl:apply-templates untergeordnete Template-Definitionen angewendet.

nach obennach unten

XPath 1.0 name() (Namen eines Knoten-Sets ermitteln)

Ermittelt den vollst�ndigen Namen eines Knoten-Sets, gegebenenfalls auch mit XML-Namensraumangabe.

Erwartet folgende Argumente:

[Knoten-Set] (optional) Ein Knoten-Set bzw. einen Pfad nach Seite XPath-Syntax, dessen vollst�ndiger Name ermittelt werden soll. Fehlt die Angabe des Arguments, wird die Funktion auf das jeweils aktuelle Element angewendet.

Liefert den Namen des ausgew�hlten Knoten-Sets zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template name="Kurzbeschreibung">
 <b><xsl:value-of select="name()" /><xsl:text>: </xsl:text></b><xsl:value-of select="." />
</xsl:template>

Erl�uterung:

Das Beispiel definiert ein Template f�r ein XML-Element namens Kurzbeschreibung. Darin wird definiert, dass zuerst der Name des Elements ausgegeben wird, also Kurzbeschreibung, dann ein Doppelpunkt, und dann der Inhalt des Elements. Die Ausgabe des Elementnamens wird erreicht durch die Seite xsl:value-of-Anweisung, die im select-Attribut als Wert die Funktion name() zugewiesen bekommt.

nach obennach unten

XPath 1.0 namespace-uri() (Namensraum eines Elements ermitteln)

Ermittelt den URI f�r die DTD zum verwendeten XML-Namensraum. Es handelt sich normalerweise um jene Angaben, die bei der Seite xsl:stylesheet-Anweisung im xmlns:-Attribut gemacht wurden. Voraussetzung daf�r, dass ein Wert zur�ckgeliefert wird, ist, dass ein Element eine Namensraumangabe verwendet, also z.B. xsl:template oder xhtml:div.

Erwartet folgende Argumente:

[Knoten-Set] (optional) Ein Knoten-Set bzw. einen Pfad nach Seite XPath-Syntax, dessen URI der DTD f�r den XSL-Namensraum ermittelt werden soll. Fehlt die Angabe des Arguments, wird die Funktion auf das jeweils aktuelle Element angewendet.

Liefert den URI zur�ck, die f�r den zugeh�rigen Namensraum des Elements zur�ckgegeben wurde.

Beispielauszug aus einem XSL-Stylesheet:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html><head></head><body>
  <b><xsl:text>XSL-URI dieses Stylesheets: </xsl:text></b>
     <xsl:value-of select="namespace-uri(document('')/*)" />
 </body></html>
</xsl:template>

</xsl:stylesheet>

Erl�uterung:

Das Beispiel zeigt ein vollst�ndiges XSLT-Stylesheet. Im einleitenden stylesheet-Tag wird wie �blich mit xmlns:xsl="http://www.w3.org/1999/XSL/Transform" der URI der DTD f�r den XSL-Namensraum angegeben. Im weiteren Verlauf des Stylesheets wird ein Template f�r das Wurzelelement definiert. Darin wird aber einfach nur der URI des XSL-Namensraums f�r dieses Stylesheet ausgegeben. Dazu wird bei der Seite xsl:value-of-Anweisung im select-Attribut als Wert die Funktion namespace-uri() �bergeben. Die Ausgabe im Beispiel w�rde lauten:
XSL-URI dieses Stylesheets: http://www.w3.org/1999/XSL/Transform

Im Beispiel wird der Funktion namespace-uri() als Argument document('')/* �bergeben. Das ist folgenderma�en zu verstehen: es soll das Dokument-Element ermittelt werden, was am einfachsten durch die Funktion nach oben document('') (mit dem Leerstring als Parameter) bewerkstelligt wird. Mit dem daran anschlie�enden /* wird, da sich der gesamte Ausdruck innerhalb eines Aufrufs von namespace-uri() befindet, der Namensraum-URI f�r alle Elemente innerhalb dieses Dokument-Elements ermittelt.

nach obennach unten

XPath 1.0 normalize-space() (Leerzeichen am Anfang und Ende einer Zeichenkette entfernen)

Entfernt am Anfang und am Ende der �bergebenen Zeichenkette die Leerraumzeichen und ersetzt mehrere aufeinanderfolgende Leerraumzeichen in der Zeichenkette durch ein einziges Leerzeichen (#x20). Leerraumzeichen sind die Zeichen mit den Hexadezimalwerten #x20 (einfaches Leerzeichen), #x9 (Tabulator-Zeichen), #xD (Wagenr�cklaufzeichen) und #xA (Zeilenvorschub-Zeichen).

Erwartet folgende Argumente:

[Zeichenkette] (optional) Die Zeichenkette, die behandelt werden soll. Fehlt das Argument, wird die Funktion auf den Inhaltsknoten des aktuellen Knotens angewendet, bei einem Element <name>...</name> beispielsweise auf dessen Inhalt, also das, was hier durch die drei P�nktchen markiert ist.

Liefert die behandelte Zeichenkette wieder zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="augenfarbe">
  <tr>
  <td><xsl:text>Augenfarbe</xsl:text></td>
  <td><xsl:value-of select="normalize-space()" /></td>
  </tr>
</xsl:template>

Erl�uterung:

Das Beispiel definiert ein Template f�r ein XML-Element namens augenfarbe. Darin wird eine HTML-Tabellenzeile konstruiert. In der ersten Spalte steht der fixe Text Augenfarbe, und in der zweiten Spalte wird der Wert des Elements ausgegeben. Dabei werden jedoch zuvor f�hrende und abschlie�ende Leerraumzeichen, die z.B. durch unachtsames Editieren oder Behandlung durch andere Programme entstanden sein k�nnten, entfernt. Um das zu erreichen, wird nicht einfach <xsl:value-of select="." /> notiert, sondern <xsl:value-of select="normalize-space()" />.

nach obennach unten

XPath 1.0 not() (Argument verneinen)

Verneint das �bergebene Argument und liefert dessen gegenteiliges Ergebnis zur�ck.

Erwartet folgende Argumente:

[Bedingung] Es kann sich um eine Vergleichsoperation handeln, aber auch um eine andere Funktion, die als R�ckgabewert entweder true oder false liefert.

Liefert true zur�ck, wenn die als Argument �bergebene Bedingung false ergibt, und false, wenn die Bedingung true ergibt.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="geburtsjahr">
 <xsl:if test="not(. &gt; '1980')">
  <xsl:value-of select="." />
 </xsl:if>
</xsl:template>

Erl�uterung:

Das Beispiel zeigt die Template-Definition eines XML-Elements namens geburtsjahr. Das Geburtsjahr soll nur dann ausgegeben werden, wenn der aktuelle Wert nicht gr��er ist als 1980. Dazu wird mit Hilfe der Seite xsl:if-Anweisung eine Bedingung formuliert. Im test-Attribut, das die Bedingung enth�lt, wird mit . &gt; '1980' die Bedingung "aktueller Wert gr��er 1980" formuliert. Der gesamte Ausdruck wird jedoch der Funktion not() als Argument �bergeben, sodass die Bedingung umgekehrt wird und lautet: "aktueller Wert nicht gr��er 1980". Dies ist �brigens das gleiche, wie wenn als Bedingung notiert w�rde: <xsl:if test=". &lt;='1980')">.

nach obennach unten

XPath 1.0 number() (Argument in eine Zahl umwandeln)

Versucht, eine �bergebene Zeichenkette als Zahl zu interpretieren und gibt die ermittelte Zahl zur�ck. Wenn beispielsweise "31" �bergeben wird, wird 31 zur�ckgeliefert. Wird "xyz" �bergeben, wird NaN (not a number) zur�ckgeliefert. Bei �bergabe von "3xy" wird 3 zur�ckgeliefert. Und bei �bergabe von booleschen Werten, also true oder false, wird 0 f�r false und 1 f�r true zur�ckgeliefert. F�hrende und abschlie�ende Leerraumzeichen der �bergebenen Zeichenkette werden ignoriert.

Erwartet folgende Argumente:

[Zeichenkette bzw. Wert] (optional) Es kann sich z.B. um den Inhalt eines Elements oder den Wert einer Variablen handeln, oder um den R�ckgabewert einer anderen Funktion. Fehlt das Argument, wird die Funktion auf den aktuellen Knoteninhalt angewendet, z.B. auf den Inhalt eines Elements.

Liefert die ermittelte Zahl zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="preis">
 <xsl:value-of select="number()" />
</xsl:template>

Erl�uterung:

Das Beispiel definiert ein Template f�r ein XML-Element namens preis. Das Template gibt den Wert des Elements aus, jedoch wird dabei versucht, den Wert numerisch zu interpretieren. Dazu wird im select-Attribut der Seite xsl:value-of-Anweisung die Funktion number() angewendet. Da number() kein Argument �bergeben wird, bezieht sich die Funktion auf den Wert des aktuellen Elements preis.

nach obennach unten

XPath 1.0 position() (Positionsnummer des aktuellen Knotens ermitteln)

Ermittelt, der wievielte Knoten ein aktueller Knoten in einem Knoten-Set ist. Bei einem Element namens liste mit beispielsweise 7 untergeordneten Elementen namens listeneintrag hat das zweite dieser Elemente in Bezug auf liste die Positionsnummer 2.

Erwartet keine Argumente.

Liefert die Ordnungszahl des aktuellen Knotens zur�ck. Beim ersten Knoten 1, beim zweiten 2 usw.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:variable name="anzahl" select="count(//listeneintrag)" />
...
<xsl:template match="liste">
  <xsl:for-each select="listeneintrag">
  <p>
    <xsl:value-of select="position()" />
    <xsl:text>. von </xsl:text>
    <xsl:value-of select="$anzahl" />
    <xsl:text>: </xsl:text>
    <xsl:value-of select="." />
  </p>
  </xsl:for-each>
</xsl:template>

Erl�uterung:

Das Beispiel nimmt an, dass es ein XML-Element namens liste gibt, das aus mehreren Unterelementen listeneintrag besteht. Zun�chst wird mit Seite xsl:variable eine Variable namens anzahl definiert, in der die Anzahl der Listeneintr�ge gespeichert wird. Dazu wird im select-Attribut die Funktion nach oben count() angewendet. Als Argument wird ihr das Element listeneintrag �bergeben. In der Seite for-each-Schleife, die alle Listeneintr�ge abarbeitet, wird vor dem Text des Listeneintrags jeweils die aktuelle Positionsnummer mit position() ausgegeben, und dahinter die Gesamtzahl, die in der Variablen anzahl gespeichert ist, also etwa so:
1. von 5: Text des ersten Listeneintrags
2. von 5: Text des zweiten Listeneintrags

Beachten Sie:

<xsl:value-of select="listeneintrag[position()=1]" /> kann auch so notiert werden:
<xsl:value-of select="listeneintrag[1]" />

<xsl:value-of select="listeneintrag[position()=last()]" /> kann auch so notiert werden:
<xsl:value-of select="listeneintrag[last()]" />

<xsl:if test="position()=1"> ist etwas anderes als <xsl:if test="1">! Im ersten Fall wird gepr�ft, ob der aktuell bearbeitete Knoten der erste ist, im zweiten Fall wird gepr�ft, ob der aktuelle Kontext logisch gesehen wahr ist.

nach obennach unten

XPath 1.0 round() (kaufm�nnisch auf- oder abrunden)

Rundet eine Bruchzahl zur n�chstgelegenen Ganzzahl auf. Bei Bruchwerten kleiner als [Wert],5 wird abgerundet, bei Bruchwerten gr��er gleich [Wert],5 aufgerundet. Die Zahl 5,49 wird also auf 5 abgerundet, und 5,5 auf 6 aufgerundet.

Erwartet folgende Argumente:

[Zahl] Die zu rundende Zahl. Es kann sich auch um den Inhalt eines Knotens oder den einer Variablen handeln. Dabei wird der Wert intern zun�chst als Zahl umgewandelt, und zwar so, als w�rde die Funktion nach oben number() angewendet.

Liefert die Ganzzahl zur�ck, auf die auf- oder abgerundet wurde.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:value-of select="round(betrag)" /><xsl:text >.-</xsl:text>

Erl�uterung:

Im Beispiel wird von einem XML-Element namens betrag angenommen, dass es einen "krummen" Wert enth�lt, der kaufm�nnisch gerundet werden soll. Dazu wird beim Ausw�hlen des Inhalts von betrag mit Seite xsl:value-of im select-Attribut die Funktion round() aufgerufen. Sie bewirkt, dass der Elementinhalt aufgerundet wird, bevor er in den Ergebnisbaum der Datenausgabe �bernommen wird.

nach obennach unten

XPath 1.0 starts-with() (�berpr�fen, ob Zeichenkette mit bestimmter Teilzeichenkette beginnt)

Findet heraus, ob am Beginn einer Zeichenkette eine bestimmte Teilzeichenkette vorkommt.

Erwartet folgende Argumente:

[Zeichenkette] Zeichenkette, die durchsucht werden soll. Es kann sich z.B. um den Inhalt eines Elements oder den Wert einer Variablen handeln.
[Teilzeichenkette] Diejenige Zeichenfolge, nach der am Beginn der durchsuchten Zeichenkette gesucht wird. Es kann sich direkt um Text handeln, aber auch um den Inhalt eines Knotens oder den Wert einer Variablen.

Liefert true zur�ck, wenn die Zeichenkette mit der Teilzeichenkette beginnt, und false, wenn sie nicht damit beginnt.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="mitarbeitername">
<p>
 <xsl:if test="starts-with(.,'Frau')">
  <b><xsl:value-of select="." /></b>
 </xsl:if>
  <xsl:if test="starts-with(.,'Herr')">
  <i><xsl:value-of select="." /></i>
 </xsl:if>
</p>
</xsl:template>

Erl�uterung:

Im Beispiel wird f�r ein XML-Element namens mitarbeitername ein Template definiert. Dabei wird mit Seite xsl:if abgefragt, ob der Elementinhalt mit Frau oder mit Herr beginnt. Im Fall "Frau" wird der Name in Fettschrift in den HTML-Ergebnisbaum geschrieben. Eintr�ge, die mit Herr beginnen, werden dagegen in Kursivschrift geschrieben. Die xsl:if-Abfrage benutzt dazu die Funktion starts-with(). Als Parameter werden der Funktion der Inhalt des aktuellen Knotens (.) �bergeben, sowie die Suchzeichenfolge Frau bzw. Herr.

nach obennach unten

XPath 1.0 string() (Argument in Zeichenkette umwandeln)

Interpretiert ein �bergebenes Argument als Zeichenkette und gibt die ermittelte Zeichenkette zur�ck. Wenn beispielsweise 31 �bergeben wird, wird "31" zur�ckgeliefert. Negative Zahlen erhalten ein vorangestelltes Minuszeichen, Bruchzahlen einen Dezimalpunkt. Bei �bergabe von booleschen Werten, also true oder false, wird "true" bzw. "false" als Zeichenkette zur�ckgeliefert.

Erwartet folgende Argumente:

[Argument] (optional) Es kann sich z.B. um den Inhalt eines Elements oder den Wert einer Variablen handeln, oder um den R�ckgabewert einer anderen Funktion. Fehlt das Argument, wird die Funktion auf den aktuellen Knoteninhalt angewendet, z.B. auf den Inhalt eines Elements.

Liefert die ermittelte Zeichenkette zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="spannung">
 <xsl:value-of select="string()" /><b><xsl:text> Volt</xsl:text></b>
</xsl:template>

Erl�uterung:

Das Beispiel definiert ein Template f�r ein XML-Element namens spannung. Das Template gibt den Wert des Elements aus, jedoch wird dabei der numerische Inhalt in eine Zeichenkette umgewandelt. Dazu wird im select-Attribut der Seite xsl:value-of-Anweisung die Funktion string() angewendet. Da string() kein Argument �bergeben wird, bezieht sich die Funktion auf den Wert des aktuellen Elements spannung.

nach obennach unten

XPath 1.0 string-length() (Anzahl Zeichen einer Zeichenkette ermitteln)

Ermittelt, wie lang eine Zeichenkette ist.

Erwartet folgende Argumente:

[Zeichenkette] (optional) Zeichenkette, deren L�nge ermittelt werden soll. Es kann sich z.B. um den Inhalt eines Elements oder den Wert einer Variablen handeln. Falls das Argument keine Zeichenkette ist, sondern beispielsweise eine Zahl, wird es zun�chst intern mit der nach oben string()-Funktion in eine Zeichenkette umgewandelt. Fehlt das Argument, wird die Funktion auf den aktuellen Knoteninhalt angewendet, z.B. auf den Inhalt eines Elements.

Liefert die Anzahl der Zeichen zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="mitteilungstext">
  <xsl:choose>
   <xsl:when test="string-length() &lt; 20">
    <p><b>Fehler: zu geringe Mitteilungsmenge!</b></p>
   </xsl:when>
   <xsl:otherwise>
    <p><xsl:value-of select="." /></p>
   </xsl:otherwise>
  </xsl:choose>
</xsl:template>

Erl�uterung:

Das Beispiel definiert ein Template f�r ein XML-Element namens mitteilungstext. Der Inhalt dieses Elements soll nur dann in den Ergebnisbaum �bernommen werden, wenn er mindestens 20 Zeichen besitzt. Dazu wird mit Seite xsl:choose eine logische Verzweigung realisiert. Im xsl:when-Zweig wird abgefragt, ob der Elementinhalt kleiner als 20 Zeichen ist. Dazu wird die Funktion string-length() angewendet. Da kein Argument �bergeben wird, bezieht sie sich automatisch auf den Inhalt des aktuellen Elements. Wenn weniger als 20 Zeichen ermittelt werden, wird eine Fehlermeldung in die Ausgabe geschrieben. Andernfalls (xsl:otherwise) wird der Inhalt von mitteilungstext in den Ergebnisbaum geschrieben.

nach obennach unten

XPath 1.0 substring() (Teilzeichenkette aus Zeichenkette extrahieren)

Extrahiert aus einer Zeichenkette einen Teil ab einer bestimmten Zeichenposition und auf Wunsch eine bestimmte Anzahl von Zeichen.

Erwartet folgende Argumente:

[Zeichenkette] Zeichenkette, aus der ein Teil extrahiert werden soll. Es kann sich z.B. um den Inhalt eines Elements oder den Wert einer Variablen handeln. Falls das Argument keine Zeichenkette ist, sondern beispielsweise eine Zahl, wird es zun�chst intern mit der nach oben string()-Funktion in eine Zeichenkette umgewandelt.
[Zahl] Position innerhalb der Zeichenkette, ab der extrahiert werden soll. Wenn z.B. ab dem 1. Zeichen extrahiert werden soll, muss 1 �bergeben werden, wenn ab dem 20. Zeichen extrahiert werden soll, ist 20 zu �bergeben.
[Zahl] (optional) Anzahl der Zeichen, die extrahiert werden sollen. Fehlt dieses Argument, wird bis zum Ende der Zeichenkette extrahiert.

Liefert die extrahierte Teilzeichenkette zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="ort">
<tr>
 <td><xsl:value-of select="substring(.,1,5)" /></td>
 <td><xsl:value-of select="substring(.,7)" /></td>
</tr>
</xsl:template>

Erl�uterung:

Das Beispiel definiert ein Template f�r ein XML-Element namens ort, von dem angenommen wird, dass es Daten in der Form 81379 M�nchen enth�lt. Postleitzahl und Ortsname sollen bei der Ausgabe in den Ergebnisbaum auseinandergenommen und in zwei getrennte Tabellenzellen �bernommen werden. Dazu wird dem select-Attribut der Seite xsl:value-of-Anweisung jeweils die Funktion substring() zugewiesen. Sie extrahiert beim ersten der beiden Aufrufe f�r den Inhalt des aktuellen Elements, der mit nach oben current() bzw. . ermittelt wird, die ersten 5 Zeichen, also die Postleitzahl, und beim zweiten Aufruf die Zeichen ab Position 7 bis zum Ende der Ortsangabe, also den Ortsnamen ohne die Postleitzahl.

nach obennach unten

XPath 1.0 substring-after() (Zeichenkette ab einer Position mit Teilzeichenkette ermitteln)

Pr�ft, ob eine Zeichenkette eine bestimmte Teilzeichenkette enth�lt. Ist das der Fall, wird diejenige Restzeichenkette zur�ckgegeben, die nach dem ersten Vorkommen der Teilzeichenkette folgt. Dies ist z.B. sinnvoll, um in Daten, die aus dem Schema Variablenname=zugewiesener Wert bestehen, den Wert zu extrahieren. Analog dazu arbeitet die Funktion substring-before(), die aus den gleichen Daten den Variablennamen extrahieren kann.

Erwartet folgende Argumente:

[Zeichenkette] Zeichenkette, aus der ein Teil extrahiert werden soll. Es kann sich z.B. um den Inhalt eines Elements oder den Wert einer Variablen handeln. Falls das Argument keine Zeichenkette ist, sondern beispielsweise eine Zahl, wird es zun�chst intern mit der nach oben string()-Funktion in eine Zeichenkette umgewandelt.
[Teilzeichenkette] Zeichenkette, die in der zuvor angegebenen Zeichenkette vorkommen soll. Es kann sich auch um ein einzelnes Zeichen handeln.

Liefert die Restzeichenkette hinter der Teilzeichenkette zur�ck, falls die Teilzeichenkette gefunden wurde. Andernfalls wird eine leere Zeichenkette zur�ckgegeben. Die Gegenfunktion substring-before() gibt dementsprechend den Teil der Zeichenkette zur�ck, der vor der Teilzeichenkette steht.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="config-eintrag">
 <th><xsl:value-of select="substring-before(current(),'=')" /></th>
 <td><xsl:value-of select="substring-after(current(),'=')" /></td>
</xsl:template>

Erl�uterung:

Das Beispiel nimmt an, dass es ein XML-Element namens config-eintrag gibt, in dem Bezeichnungen und Werte durch ein Gleichheitszeichen getrennt sind, z.B. Breite=475m. In der Template-Definition f�r dieses Element sollen der Teil vor dem Gleichheitszeichen in eine HTML-Tabellenkopfzelle �bernommen werden, und der Teil hinter dem Gleichheitszeichen in eine Tabellendatenzeile. Dazu wird im ersten Teil dem select-Attribut der Seite xsl:value-of-Anweisung zuerst die Funktion substring-before() zugewiesen, im zweiten Teil die Funktion substring-after(). In beiden F�llen wird der Inhalt des aktuellen Elements, ermittelt mit nach oben current(), durchsucht. Als Zeichenkette, die das Signal f�r die davor bzw. dahinter zu extrahierende Teilzeichenkette ist, dient das Gleichheitszeichen.

nach obennach unten

XPath 1.0 substring-before() (Zeichenkette vor einer Position mit Teilzeichenkette ermitteln)

Ist die Gegenfunktion zu nach oben substring-after(). Beispiel siehe dort.

nach obennach unten

XPath 1.0 sum() (Summe von Zahlenwerten ermitteln)

Ermittelt die Gesamtsumme der Zahlenwerte des Augangsknotens. Wenn Werte nicht als Zahl interpretiert werden k�nnen, wird NaN (not a number) ermittelt.

Erwartet folgende Argumente:

[Knoten-Set] Ein Knoten-Set, f�r das die Summe seiner in Zahlen interpretierten Werte ermittelt werden soll. Sinnvollerweise enth�lt das Knoten-Set mehrere Knoten mit Werten, die als Zahlen interpretierbar sind, und deren Summe aus irgendeinem Grund interessant ist.

Liefert die Summe der ermittelten Werte zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="viereck">
<p>
<b><xsl:value-of select="name()" /> Umfang:</b><xsl:value-of select="sum(@*)" />cm
</p>
</xsl:template>

Erl�uterung:

Das Beispiel zeigt eine Template-Definition f�r ein XML-Element namens viereck, das etwa so notiert sein k�nnte:
<viereck links="12" rechts="12" oben="20" unten="20" />
In der �bersetzung nach HTML wird einfach in einem Textabsatz der Umfang des Vierecks ausgegeben. Dazu wird mit select="sum(@*)" die Summe aller Attributwerte des viereck-Elements ermittelt. Bei dem zuvor notierten XML-Beispiel w�rde also 64 herauskommen, da dies die Summe der Attributwerte 12, 12, 20 und 20 ist. Das Argument @*, das im Beispiel der Funktion sum() �bergeben wird, steht f�r "alle Attribute des Elements".

nach obennach unten

XPath 1.0 system-property() (Systemeigenschaften ermitteln)

Ermittelt Informationen �ber den verwendeten XSLT-Prozessor.

Erwartet folgende Argumente:

[Zeichenkette] Eine Eigenschaft des XSLT-Prozessors. Folgende Angaben sollten von jedem XSLT-Prozessor unterst�tzt werden: 'xsl:version' (Version des XSLT-Standards, der vom Prozessor interpretiert wird), 'xsl:vendor' (Hersteller der Prozessor-Software) und 'xsl:vendor-url' (URI des Herstellers der Prozessor-Software).

Liefert den ermittelten Wert zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="zusatzinfos">
 <p><b><xsl:text>XSL Version: </xsl:text></b>
   <xsl:value-of select="system-property('xsl:version')" /></p>
 <p><b><xsl:text>XSL Prozessor-Hersteller: </xsl:text></b>
   <xsl:value-of select="system-property('xsl:vendor')" /></p>
 <p><b><xsl:text>Hersteller URL-Adresse: </xsl:text></b>
   <xsl:value-of select="system-property('xsl:vendor-url')" /></p>
</xsl:template>

Erl�uterung:

Das Beispiel zeigt, wie man ein XML-Element, das in den XML-Daten beispielsweise als leeres Element definiert sein k�nnte, als Signalgeber benutzen kann, um in einer XSLT-Transformation an die betreffende Stelle bestimmte Daten einzusetzen. Im Beispiel wird ein XML-Element namens zusatzinfos angenommen, das so eine Funktion hat. Denn in der Template-Definition f�r dieses Element wird nicht dessen Inhalt ausgegeben, sondern es werden mit der system-property()-Funktion diverse Eigenschaften des verwendeten XSLT-Prozessors ermittelt und in den HTML-Ergebnisbaum mit �bernommen. Dazu werden jeweils den select-Attributen der Seite xsl:value-of-Anweisungen Aufrufe von system-property() �bergeben.

nach obennach unten

XPath 1.0 translate() (Suchen und Ersetzen von Zeichen in einer Zeichenkette)

Ersetzt einzelne Zeichen in einer Zeichenkette in andere Zeichen.

Erwartet folgende Argumente:

[Zeichenkette] Zeichenkette, in der gesucht und ersetzt werden soll. Es kann sich z.B. um den Inhalt eines Elements oder den Wert einer Variablen handeln. Falls das Argument keine Zeichenkette ist, sondern beispielsweise eine Zahl, wird es zun�chst intern mit der nach oben string()-Funktion in eine Zeichenkette umgewandelt.
[Zeichen] Ein oder mehrere Zeichen, die ersetzt werden sollen.
[Zeichen] Ein oder mehrere Zeichen, durch welche die zuvor angegebenen Zeichen ersetzt werden sollen. M�gliche Angaben sind z.B. ',' oder ']['. Dieses Argument muss �bergeben werden, kann aber auch einen leeren Inhalt haben (''). Dann werden die Zeichen, die im zweiten Argument genannt sind, einfach durch nichts ersetzt, also gel�scht.

Liefert die behandelte Zeichenkette zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:template match="ortsname">
 <b>
 <xsl:value-of select="translate(current(),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')" />
 </b>
</xsl:template>

Erl�uterung:

Das Beispiel definiert ein Template f�r ein XML-Element namens ortsname. Der Inhalt des Elements wird in den Ergebnisbaum ausgegeben, doch dabei werden alle Kleinbuchstaben in Gro�buchstaben umgewandelt. Zu diesem Zweck wird dem select-Attribut der Seite xsl:value-of-Anweisung die Funktion translate() zugewiesen. Diese bestimmt f�r den Inhalt des aktuellen Elements, ermittelt mit nach oben current(), dass die Kleinbuchstaben von a bis z durch entsprechende Gro�buchstaben ersetzt werden.

nach obennach unten

XPath 1.0 true() (booleschen Wert f�r "wahr" erzeugen)

Bejaht einen Ausdruck.

Erwartet keine Argumente

Liefert einfach den logischen Wert true zur�ck.

Beispielauszug aus einem XSL-Stylesheet:

<xsl:variable name="passwortanzeige" select="true()"/>

<xsl:template name="passwort">
 <xsl:choose>
  <xsl:when test="$passwortanzeige">
    <xsl:value-of select="." />
  </xsl:when>
  <xsl:otherwise>
   <xsl:text>[Passwort]</xsl:text>
  </xsl:otherwise>
 </xsl:choose>
</xsl:template>

Erl�uterung:

Im Beispiel wird mit Seite xsl:variable eine Variable namens passwortanzeige definiert, deren Wert auf den logischen Wert true gesetzt wird. Verantwortlich daf�r ist der Einsatz der Funktion true(), die einfach dem select-Attribut zugewiesen wird und dadurch f�r das Setzen des Wertes sorgt. Weiterhin zeigt das Beispiel eine Template-Definition f�r ein Element namens passwort. Innerhalb dieser Template-Definition wird in einer Seite xsl:choose-Konstruktion abgefragt, wie es mit der Passwortanzeige steht. Wenn die Variable $passwortanzeige wahr ist, wird mit <xsl:value-of select="." /> der Wert des passwort-Elements ausgegeben. Andernfalls wird nur die Zeichenkette [Passwort] ausgegeben.

nach obennach unten

XPath 1.0 unparsed-entity-uri() (ungeparste Eintr�ge der DTD ermitteln)

Erlaubt es, auf DTD-Eintr�ge zuzugreifen, die vom Parser nicht analysiert wurden. Dies betrifft vor allem Seite Entities f�r externe Ressourcen.

Erwartet folgende Argumente:

[Name] Der Name des nicht geparsten DTD-Eintrags (Entities).

Liefert den URI des Entities zur�ck, der hinter SYSTEM oder PUBLIC angegeben ist. Die entsprechende Adresse kann dann im Ergebnisbaum an eine geeignete Stelle eingesetzt werden.

Beispielauszug aus einer DTD:

<!ENTITY firmenlogo SYSTEM "images/logo.jpg" NDATA JPEG>

Beispielauszug aus einer entsprechenden XML-Datei:

<bild quelle="firmenlogo" />

Beispielauszug aus einem zugeh�rigen XSL-Stylesheet:

<xsl:template match="bild">
 <img src="{unparsed-entity-uri(@quelle)}" alt="Firmenlogo" />
</xsl:template>

Erl�uterung:

Das Beispiel zeigt eine externe Entity-Definition in einer DTD. Dort wird ein Entity namens firmenlogo definiert, das eine JPEG-Grafik zugewiesen bekommt. Im zweiten Teil des Beispiels wird gezeigt, wie dieses Entity in einer XML-Datei zur Anwendung gelangt. Ein XML-Element namens bild hat ein Attribut namens quelle, dem das Entity zugewiesen wird. Der dritte Teil des Beispiels schlie�lich zeigt eine zugeh�rige Definition im XSL-Stylesheet. Dort wird f�r das Element bild ein Template definiert, in dem das XML-Konstrukt in ein HTML-Konstrukt zum Anzeigen einer Grafik �bersetzt wird. Dem src-Attribut des img-Elements wird dabei die Funktion unparsed-entity-uri() zugewiesen. Der Funktion wird als Argument das Attribut @quelle des bild-Elements �bergeben. Die Funktion liefert den zugeh�rigen URI wie in der DTD definiert zur�ck, also images/logo.jpg.
Beachten Sie die geschweiften Klammern, die erforderlich sind, wenn eine XPath-Funktion im Code des Ergebnisbaums verwendet wird. Mehr dazu im Abschnitt �ber Seite XPath-Syntax.

 nach oben
weiter Seite Einf�hrung in JavaScript und DOM
zur�ck Seite XPath-Syntax
 

© 2007 Seite Impressum