Re: Test if child exists

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


Current Thread