Fonction floor() |
Renvoie le plus grand nombre entier qui n'est pas supérieur à l'argument.
Entrées
Un nombre. Si l'argument n'est pas un nombre, il est transformé en nombre comme s'il avait été traité par la fonction number(). Si l'argument ne peut être transformé en nombre, la fonction floor() renvoie la valeur NaN (qui n'est pas un nombre).
Sortie
Le plus grand nombre entier qui n'est pas supérieur à l'argument, ou la valeur NaN si l'argument ne peut être converti en nombre.
Définie dans
XPath section 4.4, Fonctions Nombre.
Exemple
La feuille de style suivante présente les résultats de l'invocation de la fonction floor() en fonction de plusieurs valeurs. Le document XML suivant a servi d'entrée :
    <?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 feuille de style suivante utilise la fonction floor() :
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:months="Lookup table for month names">

      <months:name sequence="01">January</months:name>
      <months:name sequence="02">February</months:name>
      <months:name sequence="03">March</months:name>
      <months:name sequence="04">April</months:name>
      <months:name sequence="05">May</months:name>
      <months:name sequence="06">June</months:name>
      <months:name sequence="07">July</months:name>
      <months:name sequence="08">August</months:name>
      <months:name sequence="09">September</months:name>
      <months:name sequence="10">October</months:name>
      <months:name sequence="11">November</months:name>
      <months:name sequence="12">December</months:name>

      <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 floor() function:</xsl:text>

        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   "floor('7.983')" = </xsl:text>
        <xsl:value-of select="floor('7.983')"/>

        <xsl:value-of select="$newline"/>
        <xsl:text>   "floor('-7.893')" = </xsl:text>
        <xsl:value-of select="floor('-7.893')"/>

        <xsl:value-of select="$newline"/>
        <xsl:text>   "floor(/report/month[@sequence='01']</xsl:text>
        <xsl:text>/miles-flown)" = </xsl:text>
        <xsl:value-of select="floor(/report/month[@sequence='01']/miles-flown)"/>

        <xsl:value-of select="$newline"/>
        <xsl:text>   "floor(document('')/*/months:name</xsl:text>
        <xsl:text>[@sequence='02'])" = </xsl:text>
        <xsl:value-of select="floor(document('')/*/months:name[@sequence='02'])"/>

        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:for-each select="/report/month">
          <xsl:text>   </xsl:text>
          <xsl:value-of
            select="document('')/*/months:name[@sequence=current()/@sequence]"/>
          <xsl:text> - </xsl:text>
          <xsl:value-of select="format-number(miles-flown, '##,###')"/>
          <xsl:text> miles flown, </xsl:text>
          <xsl:value-of select="format-number(miles-earned, '##,###')"/>
          <xsl:text> miles earned.</xsl:text>
          <xsl:value-of select="$newline"/>
          <xsl:text>      (Averaged </xsl:text>
          <xsl:value-of select="floor(miles-earned div miles-flown)"/>
          <xsl:text> miles earned for each mile flown.)</xsl:text>
          <xsl:value-of select="$newline"/>
          <xsl:value-of select="$newline"/>
        </xsl:for-each>
      </xsl:template>

    </xsl:stylesheet>
La sortie de la feuille de style est la suivante :
    Tests of the floor() function:

       "floor('7.983')" = 7
       "floor('-7.893')" = -8
       "floor(/report/month[@sequence='01']/miles-flown)" = 12379
       "floor(document('')/*/months:name[@sequence='02'])" = NaN

       January - 12,379 miles flown, 35,215 miles earned.
          (Averaged 2 miles earned for each mile flown.)

       February - 32,857 miles flown, 92,731 miles earned.
          (Averaged 2 miles earned for each mile flown.)

       March - 19,920 miles flown, 76,725 miles earned.
          (Averaged 3 miles earned for each mile flown.)

       April - 18,903 miles flown, 31,781 miles earned.
          (Averaged 1 miles earned for each mile flown.)
Notez que lorsque la fonction ceiling() a été invoquée avec la chaîne "February" (ce que document('')/*/months:name[@sequence='02'] résout), la fonction a renvoyé la valeur NaN. Ces résultats peuvent être comparés à ceux de la fonction ceiling() et de la fonction round().