Subject: RE: [xsl] generic sort based on attribute names From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sun, 23 Jan 2005 17:37:24 -0000 |
This is quite tricky in XSLT 1.0 as the sort key has to be expressed as an XPath expression, it can't be computed using XSLT code. In 2.0 (a) XPath expressions are more powerful, and (b) you can do an XSLT computation inside the xsl:sort. Here's a solution using the latter approach: <xsl:for-each select="e"> <xsl:sort> <xsl:for-each select="@*"> <xsl:sort select="name()"/> <xsl:value-of select='name(), "=""", ., """ "' separator=""/> </xsl:for-each> </xsl:sort> <xsl:copy-of select="."/> </xsl:for-each> Not tested; and note (a) this doesn't handle namespaces, and (b) it doesn't attempt to change the order of attributes in the output, since that's not under XSLT's control anyway. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Chaitanya Desai [mailto:cdesai@xxxxxxxxxxx] > Sent: 23 January 2005 03:23 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] generic sort based on attribute names > > > Hi, > I am trying to write a generic sort that uses the 'concatenated > name-value pairs of all attributes sorted' as the key to sort > elements > at a particular level. > Example > Suppose > <root> > <e b="bb" y="yy"/> > <e z="zz" a="aa"/> > </root> > is the XML I want to sort. > The result of the sort should be > <root> > <e a="aa" z="zz" /> > <e b="bb" y="yy" /> > </root> > Thus the attributes within an element are sorted and then the > key used > for sorting elements would be: > 'az' and 'by' respectively (thus 'az' < 'by'). > I am able to sort attributes within an element. > But I am having trouble setting the key to sort for elements. > Any help would be greatly appreciated. > Thanks > Chaitanya
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] generic sort based on att, Dimitre Novatchev | Thread | Re: [xsl] generic sort based on att, Dimitre Novatchev |
RE: [xsl] Determine last element be, Michael Kay | Date | [xsl] Sum with generate-id, Is it r, Marcos Hercules Sant |
Month |