xsl-list
[Top] [All Lists]

RE: dynamic sorting

2004-02-06 05:19:31
At 2004-02-06 00:22 +0100, Peter Billen wrote:
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.

................................. Ken


--
Public courses: upcoming world tour of hands-on XSL training events
Each week:    Monday-Wednesday: XSLT/XPath; Thursday-Friday: XSL-FO
Washington, DC: 2004-03-15            San Francisco, CA: 2004-03-22
Hong Kong: 2004-05-17    Germany: 2004-05-24    England: 2004-06-07
World-wide on-site corporate, government & user group XML training!

G. Ken Holman                  mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
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



<Prev in Thread] Current Thread [Next in Thread>