number()-Funktion |
Diese Funktion konvertiert ihr Argument in eine Zahl.
Eingaben
Ein Objekt. Das Objekt wird wie unten beschrieben in eine Zahl konvertiert.
Ausgabe
Eine Zahl. Das Objekt wird wie folgt in eine Zahl konvertiert: Ist das Argument ein Boolescher Wert, wird der Wert true in die Zahl 1 konvertiert und der Wert false in die Zahl 0. Ist das Argument eine Knotenmenge, wird diese in einen String konvertiert, so als ob sie an die Funktion string() übergeben worden wäre, und anschließend wird der String wie jeder andere String in eine Zahl konvertiert. (Denken Sie daran, dass die Funktion string() den Stringwert des ersten Knotens in der Knotenmenge zurückgibt.) Ist das Argument ein String, so wird dieser folgendermaßen konvertiert: Besteht der String aus optionalem Leerraum, gefolgt von einem optionalen Minuszeichen (-), gefolgt von einer Zahl, gefolgt von Leerraum, so wird er in den Gleitkommawert konvertiert, der dem durch den String repräsentierten mathematischen Wert am nächsten liegt. (Der IEEE-754-Standard definiert eine round-to-nearest-Regel, weitere Informationen sollten Sie im IEEE-754-Standard nachschlagen.) Jeder weitere String wird in den Wert NaN (Not a Number – keine Zahl) konvertiert. Hat das Argument einen anderen Datentyp, wird es seinem Typ entsprechend in eine Zahl konvertiert. Lesen Sie in der Dokumentation Ihres XSLT-Prozessors nach, welche weiteren Datentypen unterstützt werden, und wie sie in Zahlen konvertiert werden.
Definition
XPath-Abschnitt 4.4, Zahlenfunktionen
Beispiel
Hier das XML-Dokument, mit dem die Funktion number() erprobt werden soll:
    <?xml version="1.0"?>
    <report>
      <title>Miles Flown in 2001</title>
      <month sequence="01">
        <miles-flown>12379</miles-flown>
        <miles-earned>35215</miles-earned>
      </month>
      <month sequence="02">
        <miles-flown>32857</miles-flown>
        <miles-earned>92731</miles-earned>
      </month>
      <month sequence="03">
        <miles-flown>19920</miles-flown>
        <miles-earned>76725</miles-earned>
      </month>
      <month sequence="04">
        <miles-flown>18903</miles-flown>
        <miles-earned>31781</miles-earned>
      </month>
    </report>
Die Funktion number() wird mit einer Vielzahl von Argumenten getestet:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output method="text"/>

      <xsl:variable name="newline">
    <xsl:text>
    </xsl:text>
      </xsl:variable>

      <xsl:template match="/">
        <xsl:value-of select="$newline"/>
        <xsl:text>Tests of the number() function:</xsl:text>

        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   number(true())=</xsl:text>
        <xsl:value-of select="number(true())"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   number(false())=</xsl:text>
        <xsl:value-of select="number(false())"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   number(/report/month[2]/miles-flown)=</xsl:text>
        <xsl:value-of select="number(/report/month[2]/miles-flown)"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   number(//miles-flown)=</xsl:text>
        <xsl:value-of select="number(//miles-flown)"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   number(/report/title)=</xsl:text>
        <xsl:value-of select="number(/report/title)"/>
      </xsl:template>

    </xsl:stylesheet>
Hier die Ausgabe des Stylesheets:
    Tests of the number() function:

       number(true())=1
       number(false())=0
       number(/report/month[2]/miles-flown)=32857
       number(//miles-flown)=12379
       number(/report/title)=NaN