Subject: Re: [xsl] How to sort attribute? From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx> Date: Sat, 13 Aug 2005 21:27:00 +0530 |
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: [xsl] 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] How to sort attribute?, Ross, Douglas | Thread | Re: [xsl] How to sort attribute?, Kenneth Stephen |
RE: [xsl] How to sort attribute?, Ross, Douglas | Date | Re: [xsl] How to sort attribute?, Kenneth Stephen |
Month |