XQuery / Arbeit mit Sequenzen

Arbeit mit Sequenzen

Arbeit mit Sequenzen

➪ XQuery arbeitet auf der Basis von Sequenzen, die sich zum Beispiel durch "(1 to 10)" als eine Sequenz aller Zahlen von 1 bis 10 definieren lässt.

Der konzeptionelle Unterschied zwischen XQuery und herkömmlichen Programmiersprachen wie C#.NET wird deutlich in einem einfachen Beispiel. Die Aufgabe lautet: Berechnen Sie die Summe aller Zahlen von 20 bis 200, die ohne Rest durch 19 teilbar sind.

In C#.NET sähe das beispielsweise so aus:


public static void Summe_Zahlen_20_200()
{
   int n = 0;
   for(int i=20; i<201; i++)
   {    
    if(i % 19 == 0)
    {
     n = n + i;
    }
   }
   Console.WriteLine("<erg>{0}</erg>", n);
}

Die C#.NET-Logik arbeitet mit Variablen, deren Inhalte/Zustände sich laufend verändern. XQuery definiert dagegen eine Sequenz von Items, deren Einzelwerte mit -Funktion addiert werden.


<erg>
{
  sum((20 to 200)[. mod 19 = 0])
}
</erg>

Die Lösung lautet in beiden Fällen:


<erg>1026</erg>

Sequenzen verketten

(1 to 10)[. mod 3 = 0] selektiert aus der Sequenz aller Zahlen von 1 bis 10 jene, die ohne Rest (modulo) durch 3 teilbar sind (also die Werte 3, 6, 9). "((1 to 10)[. mod 3 = 0], 'Holzflos') fügt zu dieser Sequenz über das Komma "," () ein weiteres Item "Holzflos" hinzu.


<erg>
{
  for $x in ((1 to 10)[. mod 3 = 0], 'Holzflos') return 
    <WERT>{$x}</WERT>
}
</erg>

Sie sehen an diesem Beispiel, dass die Sequenz nicht zwingend in Bezug zu einem XML-Dokument stehen muss. $x gilt hierbei als temporäre Variable, mittels derer jedes einzelne Item einer Sequenz angesprochen werden kann. Das Ergebnis lautet:


<erg>
  <WERT>3</WERT>
  <WERT>6</WERT>
  <WERT>9</WERT>
  <WERT>Holzflos</WERT>
</erg>

wg / 15. September 2018



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


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

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

www.wilfried-grupe.de/XQuery1.html