hi,
I found in webapp/stylesheets/system/profiler.xsl following xsl-code
snippet which might
help you:
<table noshade="noshade" border="0" cellspacing="1"
cellpadding="0" width="100%">
<xsl:choose>
<xsl:when test="$sort = 'uri'">
<xsl:apply-templates>
<xsl:sort select="@profile:uri"/>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="$sort = 'time'">
<xsl:apply-templates>
<xsl:sort select="@profile:time" data-type="number"/>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="$sort = 'count'">
<xsl:apply-templates>
<xsl:sort select="@profile:count" data-type="number"/>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</table>
It seems the trick is to map the $sort directly to a xsl:sort.
Hope it helps.
profiler.xsl is part of the Cocoon2 CVS distribution.
bye bernhard
Steve Philp wrote:
>I've spent most of the day today trudging through various search engines, FAQs,
>mailing list archives and the Cocoon-2 site, but I still seem to be missing something
>critical in getting something that seems simple working.
>
>The problem revolves around how to efficiently use request parameters to choose a SQL
>resultset column to sort by in my stylesheet.
>
>I've got the following in sitemap.xmap:
>
> <map:match pattern="sql/*">
> <map:generate src="docs/samples/sql/{1}.xml"/>
> <map:transform type="sql">
> <map:parameter name="use-connection" value="testdb"/>
> </map:transform>
> <map:transform src="stylesheets/employees.xsl">
> <map:parameter name="use-request-parameters" value="true"/>
> </map:transform>
> <map:serialize/>
> </map:match>
>
>I should mention that the XSLT transformer is also modified to turn on request
>parameters.
>
>The SQL xml document looks like:
>
> <?xml version="1.0"?>
>
> <page xmlns:sql="http://apache.org/cocoon/SQL/2.0">
> <title>Employees</title>
> <content>
> <execute-query xmlns="http://apache.org/cocoon/SQL/2.0">
> <query>
> select emid, emfname, emlname from employee
> </query>
> </execute-query>
> </content>
> </page>
>
>Both are nearly stock from the Cocoon distribution and seem to work just fine (that
>is, the output is what I would expect to see).
>
>My problem comes in attempting to take that resultset and process it in the
>stylesheet. Ideally, I'd like to create a single stylesheet that would use the HTTP
>request parameter order_by as the sort-by column. My XSL looks like this (including
>just the relevant template):
>
> <xsl:template match="sql:rowset">
> <xsl:param name="order_by"/>
> <table border="0" width="100%">
> <tr bgcolor="aaccee" align="left">
> <th><a href="?order_by=sql:emid">Employee ID</a></th>
> <th><a href="?order_by=sql:emfname">First Name</a></th>
> <th><a href="?order_by=sql:emlname">Last Name</a></th>
> </tr>
> <xsl:for-each select="sql:row">
> <xsl:sort select="$order_by"/>
> <tr>
> <xsl:attribute name="bgcolor">
> <xsl:choose>
> <xsl:when test="position() mod
>2 = 0">
>
><xsl:text>white</xsl:text>
> </xsl:when>
> </xsl:choose>
> </xsl:attribute>
> <xsl:apply-templates/>
> </tr>
> </xsl:for-each>
> </table>
> </xsl:template>
>
>It appears to me that $order_by DOES hold the value that I'm interested in, since I
>can include:
>
> <td><xsl:value-of select="$order_by"/></td>
>
>just after the <xsl:apply-templates/> and get the expected value in that column.
>
>
>
>The mailing list archives mentioned something similar to "*[name()=$order_by]" as
>being a working answer, but it doesn't seem to have any affect upon the output in
>this situation.
>
>With my limited knowledge of Cocoon and XSL, I'm not sure where to go from here. I
>have tested using URI path extensions (e.g. /sql/sql-page/ByID) and choosing the
>stylesheet in sitemap.xmap based on that, and that seems to work, but it would work
>out to be a maintenance nightmare holding onto stylesheets for each possible sortable
>column in each page.
>
>If I want to use request parameters, are XSPs my only option?
>
>What (obvious, I'm quite sure) options do I have at this point?
>
>Thank you for any help or pointers anyone can offer,
>
>--
>Steve Philp
>Advance Packaging Corporation
>[EMAIL PROTECTED]
>
>---------------------------------------------------------------------
>Please check that your question has not already been answered in the
>FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>
>
>To unsubscribe, e-mail: <[EMAIL PROTECTED]>
>For additional commands, e-mail: <[EMAIL PROTECTED]>
>
>
---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>
To unsubscribe, e-mail: <[EMAIL PROTECTED]>
For additional commands, e-mail: <[EMAIL PROTECTED]>