XPath/XQuery-Funktionen: Sequenz

www.altova.com Alle erweitern/reduzieren Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Anhänge > Informationen zu den Prozessoren > XSLT- und XPath/XQuery-Funktionen > Altova-Erweiterungsfunktionen >

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.

 

XPath-Funktionen (in XPath-Ausdrücken in XSLT verwendet):

XP1 XP2 XP3.1

XSLT-Funktionen (in XPath-Ausdrücken in XSLT verwendet):

Xslt1 XSLT2 XSLT3

XQuery-Funktionen (in XQuery-Ausdrücken in XQuery verwendet):

XQ1 XQ3.1

 

 

Click to expand/collapseattributes [altova:]

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("MyAttribute") gibt MyAttribute()* zurück

 

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:
r = wechselt zu einer Suche mittels Regular Expression; bei AttributeName muss es sich in diesem Fall um einen Regular Expression-Suchstring handeln;

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;
i = wechselt zu einer Suche ohne Berücksichtigung der Groß- und Kleinschreibung;

p = inkludiert das Namespace-Präfix in die Suche; AttributeName sollte in diesem Fall das Namespace-Präfix enthalten, z.B.: altova:MyAttribute.
Die Flags können in jeder Reihenfolge angegeben werden. Ungültige Flags erzeugen eine Fehlermeldung. Sie können ein oder mehrere Flags weglassen. Es ist auch der leere String zulässig. Das Resultat ist dasselbe wie bei Verwendung der Funktion mit nur einem Argument (siehe vorherige Signatur). Unzulässig ist jedoch die Verwendung einer leeren Sequenz als zweites Argument.

altova:attributes("MyAttribute", "rfip") gibt MyAttribute()*  zurück
altova:attributes("MyAttribute", "pri") gibt MyAttribute()*  zurück
altova:attributes("MyAtt", "rip") gibt MyAttribute()* zurück
altova:attributes("MyAttributes", "rfip") gibt keine Übereinstimmung zurück
altova:attributes("MyAttribute", "") gibt MyAttribute()*  zurück
altova:attributes("MyAttribute", "Rip") gibt einen Fehler zurück, dass das Flag unbekannt ist.
altova:attributes("MyAttribute", ) gibt den Fehler zurück, dass das zweite Argument fehlt.

 

 

Click to expand/collapseelements [altova:]

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("MyElement") gibt MyElement()* zurück

 

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:
r = wechselt zu einer Suche mittels Regular Expression; bei ElementName muss es sich in diesem Fall um einen Regular Expression-Suchstring handeln;

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;
i = wechselt zu einer Suche ohne Berücksichtigung der Groß- und Kleinschreibung;

p = inkludiert das Namespace-Präfix in die Suche; ElementName sollte in diesem Fall das Namespace-Präfix enthalten, z.B.: altova:MyElement.
Die Flags können in jeder Reihenfolge angegeben werden. Ungültige Flags erzeugen eine Fehlermeldung. Sie können ein oder mehrere Flags weglassen. Es ist auch der leere String zulässig. Das Resultat ist dasselbe wie bei Verwendung der Funktion mit nur einem Argument (siehe vorherige Signatur). Unzulässig ist jedoch die Verwendung einer leeren Sequenz.

altova:elements("MyElement", "rip") gibt MyElement()*  zurück
altova:elements("MyElement", "pri") gibt MyElement()*  zurück
altova:elements("MyElement", "") gibt MyElement()*  zurück
altova:attributes("MyElem", "rip") gibt MyElement()* zurück
altova:attributes("MyElements", "rfip") gibt keine Übereinstimmung zurück
altova:elements("MyElement", "Rip") gibt einen Fehler zurück, dass das Flag unbekannt ist.
altova:elements("MyElement", ) gibt den Fehler zurück, dass das zweite Argument fehlt.

 

 

Click to expand/collapsefind-first [altova:]

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(5 to 10, function($a) {$a mod 2 = 0}) gibt xs:integer 6 zurück

Das Argument Condition referenziert die XPath 3.0 Inline-Funktion, function(), welche eine Inline-Funktion $a deklariert und diese anschließend definiert. Die einelnen Elemente im Argument Sequence von altova:find-first werden der Reihe nach an $a als sein Input-Wert übergeben. Der Input-Wert wird an der Bedingung in der Funktionsdefinition ($a mod 2 = 0) überprüft. Der erste Input-Wert, der diese Bedingung erfüllt, wird als das Ergebnis von altova:find-first (in diese Fall 6) zurückgegeben.

 

altova:find-first((1 to 10), (function($a) {$a+3=7})) gibt xs:integer 4 zurück

 

Weitere Beispiele

Wenn die Datei C:\Temp\Customers.xml vorhanden ist:

 

altova:find-first( ("C:\Temp\Customers.xml", "http://www.altova.com/index.html"), (doc-available#1) ) gibt C:\Temp\Customers.xml zurück

 

Wenn die Datei C:\Temp\Customers.xml nicht vorhanden ist und http://www.altova.com/index.html vorhanden ist:

 

altova:find-first( ("C:\Temp\Customers.xml", "http://www.altova.com/index.html"), (doc-available#1) ) gibt http://www.altova.com/index.html zurück

 

Wenn weder die Datei C:\Temp\Customers.xml noch http://www.altova.com/index.html vorhanden ist:

 

altova:find-first( ("C:\Temp\Customers.xml", "http://www.altova.com/index.html"), (doc-available#1) ) gibt kein Ergebnis zurück

 

 

Anmerkungen zu den obigen Beispielen

Die XPath 3.0-Funktion, doc-available, erhält ein einziges Argument, das als URI verwendet wird. Sie gibt nur dann true zurück, wenn unter der angegebenen URI ein Dokument-Node gefunden wird. Das Dokument unter der angegebenen URI muss daher ein XML-Dokument sein.
Die Funktion doc-available kann für Condition, das zweite Argument von altova:find-first verwendet werden, da sie nur ein Argument erhält (Stelligkeit=1), da sie ein Element item() als Input erhält (ein String, der als URI verwendet wird) und einen Booleschen Wert zurückgibt.
Beachten Sie, dass doc-available nur referenziert und nicht direkt aufgerufen wird. Das angehängte Suffix #1 gibt eine Funktion mit einer Stelligkeit 1 an. Als Ganzes bedeutet doc-available#1: Verwende die Funktion doc-availabe(), welche die Stelligkeit=1 hat und übergib die einzelnen Elemente in der ersten Sequenz der Reihe nach als einziges Argument an die Funktion. Als Ergebnis wird jeder der beiden Strings an doc-available() übergeben. Die Funktion verwendet den String als URI und überprüft, ob unter der URI ein Dokument-Node vorhanden ist. Wenn dies der Fall ist, wird doc-available() zu true() ausgewertet und der String wird als Ergebnis der Funktion altova:find-first zurückgegeben. Beachten Sie zur Funktion doc-available(), dass relative Pfade relativ zu aktuellen Basis-URI aufgelöst werden. Die Basis-URI ist standardmäßig die URI des XML-Dokuments, von dem aus die Funktion geladen wird.

 

 

Click to expand/collapsefind-first-combination [altova:]

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-combination(11 to 20, 21 to 30, function($a, $b) {$a+$b = 32}) gibt die Sequenz xs:integers (11, 21) zurück
altova:find-first-combination(11 to 20, 21 to 30, function($a, $b) {$a+$b = 33}) gibt die Sequenz xs:integers (11, 22) zurück
altova:find-first-combination(11 to 20, 21 to 30, function($a, $b) {$a+$b = 34}) gibt die Sequenz xs:integers (11, 23) zurück

 

 

Click to expand/collapsefind-first-pair [altova:]

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(11 to 20, 21 to 30, function($a, $b) {$a+$b = 32}) gibt die Sequenz xs:integers (11, 21) zurück
altova:find-first-pair(11 to 20, 21 to 30, function($a, $b) {$a+$b = 33}) gibt Keine Ergebnisse zurück

 

Beachten Sie anhand der zwei Beispiel oben, dass die Paare folgendermaßen geordnet sind: (11, 21) (12, 22) (13, 23)...(20, 30). Aus diesem Grund gibt das zweite Beispiel Keine Ergebnisse zurück (da keine geordnetes Paar die Summe 33 ergibt).

 

 

Click to expand/collapsefind-first-pair-pos [altova:]

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-pair-pos(11 to 20, 21 to 30, function($a, $b) {$a+$b = 32}) gibt 1 zurück
altova:find-first-pair-pos(11 to 20, 21 to 30, function($a, $b) {$a+$b = 33}) gibt Keine Ergebnisse zurück

 

Beachten Sie anhand der zwei Beispiel oben, dass die Paare folgendermaßen geordnet sind: (11, 21) (12, 22) (13, 23)...(20, 30). Im ersten Beispiel gibt die Funktion Condition bei Auswertung des ersten Paars true() zurück, daher wird dessen Indexposition in der Sequenz, 1, zurückgegeben. Das zweite Beispiel gibt Keine Ergebnisse zurück (da keine geordnetes Paar die Summe 33 ergibt).

 

 

Click to expand/collapsefind-first-pos [altova:]

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:find-first-pos(5 to 10, function($a) {$a mod 2 = 0}) gibt xs:integer 2 zurück

Das Argument Condition referenziert die XPath 3.0 Inline-Funktion, function(), welche eine Inline-Funktion $a deklariert und diese anschließend definiert. Die einelnen Elemente im Argument Sequence von altova:find-first-pos werden der Reihe nach an $a als sein Input-Wert übergeben. Der Input-Wert wird an der Bedingung in der Funktionsdefinition ($a mod 2 = 0) überprüft. Die Indexposition in der Sequenz des ersten Input-Werts, die diese Bedingung erfüllt, wird als das Ergebnis von altova:find-first-pos  zurückgegeben (in diesem Fall 2, da 6, der erste Wert in der Sequenz, der die Bedingung erfüllt, sich in der Sequenz an der Indexposition 2 befindet).

 

Weitere Beispiele

Wenn die Datei C:\Temp\Customers.xml vorhanden ist:

 

altova:find-first-pos( ("C:\Temp\Customers.xml", "http://www.altova.com/index.html"), (doc-available#1) ) gibt 1 zurück

 

Wenn die Datei C:\Temp\Customers.xml nicht vorhanden ist und http://www.altova.com/index.html vorhanden ist:

 

altova:find-first-pos( ("C:\Temp\Customers.xml", "http://www.altova.com/index.html"), (doc-available#1) ) gibt 2 zurück

 

Wenn weder die Datei C:\Temp\Customers.xml noch http://www.altova.com/index.html vorhanden ist:

 

altova:find-first-pos( ("C:\Temp\Customers.xml", "http://www.altova.com/index.html"), (doc-available#1) ) gibt kein Ergebnis zurück

 

 

Anmerkungen zu den obigen Beispielen

Die XPath 3.0-Funktion, doc-available, erhält ein einziges Argument, das als URI verwendet wird. Sie gibt nur dann true zurück, wenn unter der angegebenen URI ein Dokument-Node gefunden wird. (Das Dokument unter der angegebenen URI muss daher ein XML-Dokument sein.)
Die Funktion doc-available kann für Condition, das zweite Argument von altova:find-first-pos verwendet werden, da sie nur ein Argument erhält (Stelligkeit=1), da sie ein Element item() als Input erhält (ein String, der als URI verwendet wird) und einen Booleschen Wert zurückgibt.
Beachten Sie, dass doc-available nur referenziert und nicht direkt aufgerufen wird. Das angehängte Suffix #1 gibt eine Funktion mit einer Stelligkeit 1 an. Als Ganzes bedeutet doc-available#1: Verwende die Funktion doc-availabe(), welche die Stelligkeit=1 hat und übergib die einzelnen Elemente in der ersten Sequenz der Reihe nach als einziges Argument an die Funktion. Als Ergebnis wird jeder der beiden Strings an doc-available() übergeben. Die Funktion verwendet den String als URI und überprüft, ob unter der URI ein Dokument-Node vorhanden ist. Wenn dies der Fall ist, wird doc-available() zu true() ausgewertet und der String wird als Ergebnis der Funktion altova:find-first zurückgegeben. Beachten Sie zur Funktion doc-available(), dass relative Pfade relativ zu aktuellen Basis-URI aufgelöst werden. Die Basis-URI ist standardmäßig die URI des XML-Dokuments, von dem aus die Funktion geladen wird.

 

 

Click to expand/collapsefor-each-attribute-pair [altova:]

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-attribute-pair(/Example/Test-A, /Example/Test-B, function($a, $b){$a+b}) gibt zurück ...

 

  (2, 4, 6) wenn

   <Test-A att1="1" att2="2" att3="3" />

   <Test-B att1="1" att2="2" att3="3" />

 

  (2, 4, 6) wenn

   <Test-A att2="2" att1="1" att3="3" />

   <Test-B att3="3" att2="2" att1="1" />

 

  (2, 6) wenn

   <Test-A att4="4" att1="1" att3="3" />

   <Test-B att3="3" att2="2" att1="1" />

 

    Anmerkung: Das Ergebnis (2, 6) wird mit Hilfe der folgenden Aktion ermittelt: (1+1, ()+2, 3+3, 4+()). Wenn einer der Operanden eine leere Sequenz ist, wie dies bei Eintrag 2 und 4 der Fall ist, so ist das Ergebnis der Addition eine leere Sequenz.

 

altova:for-each-attribute-pair(/Example/Test-A, /Example/Test-B, concat#2) gibt zurück ...

 

  (11, 22, 33) wenn

   <Test-A att1="1" att2="2" att3="3" />

   <Test-B att1="1" att2="2" att3="3" />

 

  (11, 2, 33, 4) wenn

   <Test-A att4="4" att1="1" att3="3" />

   <Test-B att3="3" att2="2" att1="1" />

 

 

Click to expand/collapsefor-each-combination [altova:]

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).

altova:for-each-combination( ('a', 'b', 'c'), ('1', '2', '3'), function($i, $j){$i || $j} ) gibt ('a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3') zurück

 

 

u

Click to expand/collapsefor-each-matching-attribute-pair [altova:]

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:for-each-matching-attribute-pair(/Example/Test-A, /Example/Test-B, function($a, $b){$a+b}) gibt zurück ...

 

  (2, 4, 6) wenn

   <Test-A att1="1" att2="2" att3="3" />

   <Test-B att1="1" att2="2" att3="3" />

 

  (2, 4, 6) wenn

   <Test-A att2="2" att1="1" att3="3" />

   <Test-B att3="3" att2="2" att1="1" />

 

  (2, 6) wenn

   <Test-A att4="4" att1="1" att3="3" />

   <Test-B att3="3" att2="2" att3="1" />

 

altova:for-each-matching-attribute-pair(/Example/Test-A, /Example/Test-B, concat#2) gibt zurück ....

 

  (11, 22, 33) wenn

   <Test-A att1="1" att2="2" att3="3" />

   <Test-B att1="1" att2="2" att3="3" />

 

  (11, 33) wenn

   <Test-A att4="4" att1="1" att3="3" />

   <Test-B att3="3" att2="2" att1="1" />

 

 

Click to expand/collapsesubstitute-empty [altova:]

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.

altova:substitute-empty( (1,2,3), (4,5,6) ) gibt (1,2,3) zurück
altova:substitute-empty( (), (4,5,6) ) gibt (4,5,6)zurück

 

 


© 2019 Altova GmbH