Subject: Re: Test if child exists
From: Gary L Peskin <garyp@xxxxxxxxxxxx>
Date: Thu, 31 Aug 2000 20:43:13 -0700
|
Matthew Bentley wrote:
>
> >> <xsl:if test="bva[last() = 1]">
>
> >No, that tests if there is only one bva element (there may be elements
> >with other names)
>
> ><xsl:if test="*[last() = 1 and self::bva]">
>
> Pardon me, but I understand last() returns the order number of the last node
> of -any- node under the context node.
Yes, but don't forget XPath section 2.4:
"A predicate filters a node-set with respect to an axis to produce a new
node-set. For each node in the node-set to be filtered, the
PredicateExpr is evaluated >> with that node as the context node << with
the number of of nodes in the node-set as the context size and with the
proximity position of the node in the node-set with respect to the axis
as the context position ..."(emphasis added).
In your example above, the node-set to be filtered is the set of all bva
nodes since that is to the left of the predicate. The predicate 'last()
= 1' is evaluated with respect to _that_ node-set. So the first test
above does indeed test to see if there is only one node in that
node-set, in other words, if there is only one bva node.
Gary
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|