|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: How to sort attribute?
I thought this code should have sorted attribute nodes by names(seems
logical). I tested with Saxon 8.4, and it sorted the attributes by
name.
<xsl:for-each select="@*">
<xsl:sort select="name()"/>
I remember David Carlisle telling some time back on XSL-List, that XML
Spec is notoriously famous for such anomalies.
Regards,
Mukul
http://gandhimukul.tripod.com
On 8/13/05, Ross, Douglas <DRoss@xxxxxxxxxx> wrote:
> John,
>
> Since Michael Kay points out that attribute order is implementation
> dependent and not quaranteed, you might consider transforming your
> attributes into elements, where element order is quaranteed to be
> maintained in document order. You could change Mukul's stylesheet
> slightly:
>
> <xsl:template match="x">
> <x>
> <xsl:for-each select="@*">
> <xsl:sort select="name()"/>
> <!-- change this to element tag:
> <xsl:attribute name="{name()}"><xsl:value-of
> select="."/></xsl:attribute> -->
> <xsl:element name="{name()}"><xsl:value-of
> select="string(.)"/></xsl:element>
> </xsl:for-each>
> </x>
> </xsl:template>
>
>
> Douglas Ross
> Senior Software Engineer, Advanced Development
> Kronos
> www.kronos.com
> Improving the Performance of People and Business(tm) by making software
> Smaller, Faster, Sharper, Easier
>
>
> -----Original Message-----
> From: Mukul Gandhi [mailto:gandhi.mukul@xxxxxxxxx]
> Sent: Saturday, August 13, 2005 5:33 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: How to sort attribute?
>
> Hi John,
> This could be the use-case for the problem you are trying to solve.
>
> XML file -
> <root>
> <x a="1" d="2" c="4" />
> </root>
>
> XSLT file -
> <?xml version="1.0"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
>
> <xsl:output method="xml" indent="yes" />
>
> <xsl:template match="/root">
> <xsl:apply-templates select="x" />
> </xsl:template>
>
> <xsl:template match="x">
> <x>
> <xsl:for-each select="@*">
> <xsl:sort select="name()"/>
> <xsl:attribute name="{name()}"><xsl:value-of select="."
> /></xsl:attribute>
> </xsl:for-each>
> </x>
> </xsl:template>
>
> </xsl:stylesheet>
>
> Regards,
> Mukul
>
> On 8/13/05, John Li <johnli121@xxxxxxx> wrote:
> > Hi,
> >
> > When exporting one node and its attribute, I want to sort its
> attributes
> > lexicographic. I try it as below but always fail. Anyone could help?
> >
> > <xsl:for-each select="@*">
> > <xsl:sort select="name()"/>
> > <xsl:copy/>
> > </xsl:for-each>
> >
> > Thanks,
> > John
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








