At 10:38 AM 1/27/2004, Ken wrote:
Just skip the predicate that qualifies the node as being at the bottom,
and you end up with:
test=".//*[(_at_)minimum]"
as the boolean test of any elements with the attribute. Alternatively
since all you are doing is testing you could just have:
test=".//*/@minimum"
to address the attributes, but the way you worded it you wanted to address
the elements that have the attribute.
Also, the latter amounts to .//@minimum, if you also want it to test true
if a node itself has an attribute called "minimum".
Remember (as was recently noticed) // is short for
/descendant-or-self::node()/, so .//@minimum expands to
self::node()/descendant-or-self::node()/attribute::minimum
which tests true if the context node or any of its descendants has a
"minimum" attribute.
To restrict it to leaf nodes (defined as elements with no element
children), insert the same predicate to filter for that
./descendant-or-self::*[not(*)]/@minumum
You'll learn all this and more if you take Ken's XSLT/XPath course or
Mulberry's. :->
Cheers,
Wendell
___&&__&_&___&_&__&&&__&_&__&__&&____&&_&___&__&_&&_____&__&__&&_____&_&&_
"Thus I make my own use of the telegraph, without consulting
the directors, like the sparrows, which I perceive use it
extensively for a perch." -- Thoreau
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list