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


Arbeiten mit Variablen

Mitunter ist es notwendig, Zwischenergebnisse in temporäre Variable 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>

qrpic/XQuery4.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