Subject: Re: [xsl] generic sort based on attribute names From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Mon, 24 Jan 2005 05:54:49 +1100 |
On Sun, 23 Jan 2005 17:37:24 -0000, Michael Kay <mike@xxxxxxxxxxxx> wrote: > 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/ Saxon 8.2 produces an error message that: "A sequence of more than one item is not allowed as the @sort-key attribute of xsl:sort". Besides this problem, does xsl:sort have a "sort-key" attribute? I don't see it specified either in the latest WG draft or in the book. Cheers, Dimitre. > > > -----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, Michael Kay | Thread | RE: [xsl] generic sort based on att, Michael Kay |
[xsl] Sum with generate-id, Is it r, Marcos Hercules Sant | Date | Re: [xsl] how xslt2 affects usage o, Dimitre Novatchev |
Month |