XPath 3.0, XPath 2.0, XPath 1.0 / XPath Funktionen / XPath: Sequence-Funktionen / XPath: fold-right

XPath: fold-right

XPath: fold-right

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

Die XPath-Funktion fold-right 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="/">
  <root>
   <xsl:for-each 
        select="fn:fold-right(
                   ('A', 5 to 10), 
                   ('B', 15 to 20), 
                   function($a, $b){$a, $b})">
    <wert>
     <xsl:value-of select="."/>
    </wert>
   </xsl:for-each>
  </root>
</xsl:template>

Das Ergebnis:


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

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


<xsl:template match="/">
  <root>
   <xsl:for-each 
        select="fn:fold-right(
                   (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="/">
  <root>
   <xsl:for-each 
        select="fn:fold-right(
                   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>1 | 2 | 3 | 4 | 5 | Sprachlos</wert>
</root>

wg / 12. Februar 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/foldright.html