|
Subject: Re: [xsl] dynamic sort using attributes From: Florent Georges <darkman_spam@xxxxxxxx> Date: Tue, 5 Dec 2006 11:09:24 +0100 (CET) |
L P wrote:
Hi
> <reminders>
> <reminder category="Test" nm="XXX" description="foobar"/>
> <reminder category="Test12" nm="yyy" description="barfoo"/>
> </reminders>
> I would like to sort the xml file based on the attribute
> which will be supplied as a parameter.
If I understand correctly, the user give the name of an attribute as
parameter, and this name is used to identify the attribute to use to
sort. For example:
If it is correct, you can look at the following. Be aware this is
not namespace-aware! Depending on your requirements and how you launch
the transformation, you can use a xs:QName instead of a xs:string.
(drkm)[119] ~/xslt/tests$ cat lp.xsl
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="sort.attribute.name" as="xs:string"
select="'description'"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="reminders">
<xsl:copy>
<xsl:apply-templates select="reminder">
<xsl:sort select="
@*[local-name() eq $sort.attribute.name]"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
(drkm)[120] ~/xslt/tests$ cat lp.xml
<reminders>
<reminder category="Test" nm="XXX" description="foobar"/>
<reminder category="Test12" nm="yyy" description="barfoo"/>
<reminder category="01Test" nm="xxx" description="foofoo"/>
</reminders>
(drkm)[121] ~/xslt/tests$ saxon lp.xml lp.xsl
<reminders>
<reminder category="Test12" nm="yyy" description="barfoo"/>
<reminder category="Test" nm="XXX" description="foobar"/>
<reminder category="01Test" nm="xxx" description="foofoo"/>
</reminders>
(drkm)[122] ~/xslt/tests$ saxon lp.xml lp.xsl \
sort.attribute.name=nm
<reminders>
<reminder category="Test" nm="XXX" description="foobar"/>
<reminder category="01Test" nm="xxx" description="foofoo"/>
<reminder category="Test12" nm="yyy" description="barfoo"/>
</reminders>
(drkm)[123] ~/xslt/tests$ saxon lp.xml lp.xsl \
sort.attribute.name=category
<reminders>
<reminder category="01Test" nm="xxx" description="foofoo"/>
<reminder category="Test" nm="XXX" description="foobar"/>
<reminder category="Test12" nm="yyy" description="barfoo"/>
</reminders>
(drkm)[124] ~/xslt/tests$
Regards,
--drkm
___________________________________________________________________________
Yahoo! Mail riinvente le mail ! Dicouvrez le nouveau Yahoo! Mail et son interface rivolutionnaire.
http://fr.mail.yahoo.com
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] dynamic sort using attrib, Andrew Welch | Thread | [xsl] Re:dynamic sort using attribu, L P |
| Re: [xsl] dynamic sort using attrib, Andrew Welch | Date | Re: [xsl] How do I line up fo:block, Asbjørn Thorsen |
| Month |