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


Element-Konstruktor

In der Programmierpraxis kann es vorkommen, daß Elementnamen zur Laufzeit generiert werden müssen. Das folgende Beispiel berechnet in der temporären Variable "$schnitt" einen Durchschnitt sämtlicher "//Kauf/Gesamt"-Nodes. In der folgenden Logik wird jeder einzelne relevante "Kauf/Gesamt"-Node mit diesem "$schnitt" abgeglichen. Ist der Betrag größer als "$schnitt", so wird ein Element "mehr" generiert; andernfalls "weniger".

let $input   := doc("C:/wg/Ort_Elemente.xml")
let $schnitt := avg($input//Kauf/Gesamt)
return
<erg schnitt="{$schnitt}">
  {
    for $b in $input/Orte/Ort[1]/Mensch[position() < 3]
    return
      <kunde NN="{$b/name/text()}" 
             VN="{$b/vorname/text()}" 
             WO="{$b/../name/text()}">
          {
            for $ges in $b/Kauf/Gesamt
            return
              if (xs:decimal($ges) > $schnitt)
              then
                element mehr {$ges/text()}
              else
                element weniger {$ges/text()}
          }
      </kunde>
  }
</erg>

Im Ergebnis finden wir noch Einzelwerte wir "<weniger>181.92999999999998</weniger>", die uns stutzen lassen. Bevor wir das Thema Typecasting bemühen, müssen wir feststellen, daß der Wert im XML Input Dokument genau so definiert ist.

<erg schnitt="312.81">
  <kunde NN="Holzflos" 
         VN="Hugo" 
         WO="Neustadt">
    <weniger>38.97</weniger>
    <weniger>116.91</weniger>
    <weniger>103.92</weniger>
    <weniger>233.91</weniger>
    <weniger>233.91</weniger>
    <weniger>207.92</weniger>
    <weniger>207.92</weniger>
    <mehr>1209.84</mehr>
    <mehr>1209.84</mehr>
  </kunde>
  <kunde NN="Nixlos" 
         VN="Nicole" 
         WO="Neustadt">
    <weniger>207.92</weniger>
    <weniger>181.92999999999998</weniger>
    <weniger>155.94</weniger>
    <weniger>129.95</weniger>
    <weniger>103.96</weniger>
    <weniger>103.96</weniger>
    <weniger>77.97</weniger>
  </kunde>
</erg>

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