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).

Auf dieser Seite:

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? Tipps?

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