fn:index-of

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)

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

   

Kategorie: Funktionen für Sequenzen

Herkunft: XPath 2.0

Rückgabewert: Eine Sequenz aus ein oder mehreren Ganzzahlen xs:integer; die von 1 aufwärts gezählte Indexziffer(n), die die Position(en) des gesuchten Wertes in der Eingabesequenz beschreibt.

Aufruf/Argumente:

fn:index-of($eingabesequenz?, $vergleichswert, $collation-URI?)

$eingabesequenz:
Eine Sequenz aus ein oder mehreren atomaren Items vom Typ xs:anyAtomicType. Befinden sich in der Eingabesequenz Items nicht ato­maren Typs (z.B. Nodes oder Tokenlisten), so werden die betreffenden Items im Vorfeld atomisiert.

$vergleichswert:
Obligatorisch. Ein atomarer Wert vom Typ xs:anyAto­micType, dessen Auftreten und Position in der Eingabesequenz untersucht werden soll.

$collation-URI:
Optional. Das dritte Argument besteht aus einem String xs:string, der den URI-String der für Stringvergleiche gegebenenfalls anzuwendenden Collation benennt. Der Wert muss lexikalisch dem Typ xs:anyURI entsprechen. Ist dies nicht der Fall, wird eine Fehlermeldung ausgegeben (»Invalid collationURI«).

Verwendungszweck:

Die Funktion untersucht eine Eingabesequenz auf das Vorkommen eines ebenfalls übergebenen Vergleichswertes. Sowohl die Items der Eingabesequenz als auch der Vergleichswert müssen atomare Werte sein. Befinden sich beispielsweise Nodes in der Eingabesequenz, so wird deren Wert im Vorfeld atomisiert (siehe Beispiel 4).

Der Vergleich zwischen einem Item der Eingabesequenz und dem Vergleichs­wert erfolgt gemäß den Regeln des eq-Operators. Für den Vergleich von String­werten wird die Default-Collation herangezogen (sofern vorhanden) oder die­jenige Collation, die durch den URI bezeichnet wird, der als drittes Argument übergeben werden kann. Wird kein drit­tes Argument übergeben, so wird für den Vergleich die Default-Collation her­angezogen. Besteht die untersuchte Sequenz nicht aus Strings, wurde aber ein $collation-URI-Argument übergeben, so wird es ignoriert.

Sind die Typen der Sequenz und des Vergleichswertes unvereinbar und kann ihre Gleichheit daher nicht gemäß des eq-Operators festgestellt werden, so werden sie als verschieden betrachtet. (Achtung: In früheren Versionen von XPath 2.0 wurde stattdessen ein Fehler gemeldet!)

Wird die Gleichheit eines Items der Sequenz mit dem Vergleichswert festge­stellt, so wird die Indexziffer des betreffenden Items der Ergebnissequenz hin­zugefügt. Die Indexziffern beginnen mit 1 für das erste Item der Sequenz. Da die Indexziffern aller gefundenen Übereinstimmungen in gleicher Rei­henfolge hinzugefügt werden, entsteht stets eine Sequenz in aufsteigender Folge.

Wird keine Übereinstimmung gefunden oder ist die Eingabesequenz leer, so wird eine leere Ergebnissequenz zurückgegeben.

Beispiele:

Beispiel 1 – Gesuchter Wert in Eingangssequenz enthalten:

fn:index-of ((15, 25, 35, 45), 35)

gibt (3) zurück.

Beispiel 2 – Gesuchter Wert in Eingangssequenz nicht enthalten:

fn:index-of ((15, 25, 35, 45), 40)

gibt die leere Sequenz () zurück.

Beispiel 3 – Gesuchter Wert in Eingangssequenz mehrfach enthalten:

fn:index-of ((15, 25, 35, 35, 25, 15), 25)

gibt die Sequenz (2, 5) zurück.

Beispiel 4 – Anwendung auf Tokenlistenwerte xs:NMTOKEN:

Besitzt das Attribut @farben den Wert rot grün blau und ist vom Typ xs:NMTO­KEN, dann gilt:

fn:index-of (@farben, "blau")

gibt (3) zurück.

Beim Attribut @farben handelt es sich um eine Tokenliste. Der Typ xs:NMTO­KEN gilt als nicht atomar, also wird der Wert des Attributs entsprechend atomi­siert und in eine Sequenz aus drei Strings aufgespalten.

Funktionsdefinition:

XPath 1.0:

Funktion nicht verfügbar

XPath 2.0:

fn:index-of($seqParam as xs:anyAtomicType*,
            $srchParam as xs:anyAtomicType) as xs:integer*

fn:index-of($seqParam as xs:anyAtomicType*,
            $srchParam as xs:anyAtomicType,
            $collation as xs:string) as xs:integer*

   

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Galileo Press, Rheinwerkallee 4, 53227 Bonn