Was ist 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äßt.

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 Hilfe von Variablen, deren Inhalte / Zustände sich laufend verändern. XQuery definiert dagegen eine Sequenz von Items, deren Einzelwerte mit Hilfe der sum-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 "," (concat-Operator) ein weiteres Item "Holzflos" hinzu.


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

Wir sehen an diesem Beispiel, daß die Sequenz nicht zwingend in Bezug zu einem XML-Dokument stehen muß. "$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 / 22. März 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf:

Vorname
Nachname
Mailadresse







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