xsl-list
[Top] [All Lists]

[xsl] Is it possible to create xsl:sort from input parameters using XSL T 2.0 (Saxon)?

2006-07-27 04:00:59
Hi,

I am trying to create dynamic sorts in my XSLT file so the end user can
select different fields to sort the data on then rerun the XSLT. 

The XSLT is called from a vb.net app where the chosen sort fields are passed
as XML into a param called sortField:

<SortFields>
        <SortField DataType="number" CaseOrder="lowercasefirst"
Order="ascending">lenderid</SortField>
        <SortField DataType="number" CaseOrder="lowercasefirst"
Order="ascending">generalproductid</SortField>
</SortFields>

Using the following XSL:

        <xsl:for-each select="$tempRoot/product">
                <xsl:choose>
                        <xsl:when test="boolean($sortField)=true">
                                <xsl:for-each
select="$sortField/SortFields/SortField">
                                        <xsl:sort select="." order="@Order"
data-type="@DataType" case-order="@CaseOrder" />
                                </xsl:for-each>

                        </xsl:when>
                </xsl:choose>
        </xsl:for-each>


which (in my head at least) would result in something akin too: 

        <xsl:for-each select="$tempRoot/product">
                <xsl:sort select="lenderid" order="ascending"
data-type="number" case-order="lowercasefirst"/>
                <xsl:sort select="generalproductid" order="ascending"
data-type="number" case-order="lowercasefirst"/>
        </xsl:for-each> 


The main input XML document which is being transformed looks like this:

<root>
        <product>
                <lenderid>1234</lenderid>
                <generalproductid>12344321</genrealproductid>
                <lendername>fred</lendername>
                 ...
        </product>
        <product>
                ...
        </product>
</root>


Having tried doing it I'm now pretty sure that this isn't possible as I get
a compile error on the xsl:sort order as it is expecting ascending or
descending.

Is there any other way of achieving this?


Cheers

Nick




The Investment, Life & Pensions Annual Awards Lunch 2006 will take place on 
Wednesday 20th September at The Brewery, Chiswell Street, London. To book your 
table or for more information, contact Miranda Siliprandi on 0870 2250 491 or 
email msiliprandi(_at_)moneyfacts(_dot_)co(_dot_)uk

The Moneyfacts 11th Annual Conference takes place on Tuesday 7th November 2006 
at the Shaw Centre, Novotel Euston London in association with our Platinum 
Sponsors, CACI. For sponsorship and general enquires please email Anne Joyce at 
ajoyce(_at_)moneyfacts(_dot_)co(_dot_)uk or to reserve your place, call our 
ticket hotline on 0870 2250 100.

E-mail Disclaimer: This e-mail message contains confidential information and is 
intended only for the individual entity or organisation named. If you are not 
the named addressee you should not disseminate, distribute, print or copy this 
e-mail and/or attachments (either whole or partial). To do so may constitute a 
breach of confidence and/or privilege. Please notify the sender immediately by 
e-mail if you have received this e-mail by mistake and delete this e-mail 
permanently from your system. E-mail transmissions cannot be guaranteed to be 
secure or error-free as information could be intercepted, corrupted, lost, 
destroyed, maliciously altered, arrive late or incomplete, or contain viruses. 
The sender therefore does not accept liability for any errors or omissions in 
the contents of this message, which arise as a result of e-mail transmission. 
If verification is required please request a hard-copy version. Please note 
that any views or opinions presented in this e-mail are !
 those of the author and do not necessarily represent those of Moneyfacts Group 
plc or their affiliates. Whilst every step is taken to ensure e-mails are virus 
free when they leave Moneyfacts Group systems, we accept no liability for any 
damage caused by any virus received.   This outbound message has been scanned 
for viruses by MailControl for Moneyfacts Group plc.  

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>
  • [xsl] Is it possible to create xsl:sort from input parameters using XSL T 2.0 (Saxon)?, Nick Glenister <=