floor()-Funktion |
Diese Funktion gibt die größte Ganzzahl zurück, die nicht größer als das Argument ist.
Eingaben
Eine Zahl. Wenn das Argument keine Zahl ist, wird es in eine Zahl umgewandelt als wäre es von der Funktion number() verarbeitet worden. Lässt sich das Argument nicht in eine Zahl umwandeln, gibt die Funktion floor() den Wert NaN (Not a Number – keine Zahl) zurück.
Ausgabe
Die größte Ganzzahl, die nicht größer als das Argument ist bzw. NaN, wenn sich das Argument nicht in eine Zahl konvertieren lässt.
Definition
XPath-Abschnitt 4.4, Zahlenfunktionen
Beispiel
Das folgende Stylesheet demonstriert die Ergebnisse, wenn die Funktion floor() auf eine Vielzahl verschiedener Werte angewendet wird. Als Eingabe dient das folgende XML-Dokument:
    <?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>
Hier das Stylesheet, das die Funktion floor() verwendet:
    <?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>
Hier die Ausgabe des Stylesheets:
    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.)
Beachten Sie, dass beim Anwenden der Funktion floor() auf den String "February" (der durch document('')/*/months:name[@sequence='02'] bezeichnete Wert) die Funktion den Wert NaN zurückgegeben hat. Sie können diese Ergebnisse mit denen der Funktion ceiling() und der Funktion round() vergleichen.