This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Test if child exists
- To: xsl-list at mulberrytech dot com
- Subject: Re: Test if child exists
- From: Gary L Peskin <garyp at firstech dot com>
- Date: Thu, 31 Aug 2000 20:43:13 -0700
- Organization: The Firstech Corporation
- References: <C1DD8B5BC729D311A68D00A0C9EA8BF801315A06@mail>
- Reply-To: xsl-list at mulberrytech dot com
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