not() Function |
Returns the negation of its argument. If the argument is not a boolean value already, it is converted to a boolean value using the rules described in the boolean() function entry.
Inputs
A boolean value, or more commonly, an XPath expression that evaluates to a boolean value.
Output
false if the input parameter is true; true if the input parameter is false.
Defined in
XPath section 4.3, Boolean Functions.
Example
To demonstrate the not() function, we'll use the same stylesheet and XML document we used for the boolean() function. Here's our XML document:
    <?xml version="1.0"?>
    <test>
    <p>This is a test XML document used by several
    of our sample stylesheets.</p>
    <question>
    <text>When completed, the Eiffel Tower was the
    tallest building in the world.</text>
    <true>Yes!  The Eiffel Tower was the world's
    tallest building until 1932, when
    New York's Empire State Building opened. </true>
    <false>No, the Eiffel Tower was the world's
    tallest building for over 30 years.</false>
    </question>
    </test>
We'll process this document with the following stylesheet, which uses the not() to negate all boolean() function calls:
    <?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 not() function:</xsl:text>

        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:choose>
          <xsl:when test="not(boolean(true()))">
            <xsl:text>   "not(boolean(true()))"   returned true!</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>   "not(boolean(true()))"   returned false!</xsl:text>
          </xsl:otherwise>
        </xsl:choose>

        <xsl:value-of select="$newline"/>
        <xsl:choose>
          <xsl:when test="not(boolean(true))">
            <xsl:text>   "not(boolean(true))"     returned true!</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>   "not(boolean(true))"     returned false!</xsl:text>
          </xsl:otherwise>
        </xsl:choose>

        <xsl:value-of select="$newline"/>
        <xsl:choose>
          <xsl:when test="not(boolean('false'))">
            <xsl:text>   "not(boolean('false'))"  returned true!</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>   "not(boolean('false'))"  returned false!</xsl:text>
          </xsl:otherwise>
        </xsl:choose>

        <xsl:value-of select="$newline"/>
        <xsl:choose>
          <xsl:when test="not(boolean('7'))">
            <xsl:text>   "not(boolean('7'))"      returned true!</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>   "not(boolean('7'))"      returned false!</xsl:text>
          </xsl:otherwise>
        </xsl:choose>

        <xsl:value-of select="$newline"/>
        <xsl:choose>
          <xsl:when test="not(boolean(/true))">
            <xsl:text>   "not(boolean(/true))"    returned true!</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>   "not(boolean(/true))"    returned false!</xsl:text>
          </xsl:otherwise>
        </xsl:choose>

        <xsl:value-of select="$newline"/>
        <xsl:choose>
          <xsl:when test="not(boolean(//true))">
            <xsl:text>   "not(boolean(//true))"   returned true!</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>   "not(boolean(//true))"   returned false!</xsl:text>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:template>

    </xsl:stylesheet>
Here are the results:
    Tests of the not() function:

       "not(boolean(true()))"   returned false!
       "not(boolean(true))"     returned true!
       "not(boolean('false'))"  returned false!
       "not(boolean('7'))"      returned false!
       "not(boolean(/true))"    returned true!
       "not(boolean(//true))"   returned false!
As you'd expect, these results are the exact opposite of the results we got when we tested the boolean() function.