This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: xpath not..



> (or is my link http://www.w3.org/TR/xpath.html outdated ?)

probably not:)

> . and i still cant find sth like not(self::*) there...
> ...
>  and for some reasons you need the inner brackets 

You need the inner brackets because not() is a function and xpath
functions _always_ have () around their arguments.

          3.2 Function Calls

          A FunctionCall expression is evaluated by using the
          FunctionName to identify a function in the expression
          evaluation context function library, evaluating each of the
          Arguments, converting each argument to the type required by
          the function, and finally calling the function, passing it the
          converted arguments. It is an error if the number of arguments
          is wrong or if an argument cannot be converted to the required
          type. The result of the FunctionCall expression is the result
          returned by the function.

          An argument is converted to type string as if by calling the
          string function. An argument is converted to type number as if
          by calling the number function. An argument is converted to
                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          type boolean as if by calling the boolean function. An
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          argument that is not of type node-set cannot be converted to a
          node-set.

           [16] FunctionCall ::=  FunctionName '(' ( Argument ( ',' Argument )* )? ')'
                                                ^                                   ^
                                                ^                                   ^
                                                ^                                   ^
So that says the syntax is not(  ) and self::* is allowed as an argument
as that selects a node set, so by the paragraph above it is allowed in
the argument of not() if it may be converted to type boolean by the
boolean() function.

may provide additional functions for case conversion.

          4.3 Boolean Functions

          Function: boolean boolean(object) 

          The boolean function converts its argument to a boolean as follows:

                a number is true if and only if it is neither positive
                or negative zero nor NaN

                a node-set is true if and only if it is non-empty

                a string is true if and only if its length is non-zero

                an object of a type other than the four basic types is
                converted to a boolean in a way that is dependent on
                that type



so in a boolean context self::* is true if and only if the node set
selected is non empty which is true if and only if the current node is
an element, so not(self::*) is true just if the current node is not an
element.

David

_____________________________________________________________________
This message has been checked for all known viruses by Star Internet delivered
through the MessageLabs Virus Control Centre. For further information visit
http://www.star.net.uk/stats.asp


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]