RE: [xsl] how to sort by different attributes in a table

Subject: RE: [xsl] how to sort by different attributes in a table
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Mon, 30 Aug 2004 22:05:44 +0100
This is a FAQ.

Use <xsl:sort select="@*[local-name() = $Sort]"/>

The reason your attempt doesn't work is that a sort key such as $Sort that
doesn't depend on the context node will have the same value for each of the
nodes in the node-set being sorted. The system can't guess that you want to
treat the value of this variable, e.g. "HOSTNAME", as an XPath expression.

Michael Kay

 

> -----Original Message-----
> From: Shen, Ching [mailto:Shenc@xxxxxxxx] 
> Sent: 30 August 2004 20:54
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] how to sort by different attributes in a table
> 
> 
> I have a xml file which looks like
> <Rows>
>   <Row>
>     <Columns A=3D"HOSTNAME" B=3D"IPADDRESS" C=3D"BRAND/MODEL" />
>   </Row>
>  <Row>
>     <Columns A=3D"AA" B=3D"23" C=3D"ibm" />
>   </Row>
> ......
> </Rows>
> 
> 
> I have all attributes list in a table as columns and I need a 
> xsl syntax =
> which will allow me to sort by selected attribute, when they click =
> attribute header,=20
> 
> i. e. when user click 2nd column header, all xml file will sorted by =
> <xsl:sort select=3D"*/@B" />
> 
> The following syntax failed to work and I run out clue. Here  header =
> link set to Sort=3D{position()}=20
> 
>     <xsl:apply-templates select=3D"*/*">
>                 <xsl:sort select=3D"*/@Columns[$Sort]" />
>     </xsl:apply-templates>
> 
> Does anybody have done this before and can help me out with 
> right syntax?
> Your suggestions will be greatly appreciated
> 
> 
> Thank you!
> 
> Ching 

Current Thread