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: Test if child exists


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

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