Re: [xsl] using a variable in sort block

Subject: Re: [xsl] using a variable in sort block
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 15 Jul 2003 14:38:25 -0400
At 2003-07-15 13:51 -0400, Greg Johnson wrote:
What are the restrictions on using xsl:variables?

String variables cannot be used as raw XPath expression syntax and must explicitly be referenced in any XPath expression as only a simple string.


Am I not allowed to use it in an xsl:sort element?

As long as you don't try to use the string value as an XPath expression.


I get the following error for the folowing xsl fragment:

<xsl:variable name="sortby">ARRIVED</xsl:variable>

Perhaps use <xsl:variable name="sortby" select="'ARRIVED'"/>


<xsl:variable name="sortorder">descending</xsl:variable>

Perhaps use <xsl:variable name="sortorder" select="'descending'"/>


<xsl:template match="REPORT">
<h1>
<xsl:value-of select="$sortby"/>
</h1>
<xsl:apply-templates select="INTERCHANGE">
<xsl:sort select="{$sortby}" order="{$sortorder}" /> <!-- ERROR HERE -->

I'm assuming by "ARRIVED" you mean the value of the child element named "ARRIVED" ... if so, then use:


<xsl:sort select="*[name(.)=$sortby]" order="{$sortorder}"/>

Note in the above that I am using the variable, but not *as* an XPath expression, but rather *in* an XPath expression as a simple string. I'm selecting all children and then only referencing that child whose name is the name in the string variable.

Note that what you are trying to do is *not* namespace safe, but I'm assuming you are not using namespaces.

I hope this helps.

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

--
Upcoming hands-on courses: in-house corporate training available;
North America public:  XSL-FO Aug 4,2003; XSLT/XPath Aug 12, 2003

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)
ISBN 0-13-065196-6                      Definitive XSLT and XPath
ISBN 0-13-140374-5                              Definitive XSL-FO
ISBN 1-894049-08-X  Practical Transformation Using XSLT and XPath
ISBN 1-894049-11-X              Practical Formatting Using XSL-FO
Member of the XML Guild of Practitioners:    http://XMLGuild.info
Male Breast Cancer Awareness http://www.CraneSoftwrights.com/s/bc


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list



Current Thread