Fonction number() |
Convertit son argument en nombre.
Entrées
Un objet. L'objet est converti en nombre comme décrit dans la sous-section suivante.
Sortie
Un nombre. L'objet est convertit en nombre comme suit : Si l'argument est une valeur booléenne, la valeur true est convertie en le nombre 1 ; la valeur false est convertie en le nombre 0. Si l'argument est un ensemble de nœuds, l'ensemble est converti en une chaîne comme si la fonction string() avait été employée, cette chaîne est ensuite convertie en un nombre comme toute autre chaîne. (Notez bien que la fonction string() renvoie la valeur de chaîne du premier nœud de l'ensemble de nœuds). Si l'argument est une chaîne, elle est convertie comme suit : Si la chaîne est composée d'un espace blanc facultatif, suivi d'un signe moins facultatif (-), puis d'un nombre et enfin d'un espace blanc, elle est convertie en la valeur à virgule flottante la plus proche de la valeur mathématique représentée par la chaîne. (La norme IEEE 754 définit une règle round-to-nearest ; voir cette norme pour obtenir de plus amples informations). Toute autre chaîne est convertie en la valeur NaN (qui n'est pas un nombre). Si l'argument est d'un quelconque autre type, il est converti en nombre de manière à dépendre de ce type. Voir la documentation de votre processeur XSLT pour découvrir les autres types pris en charge et la méthode utilisée pour les convertir en nombres.
Définie dans
XPath section 4.4, Fonctions Nombre.
Exemple
Le document XML suivant a permis de tester la fonction number() :
    <?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>
La fonction number() suivante est testée avec plusieurs arguments :
    <?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>
Voici à quoi ressemble la sortie de cette feuille de style :
    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