Hi Neale.
you could try:
<xsl:call-template name="petTable">
<xsl:with-param name="selection"
select="pet[(_at_)species='dog']"/>
<xsl:with-param name="sortkey" select="'name'"/> <!--
select a string name instead of attribute -->
<xsl:with-param name="sortorder" select="'descending'"/>
</xsl:call-template>
<xsl:template name="petTable">
<xsl:param name="selection" select="*"/>
<xsl:param name="sortkey" select="''"/>
<xsl:param name="sortorder" select="''"/>
...
<xsl:apply-templates select="$selection">
<xsl:sort select="@*[name()=$sortkey]"
order="descending"/>
</xsl:apply-templates>
..>
</xsl:template>
this is untested but it might work. the select will look for the
attribute named $sortkey and use that in the sort.
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Neale
Morison
Sent: Friday, August 30, 2002 5:04 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Parametrized xsl:sort
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com]On Behalf Of
Peter Davis
Sent: Friday, 30 August 2002 12:57 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Parametrized xsl:sort
On Thursday 29 August 2002 19:15, Neale Morison wrote:
To be specific, I want the result of:
<xsl:sort select="$sortkey" order="descending"/>
Since a normal variable doesn't change, the sort will have no effect
(but I'm sure you already figured this out).
with parameter sortkey:
<xsl:with-param name="sortkey" select="@name"/>
If you pass select="@name", it will evaluate "@name" in the context of
the with-param, not in the sort. So you probably want to change this
to:
<xsl:with-param name="sortkey" select="'@name'"/>
which will pass the string '@name' to be evaluated later.
to be equivalent to:
<xsl:sort select="@name" order="descending"/>
To evaluate the string, you need to use some kind of extension
function. Look in the documentation of whatever processor you use; it
will probably look
like:
<xsl:sort order="descending" select="xxx:evaluate($sortkey)"/>
The 'xxx' will be associated with an extension namespace specific to
your processor. The evaluate() function will take the string $sortkey
and evaluate it as an XPath expression.
--
Peter Davis
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Thanks. I thought I might be able to do it without an eval, but the eval
method does work. Regards, Neale
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list