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


XPath: fold-left

Zusammenfassung:

Die XPath-Funktion fold-left verarbeitet alle Items einer Sequenz von links nach rechts.

XPath: fold-left

Die XPath-Funktion fold-left fordert drei Parameter ein: zwei Sequenzen, sowie eine Funktion, mit der das Ergebnis berechnet wird.

Der folgende Aufruf definiert zwei Sequenzen sowie deren Verkettung (Komma!) in einer Funktion.

  <xsl:template match="/" name="xsl:initial-template">
    <root>
      <xsl:for-each select="fn:fold-left(
                            (5 to 10), 
                            (15 to 20), 
                            function($a, $b){$a, $b})">
        <wert>
          <xsl:value-of select="."/>
        </wert>
      </xsl:for-each>
    </root>
  </xsl:template>

Bemerkenswert ist hierbei, daß die zweite Sequenz zuerst betrachtet wird:

<root>
  <wert>15</wert>
  <wert>16</wert>
  <wert>17</wert>
  <wert>18</wert>
  <wert>19</wert>
  <wert>20</wert>
  <wert>5</wert>
  <wert>6</wert>
  <wert>7</wert>
  <wert>8</wert>
  <wert>9</wert>
  <wert>10</wert>
</root>

Das zweite Beispiel multipliziert die Einzelwerte der Reihe 6 * 1 * 2 * 3 miteinander:

  <xsl:template match="/" name="xsl:initial-template">
    <root>
      <xsl:for-each select="fn:fold-left(
                            (1 to 3), 
                            6, 
                            function($a, $b){$a * $b})">
        <wert>
          <xsl:value-of select="."/>
        </wert>
      </xsl:for-each>
    </root>
  </xsl:template>

... und kommt auf ein nachvollziehbares Ergebnis:

<root>
  <wert>36</wert>
</root>

Auch andere bewährte Funktionen können eingebunden werden, etwa concat:

  <xsl:template match="/" name="xsl:initial-template">
    <root>
      <xsl:for-each select="fn:fold-left(
                            1 to 5, 
                            'Sprachlos', 
                            fn:concat(?, ' | ', ?))">
        <wert>
          <xsl:value-of select="."/>
        </wert>
      </xsl:for-each>
    </root>
  </xsl:template>

Das erzielte Ergebnis sieht dann so aus:

<root>
  <wert>Sprachlos | 1 | 2 | 3 | 4 | 5</wert>
</root>

qrpic/foldleft.jpg

wg / 4. 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