RE: dynamic sorting
But how do I combine test="self::book:title" with a variable $sort,
You can't ... since you are dealing with strings being passed on the command line, and node tests along axes must be known at compile time, to be namespace-safe you must deal with both components of the name.
Say you have from the command line two parameters:
<xsl:param name="sort-name"/> <xsl:param name="sort-uri"/>
Then you can sort by children with both name components in a namespace-safe fashion for string values using:
<xsl:sort select="*[local-name()=$sort-name and namespace-uri()=$sort-uri]"/>
Can you see how the above doesn't get impacted by the namespace prefix utilized by the instance?
but test="self::book:$sort" will probably not work
Yes, it will not work. You cannot use a variable in a node test, but you can use a variable in a predicate in most expressions (but not in pattern expressions).
I hope this helps.
G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995) Male Breast Cancer Awareness http://www.CraneSoftwrights.com/s/bc
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format