XPath 3.0, XPath 2.0, XPath 1.0 / XPath-Funktionen / Zahlenfunktionen / min()

min()

min()

➪ Die min-Funktion berechnet den Minimalwert der Zahlen in der Sequenz (vorausgesetzt, es sind nur Werte enthalten, die auch als Zahlenwerte gecastet werden können).

Nehmen Sie eine Sequenz von Items, die sich aus einem XML-Dokument auswerten und durch das XPath-Statement "//Gehalt" ansprechen lässt. Dann ergibt ...


<xsl:template match="/">
    <ergebnis>
        <xsl:value-of select="min(//Gehalt)"/>
    </ergebnis>
</xsl:template>

... dieses Resultat:


<ergebnis>135</ergebnis>

Selbst definierte Sequenzen ab XSL 2.0

Ebenso können Sie ab XSL 2.0 der min-Funktion auch eine selbst definierte Sequenz mitgeben.


<xsl:variable name="vseq" 
  select="7*25.99, 199, 1, (11 to 50)[. mod 9=1]"/>

Aus dem hier berechneten Wertebereich (181.93, 199, 1, 19, 28, 37, 46) wird mit der min-Funktion der Wert 1 ermittelt. Mit der -Funktion können Sie auch die Position dieses Wertes in der Sequenz ermitteln.


<xsl:template match="/">
    <min 
        index="{index-of($vseq, min($vseq))}">
        <xsl:value-of select="min($vseq)"/>
    </min>
</xsl:template>

Resultat:


<min index="3">1</min>

Wichtig ist auch hier, dass alle Items der Sequenz als Zahlen gecastet werden können. Das ist bei der folgenden Sequenz (1,2,3,4,5,'Hallo') nicht der Fall:


<ergebnis>
    <xsl:value-of select="min((1 to 5, 'Hallo'))"/>
</ergebnis>

Andernfalls ist mit einer Fehlermeldung zu rechnen, z.B.


FORG0006: Cannot compare xs:integer with xs:string

Minimalwerte in XSL 1.0 ermitteln

Die min-Funktion steht erst ab XPath 2.0 zur Verfügung. Wer in XSLT 1.0 (je nach XSL-Prozessor) aus einer Nodeliste einen Minimalwert ermitteln möchte, kann die XPath-Achsen und verwenden. Die Ermittlung von min(//Gehalt) verläuft dann so:


<xsl:value-of 
     select="//Gehalt[not(
                      following::Gehalt &lt; . 
                      or 
                      preceding::Gehalt &lt; .)]"/>

Alternativ können Sie die Werte in eine Variable schreiben, diese mit absteigend sortieren und dann den letzten Wert auswählen. Für weitere Alternativen siehe .

wg / 23. April 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf.




max()



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