fn:unordered
(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
Rückgabewert: Eine Sequenz, in der die Reihenfolge der Items infolge einer möglichen Optimierung durch die Anwendung nicht vorherbestimmbar ist.
Aufruf/Argumente:
fn:unordered($eingabesequenz)
$eingabesequenz:
Eine Sequenz, die sich in der Regel aus der Verarbeitung eines XPath-Ausdrucks ergibt, dessen Verarbeitung optimiert werden soll.
Verwendungszweck:
Die Funktion fn:unordered() nimmt einen XPath-Ausdruck entgegen, der eine Sequenz erzeugt (theoretisch auch eine literale Eingabesequenz, siehe Hinweis), und markiert die resultierende Ergebnissequenz als sogenannte »ungeordnete« (unordered) Sequenz. Dies erlaubt einer Anwendung explizit, die Verarbeitung dieses XPath-Ausdrucks zu optimieren, ohne auf die regulär aus dem Ausdruck resultierende Reihenfolge der Items Rücksicht nehmen zu müssen, wie sie sich z.B. aus der Dokumentreihenfolge der Quelle ergibt.
Die Reihenfolge, in der die Ergebnissequenz ausgegeben wird, ist daher unbestimmt (bzw. abhängig von der Reaktion der Anwendung auf die jeweilige Struktur der abgefragten Quelle).
Die Anwendung von fn:unordered() ist dann sinnvoll, wenn die Verarbeitung der Abfrage durch sie beschleunigt werden kann und gleichzeitig die Reihenfolge der Items in der resultierenden Sequenz irrelevant ist. Dies ist beispielsweise dann der Fall, wenn die Sequenz anschließend sortiert werden soll, die Reihenfolge also voraussichtlich nicht erhalten bleibt.
Hinweis – Anwendung auf literale Sequenz sinnlos
Die Anwendung von fn:unordered() auf eine literale (d.h. direkt übergebene) Eingabesequenz hat wenig Sinn, da die Funktion diese unverändert wieder ausgibt (es wird also keine Zufallsreihenfolge der Items erzeugt, wie möglicherweise angenommen werden könnte).
Einschätzung der Relevanz für XSLT:
Die Funktion fn:unordered() wird vermutlich eher im Rahmen der Verarbeitung von Abfragen im reinen XQuery-Kontext, als für XPath im Kontext von XSLT von Bedeutung sein.
Beispiel – Anwendung in XQuery-Abfrage:
fn:unordered(
for $a in $preisliste_1/buecher/buch,
$b in $preisliste_2/buecher/buch
where $a/isbn = $b/isbn
and $a/preis > $b/preis
return <buch>{ $a/titel, $a/preis, $b/preis }</buch>
)
Dieser Ausdruck (eine XQuery-Abfrage) vergleicht zwei Preislisten von Büchern und gibt eine Sequenz jener Bücher zurück, die in Liste 2 billiger sind als in Liste 1. Die zu vergleichenden Bücher werden über ihre (identischen) ISBN-Nummern identifiziert. Die Funktion fn:unordered() gewährt der Anwendung die Freiheit, die Abfrage in jeder erdenklichen Weise zu optimieren.
Funktionsdefinition:
XPath 1.0:
Funktion nicht verfügbar
fn:unordered($sourceSeq as item()*) as item()*
<< 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