Home
Über mich
Blog
Veröffentlichungen
IT-Trainings
Impressum


concat, union, intersect, except

Ebenfalls zum Vergleich gegenüber XSL 2.0 finden Sie noch die XQuery-Syntax für Sequenzverkettungen, unions, intersects und excepts. Beachten Sie die unterschiedliche Definition der Variablen in Form von node()+ und node()*. Analog zur DTD-Syntax definiert + hier eine Nodelist mit mind. einem Item; * bedeutet, daß die Itemlist auch leer sein kann. node()? würde alternativ 0 oder 1 Item erlauben, node() würde exakt 1 Item erfordern.

Die globale Variable "$seq1" ist eine Verkettung (Komma-Operator!) der Elemente //Ort[1]/name und //Ort[2]/name. "$seq2" ist eine analoge Verkettung der Elemente //Ort[2]/name und //Ort[3]/name.

declare variable  $seq1       
 as node()+ := (//Ort[1]/name, //Ort[2]/name);
declare variable  $seq2       
 as node()+ := (//Ort[2]/name, //Ort[3]/name);
declare variable  $concat12   
 as node()+ := ($seq1, $seq2);
declare variable  $union12    
 as node()+ := $seq1 union $seq2;
declare variable  $intersect12
 as node()* := $seq1 intersect $seq2;
declare variable  $except12   
 as node()* := $seq1 except $seq2;

Die globale Variable "$concat12" ist nunmehr eine Verkettung der Einzelsequenzen "$seq1" und "$seq2".

<root>
{
for $x in $concat12  
return $x
}
</root>

Entsprechend fällt das Ergebnis aus: "Darmstadt" erscheint doppelt, weil es sowohl in "$seq1" als auch in "$seq2" auftaucht.

<root>
  <name>Neustadt</name>
  <name>Darmstadt</name>
  <name>Darmstadt</name>
  <name>Kapstadt</name>
</root>

Die globale Variable $union12 ist nunmehr eine Vereinigung der Einzelsequenzen "$seq1" und "$seq2".

<root>
{
for $x in $union12  
return $x
}
</root>

Im Gegensatz zu CONCAT erscheint "Darmstadt" hier nur einmal, weil durch die "union" Doppelauftritte vermieden werden.

<root>
  <name>Neustadt</name>
  <name>Darmstadt</name>
  <name>Kapstadt</name>
</root>

Die globale Variable $intersect12 ist nunmehr eine Schnittmenge der Einzelsequenzen "$seq1" und "$seq2".

<root>
{
for $x in $intersect12  
return $x
}
</root>

Da nur "//Ort[2]/name" in beiden Sequenzen "$seq1" und "$seq2" gemeinsam auftaucht, wird auch nur dessen Information "Darmstadt" gelistet.

<root>
  <name>Darmstadt</name>
</root>

Die globale Variable $except12 ist nunmehr eine Ausschlußmenge "A ohne B" der Einzelsequenzen "$seq1" und "$seq2".

<root>
{
for $x in $except12 
return $x
}
</root>

Da "//Ort[2]/name" auch Bestandteil der Sequenz "$seq2" ist, ergibt "$seq1" ohne "$seq2" das Resultat "//Ort[1]/name", also "Neustadt".

<root>
  <name>Neustadt</name>
</root>

qrpic/XQuery12.jpg

wg / 14. Oktober 2017




Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf (info10@wilfried-grupe.de).



Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

Mobil: 0151. 750 360 61 * eMail: info10@wilfried-grupe.de