Subject: RE: [xsl] Re: sorting From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx> Date: Tue, 18 Jun 2002 08:50:16 +0100 |
> 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@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > > 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@xxxxxx> > > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Re: sorting, Joerg Heinicke | Thread | [xsl] Getting XML and XSL from PDF, Alarcon, Fabio |
Re: [xsl] Basic xsl:choose question, Meir | Date | RE: [xsl] selecting an element in a, Michael Kay |
Month |