XPath 3.0, XPath 2.0, XPath 1.0 / XPath-Funktionen / XPath: Sequenz-Funktionen / XPath: filter

XPath: filter

XPath: filter

➪ Die XPath-Funktion filter gibt jene Items einer Sequenz zurück, die in der anonymen Funktion ein true() ergeben.

Auf dieser Seite:

Der folgende filter-Aufruf erhält eine Sequenz (Zahlen von 1 bis 20) sowie eine Funktion, die jedes Item daraufhin prüft, ob der Wert ohne Rest durch 5 teilbar ist (Modulo).


 <xsl:template match="/">
  <root> 
   <xsl:value-of 
        select="fn:filter(
                   1 to 20, 
                   function($a) {$a mod 5 = 0})"/>
  </root>
 </xsl:template>

Das Ergebnis sieht so aus:


<root>5 10 15 20</root>

Daß die filter-Funktion ein item()* zurückgibt, sehen Sie beim Aufruf in einer Schleife:


 <xsl:template match="/">
  <root>
   <xsl:for-each 
        select="fn:filter(
                   1 to 20, 
                   function($a) {$a mod 5 = 0})">
    <wert>
     <xsl:value-of select="."/>
    </wert>
   </xsl:for-each>
  </root>
 </xsl:template>

Der Aufruf kann (bei dieser Sachlage) auch ohne filter gestartet werden:


 <xsl:template match="/">
  <root>
   <xsl:for-each select="(1 to 20)[. mod 5 = 0]">
    <wert>
     <xsl:value-of select="."/>
    </wert>
   </xsl:for-each>
  </root>
 </xsl:template>

Das Ergebnis ist in beiden Fällen gleich:


<root>
 <wert>5</wert>
 <wert>10</wert>
 <wert>15</wert>
 <wert>20</wert>
</root>

filter in XQuery

Selbstverständlich unterstützt auch XQuery die filter-Funktion mit individuellen Konfigurationsmöglichkeiten. Die Ausgabe ist identisch mit dem vorstehenden Ergebnis.


<root>
{
  for $x in filter(
         1 to 20, 
         function($a as xs:integer) as xs:boolean 
            {$a mod 5 = 0}
         )
  return 
    <wert>     
      {$x}
    </wert>
}
</root>

wg / 4. April 2018



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






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/filter.html