RE: [xsl] generic sort based on attribute names

Subject: RE: [xsl] generic sort based on attribute names
From: "Chaitanya Desai" <cdesai@xxxxxxxxxxx>
Date: Sun, 23 Jan 2005 18:02:55 -0800
I am using Saxon (the editor I am using is Oxygen) and get the following
errors:
1) Attribute separator not allowed in this element
2) error in expression name(), "=""", ., """ "' separator=""



-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: Sun 1/23/2005 3:28 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] generic sort based on attribute names

> >
> > 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>
> >
> 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".

OK: you need to wrap it like this:

> > <xsl:for-each select="e">
> >  <xsl:sort>
      <xsl:value-of>
> >    <xsl:for-each select="@*">
> >      <xsl:sort select="name()"/>
> >      <xsl:value-of select='name(), "=""", ., """ "' separator=""/>
> >    </xsl:for-each>
      </xsl:value-of>
> >  </xsl:sort>
> >  <xsl:copy-of select="."/>
> > </xsl:for-each>
>
> 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.
>
Looks like the error message needs improving...

Michael Kay
http://www.saxonica.com/

Current Thread