Was ist XQuery? / Arbeiten mit Variablen

Arbeiten mit Variablen

Arbeiten mit Variablen

➪ Mitunter ist es in XQuery notwendig, Zwischenergebnisse in temporäre Variablen auszulagern, bevor sie weiter verarbeitet werden können. Das kann bei der Numerierung einer Sequenz notwendig werden, die vorher mit "order by" sortiert wurde.


<erg>
{
  let $tmp := for $x in ((1 to 10)[. mod 3 = 0], 'Holzflos')
  order by $x descending
  where $x castable as xs:decimal
  return 
    <WERT>     
      {$x}
    </WERT>
  for $y at $p in $tmp return
    <zahl lfdnr="{$p}">{$y/text()}</zahl>
}
</erg>

"$tmp" ist eine solche temporäre Sequenz-Variable, deren Inhalt in diesem Beispiel so aussieht (also ohne das Root-Element "erg"):


  <WERT>9</WERT>
  <WERT>6</WERT>
  <WERT>3</WERT>

Im nächsten Schritt wird mit "for $y at $p in $tmp" jedes einzelne Item der Sequenzvariable "$tmp" verarbeitet. Dabei entspricht "$y" jedem einzelnen Item (also z.B. "<WERT>9</WERT>"); $p stellt die Position dieses Items in der Sequenz dar. Ergebnis:


<erg>
  <zahl lfdnr="1">9</zahl>
  <zahl lfdnr="2">6</zahl>
  <zahl lfdnr="3">3</zahl>
</erg>

Wichtig ist dabei, den Aufruf "{$y/text()}" zu verstehen. Damit wird der Textinhalt (also der Textnode zwischen dem Start- und Endetag "WERT") ausgegeben. Würde der Aufruf dagegen "{$y}" lauten, dann enthielte das Ergebnis auch die Start- und Endetags von "$y":


<erg>
  <zahl lfdnr="1">
    <WERT>9</WERT>
  </zahl>
  <zahl lfdnr="2">
    <WERT>6</WERT>
  </zahl>
  <zahl lfdnr="3">
    <WERT>3</WERT>
  </zahl>
</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/XQuery4.html