XPath/XQuery-Funktionen: Sequenz
Die Sequenz-Erweiterungsfunktionen von Altova können in XPath- und XQuery-Ausdrücken verwendet werden und stellen zusätzliche Funktionen für die Verarbeitung von Daten zur Verfügung. Die Funktionen in diesem Abschnitt können mit dem XPath 3.0- und XQuery 3.0-Prozessor von Altova verwendet werden. Sie stehen im Zusammenhang mit XPath/XQuery zur Verfügung.
Anmerkung zur Benennung von Funktionen und zur Anwendbarkeit der Sprache
Altova-Erweiterungsfunktionen können in XPath/XQuery-Ausdrücken verwendet werden. Dadurch stehen neben den Funktionen in der Standardbibliothek der XPath-, XQuery- und XSLT-Funktionen zusätzliche Funktionen zur Verfügung. Die Altova-Erweiterungsfunktionen befinden sich im Altova-Erweiterungsfunktions-Namespace, http://www.altova.com/xslt-extensions und sind in diesem Abschnitt mit dem Präfix altova:, das als an diesen Namespace gebunden angenommen wird, gekennzeichnet. Beachten Sie, dass manche Funktionen in zukünftigen Versionen Ihres Produkts eventuell nicht mehr unterstützt werden oder dass sich das Verhalten einzelner Funktionen ändern kann. Um zu sehen, welche Altova-Erweiterungsfunktionen unterstützt werden, lesen Sie bitte die Dokumentation zur jeweiligen Release.
|
altova:attributes(AttributeName als xs:string) als attribute()* XP3.1 XQ3.1 Gibt alle Attribute zurück, die einen lokalen Namen haben, der mit dem im Input-Argument AttributeName angegebenen Namen identisch ist. Die Groß- und Kleinschreibung wird bei der Suche, die entlang der attribute:: Achse durchgeführt wird, beachtet. Das bedeutet, dass der Kontext-Node der Parent-Element-Node sein muss.
altova:attributes(AttributeName als xs:string, SearchOptions als xs:string) als attribute()* XP3.1 XQ3.1 Gibt alle Attribute zurück, die einen lokalen Namen haben, der mit dem im Input-Argument AttributeName angegebenen Namen identisch ist. Die Groß- und Kleinschreibung wird bei der Suche, die entlang der attribute:: Achse durchgeführt wird, beachtet. Der Kontext-Node muss der Parent-Element-Node sein. Das zweite Argument ist ein String, der Options-Flags enthält. Zur Verfügung stehen die folgenden Flags: f = Wenn diese Option definiert ist, liefert AttributeName eine vollständige Übereinstimmung; andernfalls muss AttributeName nur teilweise mit einem Attributnamen übereinstimmen, damit dieses Attribut zurückgegeben wird. Wenn f z.B. nicht definiert ist, gibt MyAtt MyAttribute zurück; p = inkludiert das Namespace-Präfix in die Suche; AttributeName sollte in diesem Fall das Namespace-Präfix enthalten, z.B.: altova:MyAttribute.
|
altova:elements(ElementName als xs:string) als element()* XP3.1 XQ3.1 Gibt alle Elemente zurück, die einen lokalen Namen haben, der mit dem im Input-Argument ElementName angegebenen Namen identisch ist. Die Groß- und Kleinschreibung wird bei der Suche, die entlang der child:: Achse durchgeführt wird, beachtet. Der Kontext-Node muss der Parent-Node des gesuchten Elements sein.
altova:elements(ElementName als xs:string, SearchOptions als xs:string) als element()* XP3.1 XQ3.1 Gibt alle Elemente zurück, die einen lokalen Namen haben, der mit dem im Input-Argument ElementName angegebenen Namen identisch ist. Die Groß- und Kleinschreibung wird bei der Suche, die entlang der child:: Achse durchgeführt wird, beachtet. Der Kontext-Node muss der Parent-Node des gesuchten Elements sein. Das zweite Argument ist ein String, der Options-Flags enthält. Zur Verfügung stehen die folgenden Flags: f = Wenn diese Option definiert ist, liefert ElementName eine vollständige Übereinstimmung; andernfalls muss ElementName nur teilweise mit einem Elementnamen übereinstimmen, damit dieses Element zurückgegeben wird. Wenn f z.B. nicht definiert ist, gibt MyElem MyElement zurück; p = inkludiert das Namespace-Präfix in die Suche; ElementName sollte in diesem Fall das Namespace-Präfix enthalten, z.B.: altova:MyElement.
|
altova:find-first( (item()*), (CheckFunction( item() als xs:boolean) ) als item()? XP3.1 XQ3.1 Diese Funktion verwendet zwei Argumente. Das erste Argument ist eine Sequenz von einem oder mehreren Elementen eines beliebigen Datentyps. Das zweite Argument, Condition, ist eine Referenz zu einer XPath-Funktion, die ein Argument erhält. (hat einen Stellenwert 1) und einen Booleschen Wert zurückgibt. Jedes Element von Sequence wird der Reihe nach der in Condition referenzierten Funktion bereitgestellt. (Beachten Sie: Die Funktion hat ein einziges Argument.) Das erste Sequence Element, bei dem das Resultat von Condition true() ist, wird als das Ergebnis von altova:find-first zurückgegeben. Anschließend wird die Iteration gestoppt.
|
altova:find-first-combination((Seq-01 as item()*), (Seq-02 as item()*), (Condition( Seq-01-Item, Seq-02-Item as xs:boolean)) as item()* XP3.1 XQ3.1 Diese Funktion verwendet drei Argumente:
•Die ersten beiden Argumente, Seq-01 und Seq-02, sind Sequenzen von einem oder mehreren Elementen eines beliebigen Datentyps. •Das dritte Argument, Condition, ist eine Referenz auf eine XPath-Funktion, die zwei Argumente erhält (d.h. eine Stelligkeit 2 hat) und einen Booleschen Wert zurückgibt.
Die Elemente von Seq-01 und Seq-02 werden als die Argumente der Funktion Condition in geordneten Paaren übergeben (je ein Element aus jeder Sequenz bildet ein Paar). Die Paare sind folgendermaßen geordnet. If Seq-01 = X1, X2, X3 ... Xn And Seq-02 = Y1, Y2, Y3 ... Yn Then (X1 Y1), (X1 Y2), (X1 Y3) ... (X1 Yn), (X2 Y1), (X2 Y2) ... (Xn Yn)
Das erste geordnete Paar, bei dem die Funktion Condition zu true() ausgewertet wird, wird als Ergebnis von altova:find-first-combination zurückgegeben. Beachten Sie: (i) Wenn die Funktion Condition durch die bereitgestellten Argumentpaare iteriert und nicht ein einziges Mal zu true() ausgewertet wird, so gibt altova:find-first-combination Keine Ergebnisse zurück; (ii) Das Ergebnis von altova:find-first-combination ist immer ein Elementpaar (eines beliebigen Datentyps) oder gar kein Element.
|
altova:find-first-pair((Seq-01 als item()*), (Seq-02 als item()*), (Condition( Seq-01-Item, Seq-02-Item als xs:boolean)) als item()* XP3.1 XQ3.1 Diese Funktion erhält drei Argumente:
•Die ersten beiden Argumente, Seq-01 und Seq-02, sind Sequenzen von einem oder mehreren Elementen eines beliebigen Datentyps. •Das dritte Argument, Condition, ist eine Referenz auf eine XPath-Funktion, die zwei Argumente erhält (d.h. eine Stelligkeit 2 hat) und einen Booleschen Wert zurückgibt.
Die Elemente von Seq-01 und Seq-02 werden als die Argumente der Funktion Condition in geordneten Paaren übergeben. Die Paare sind folgendermaßen geordnet. If Seq-01 = X1, X2, X3 ... Xn And Seq-02 = Y1, Y2, Y3 ... Yn Then (X1 Y1), (X2 Y2), (X3 Y3) ... (Xn Yn)
Das erste geordnete Paar, bei dem die Funktion Condition zu true() ausgewertet wird, wird als Ergebnis von altova:find-first-pair zurückgegeben. Beachten Sie: (i) Wenn die Funktion Condition durch die bereitgestellten Argumentpaare iteriert und nicht ein einziges Mal zu true() ausgewertet wird, so gibt altova:find-first-pair Keine Ergebnisse zurück; (ii) Das Ergebnis von altova:find-first-pair ist immer ein Elementpaar (eines beliebigen Datentyps) oder gar kein Element.
|
altova:find-first-pair-pos((Seq-01 as item()*), (Seq-02 as item()*), (Condition( Seq-01-Item, Seq-02-Item as xs:boolean)) as xs:integer XP3.1 XQ3.1 Diese Funktion erhält drei Argumente:
•Die ersten beiden Argumente, Seq-01 und Seq-02, sind Sequenzen von einem oder mehreren Elementen eines beliebigen Datentyps. •Das dritte Argument, Condition, ist eine Referenz auf eine XPath-Funktion, die zwei Argumente erhält (d.h. eine Stelligkeit 2 hat) und einen Booleschen Wert zurückgibt.
Die Elemente von Seq-01 und Seq-02 werden als die Argumente der Funktion Condition in geordneten Paaren übergeben. Die Paare sind folgendermaßen geordnet. If Seq-01 = X1, X2, X3 ... Xn And Seq-02 = Y1, Y2, Y3 ... Yn Then (X1 Y1), (X2 Y2), (X3 Y3) ... (Xn Yn)
Als Ergebnis von altova:find-first-pair-pos wird die Indexposition des ersten geordneten Paars, bei dem die Funktion Condition zu true() ausgewertet wird, zurückgegeben. Beachten Sie: Wenn die Funktion Condition durch die bereitgestellten Argumentpaare iteriert und kein einziges Mal zu true() ausgewertet wird, so gibt altova:find-first-pair-pos Keine Ergebnisse zurück.
|
altova:find-first-pos( (item()*), (CheckFunction( item() als xs:boolean) ) als xs:integer? XP3.1 XQ3.1 Diese Funktion verwendet zwei Argumente. Das erste Argument ist eine Sequenz von einem oder mehreren Elementen eines beliebigen Datentyps. Das zweite Argument, Condition, ist eine Referenz zu einer XPath-Funktion, die ein Argument erhält. (hat einen Stellenwert 1) und einen Booleschen Wert zurückgibt. Jedes Element von Sequence wird der Reihe nach der in Condition referenzierten Funktion bereitgestellt. (Beachten Sie: Die Funktion hat ein einziges Argument.) Das erste Sequence Element, bei dem das Resultat von Condition true() ist, wird als das Ergebnis von altova:find-first-pos zurückgegeben. Anschließend wird die Iteration gestoppt.
|
altova:for-each-attribute-pair(Seq1 als element()?, Seq2 als element()?, Function als function()) als item()* XP3.1 XQ3.1 Die beiden ersten Argumente identifizieren zwei Elemente, anhand deren Attribute Attributpaare gebildet werden, wobei das eine Attribut eines Paars aus dem ersten Element und das andere aus dem zweiten Element stammt. Die Attributpaare werden auf Basis ihres übereinstimmenden Namens ausgewählt und alphabetisch (nach ihren Namen) zu einer Gruppe geordnet. Falls es zu einem Attribut im anderen Element keine Entsprechung gibt, ist das Paar "nicht verbunden", d.h. es besteht nur aus einem Mitglied. Das Funktionselement (das dritte Argument Function) wird auf die einzelnen Paare (verbundene und nicht verbundene) in der Sequenz der Paare separat angewendet, wodurch als Ausgabe eine Sequenz von Einträgen erzeugt wird.
|
altova:for-each-combination(FirstSequence als item()*, SecondSequence als item()*, Function($i,$j){$i || $j} ) als item()* XP3.1 XQ3.1 Die Elemente der zwei Sequenzen in den ersten beiden Argumenten werden miteinander kombiniert, so dass jedes Element in der ersten Sequenz der Reihe nach einmal mit jedem Element in der zweiten Sequenz kombiniert wird. Die als drittes Argument angegebene Funktion wird auf die einzelnen Kombinationen in der erzeugten Sequenz angewendet, wodurch als Ausgabe eine Sequenz von Elementen erzeugt wird (siehe Beispiel).
| |
u |
altova:for-each-matching-attribute-pair(Seq1 als element()?, Seq2 als element()?, Function als function()) als item()* XP3.1 XQ3.1 Die beiden ersten Argumente identifizieren zwei Elemente, anhand deren Attribute Attributpaare gebildet werden, wobei das eine Attribut eines Paars aus dem ersten Element und das andere aus dem zweiten Element stammt. Die Attributpaare werden auf Basis ihres übereinstimmenden Namens ausgewählt und alphabetisch (nach ihren Namen) zu einer Gruppe geordnet. Falls es zu einem Attribut im anderen Element keine Entsprechung gibt, wird kein Paar gebildet. Das Funktionselement (das dritte Argument Function) wird auf die einzelnen Paare in der Sequenz der Paare separat angewendet, wodurch als Ausgabe eine Sequenz von Einträgen erzeugt wird.
|
altova:substitute-empty(FirstSequence als item()*, SecondSequence als item()) als item()* XP3.1 XQ3.1 Wenn FirstSequence leer ist, wird SecondSequence zurückgegeben. Wenn FirstSequence nicht leer ist, wird FirstSequence zurückgegeben.
|