This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Re: sorting


> Thanks for the input. 
> However, I wasn't being clear about the line that didn't work:
> 
> <xsl:apply-templates select="row">
>        <xsl:sort select="column[number(@sort-column)]" 
> order="{$sort-order}" /> </xsl:apply-templates>

This means column[position()=number(@sort-column)], i.e. select the
columns whose position is the same as the value of their @sort-column
attribute. I've no idea what you're trying to do, but I'm sure this code
is nonsense.

Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com 
 
> 
> The XML looks as follows:
> 
> <table sort-col="2" sort-order="ascending">
>   <row>
>   <column>A</column>
>   <column>N</column>
>   <column>Z</column>
>  </row>
> </table>
> 
> Since the attribute 'sort-col' is at the <table> level but 
> the select of the <xsl:apply-templates> is at the 
> <row> level, perhaps this is the problem?  The XSLT engine 
> thinks that the attribute is an attribute of 
> row? Is this what you are saying?
> 
> The case where it does work is when the variable is assigned 
> as follows:
> 
> <xsl:template match="table">
>   <xsl:variable name="sort-col" select="number(@sort-col)" /> 
> 
> and then inside the same template:
> 
> <xsl:apply-templates select="row">
>        <xsl:sort select="column[$sort-col]" 
> order="{$sort-order}" /> </xsl:apply-templates> 
> 
> so this guarantees that the 'sort-col' variable is set properly?
> 
> Thanks,
> Stuart Zakon
> Objects by Design
> 
> 
> > Date: Sat, 15 Jun 2002 01:23:05 +0200
> > From: Joerg Heinicke <joerg.heinicke@gmx.de>
> > Subject: Re: [xsl] Re: sorting
> > 
> > OBD wrote:
> > > That works. Thanks.
> > > In case there is no sort column, will setting the 
> variable $chosen 
> > > to some value like 0 disable the sort? This is desired so I don't 
> > > have to use <xsl:if> to special case the
> > > sorting (there is a related thread on this topic but I 
> want to confirm for
> > > this example).
> > 
> > 0 is ok. column[0] doesn't exist, so there is nothing to 
> sort for and
> > you should get the columns unsorted.
> > 
> > > Also, I tried using an attribute directly  in the 
> predicate instead 
> > > of a variable and it didn't work. Is this supposed to 
> work? Example:
> > > 
> > > <xsl:sort select="column[number(@sort-column)]"/>
> > 
> > It's absolutely correct XPATH. But it will not do what you 
> want as you
> > already have seen. Written in this way @sort-column refers to the 
> > column, i.e. the @sort-column's value of the column to sort 
> for. And 
> > column is relative to the expression in the <xsl:for-each 
> select="...">. 
> > I think your only way is to store the @sort-column's value 
> in a variable.
> > 
> > > Is this a valid predicate?  It is still better to use a 
> variable, I 
> > > believe, because then I could use <xsl:if> to set it to 0 
> if there 
> > > was no sort-column attribute and get the
> > > benefits I described above, assuming it works that way.
> > > 
> > > Thanks,
> > > Stuart Zakon
> > 
> > Regards,
> > 
> > Joerg
> > 
> > 
> > 
> > 
> 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]