<xsl:template match="//chapter" mode="assemble">
you don't ever want to start a match pattern with // it doesn't do
anything useful (it doesn't do any harm either) it just increases the
default priority for the template (it doesn't change the elements
matched)
You didn't show which template your xsl:sort was in, but it looked OK so
long as it was in a template for your chapters element, so that the
apply-templates default selection of select="node()" picks up a set of
chapter elements which can then be sorted.
David
--
http://www.dcarlisle.demon.co.uk/matthew
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list