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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: Position() question, Matthew Bentley | Thread | Re: Test if child exists, Jeni Tennison |
Re: Position() question, Mike Brown | Date | Re: Immediacy of preceding-siblings, Mike Brown |
Month |