[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: How to sort a $variable and store that into anothe

Subject: Re: How to sort a $variable and store that into another $variable ?
From: "Jean-Philippe Martin" <jeanph01@xxxxxxxxx>
Date: Wed, 10 Dec 2008 14:05:24 -0500
Re:  How to sort a $variable and store that into anothe
Ok.
I'll try to make this understandable.

My need is :
- extract a list of values
- make it unique
- make it sorted
- put it on many columns in a html table

My XML document is big. I create an unordered list of unique values
with this call  (the first // is important since the info can be
anywhere in the xml tree) :

<xsl:variable name="unsortedList"
select="//category[@defid=3183315]//*[@attid=49]/node()[not(.=following::*)]"
/>


I put this list in a variable because i want to make a multi-column
html table with the values. And the technique I used needs a variable

  <table style="width:100%; ">
    <xsl:variable name="unsortedList"
select="//category[@defid=3183315]//*[@attid=49]/node()[not(.=following::*)]"
/>
    <xsl:variable name="nbCol" select="ceiling(count($unsortedList) div 5)"/>

    <xsl:for-each select="($unsortedList)[position() &lt;= $nbCol]">
      <!--xsl:sort select="."/-->
      <xsl:variable name="here" select="position()"/>
      <tr>
        <xsl:call-template name="TDcompetence">
          <xsl:with-param name="competence"
select="$unsortedList[$here+$nbCol*0]"/>
        </xsl:call-template>

        <xsl:call-template name="TDcompetence">
          <xsl:with-param name="competence"
select="$unsortedList[$here+$nbCol*1]"/>
        </xsl:call-template>

        <xsl:call-template name="TDcompetence">
          <xsl:with-param name="competence"
select="$unsortedList[$here+$nbCol*2]"/>
        </xsl:call-template>

        <xsl:call-template name="TDcompetence">
          <xsl:with-param name="competence"
select="$unsortedList[$here+$nbCol*3]"/>
        </xsl:call-template>

        <xsl:call-template name="TDcompetence">
          <xsl:with-param name="competence"
select="$unsortedList[$here+$nbCol*4]"/>
        </xsl:call-template>
      </tr>
    </xsl:for-each>
  </table>


The sort is in comments because it do not work since I access the
value with a position into the $unsortedList variable directly and not
through the for-each which could sort.

Thank you.

On Wed, Dec 10, 2008 at 13:30, Martin Honnen <Martin.Honnen@xxxxxx> wrote:
> Jean-Philippe Martin wrote:
>
>> I'm trying to sort a <xsl:variable> containing 22 nodes and store this
>> sorted list into another xsl:variable.
>>
>> Is this possible ?
>
>
>> Is there a way to do this ?
>>
>> Ps: this is xsl 1.0.
>
> There is a way if you show us your XML input and how exactly you initialize
> your first variable.
>
> Assuming the XML input document is
>
> <root>
>  <foo>10</foo>
>  <foo>2</foo>
>  <foo>1</foo>
>  <foo>4</foo>
> </root>
>
> then this stylesheet
>
> <xsl:stylesheet
>  version="1.0"
>  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
>  <xsl:output indent="yes"/>
>
>  <xsl:template match="/">
>    <xsl:variable name="v1" select="root/foo"/>
>    <xsl:variable name="v2">
>      <xsl:for-each select="$v1">
>        <xsl:sort select="." data-type="number"/>
>        <xsl:copy-of select="."/>
>      </xsl:for-each>
>    </xsl:variable>
>    <result>
>      <xsl:copy-of select="$v2"/>
>    </result>
>  </xsl:template>
>
> </xsl:stylesheet>
>
> outputs
>
> <result>
>   <foo>1</foo>
>   <foo>2</foo>
>   <foo>4</foo>
>   <foo>10</foo>
> </result>
>
> Variable v1 has the foo elements from the XML input, variable v2 a result
> tree fragment of the sorted foo elements.
>
> --
>
>        Martin Honnen
>        http://JavaScript.FAQTs.com/

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.