and it works.
don't sound so surprised:-)
But I for one would appreciate a JT class explanation.
ancestor::*
is all the ancestor element nodes, and within this step (only)
they will be ordered in reverse document order. as ancestor is a
reverse axis. "this step" means up to the end of the expression or to
the next / , predicates in [] are part of the step.
[self::define or self::choice]
this is a boolean valued predicate so after evaluating this, the
current node list just consists of nodes for which the predicate is
true, ie define or choice elements.
[1]
This is a numeric valued predicate so is [positon()=1] and as we are
in a reverse axis step this is true for just the innermost element
in the current node list ie the innermost define or choice
[self::choice]
This is a node-set predicate so is true just if the node set is
non-empty: it will be non-empty if the single node which got past the
[1] is a choice and false otherwise, so it is true just if the
innermost define-or-choice element is a choice.
Jeni
--
The LaTeX Companion
http://www.awprofessional.com/bookstore/product.asp?isbn=0201362996
http://www.amazon.co.uk/exec/obidos/tg/detail/-/0201362996/202-7257897-0619804
________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________