xsl-list
[Top] [All Lists]

RE: Sorting issue, sorting by description given code

2003-10-28 23:51:18
Hi,

Aim: To output a list of those Group names for which a Point 
belongs to,
sorted alphabetically.

From above we have three points, so the desired result would be thus

Group List...

DEFAULT
LOTS
TREES 

You're almost there, see the inline comments.

  <xsl:key name="groups" match="Point" use="@group" />
  <!-- Add new key for sorting -->
  <xsl:key name="x" match="Group" use="@num" />
  <xsl:template match="SEEDB">
    <table class = "style1" border="1" cellspacing="0" cellpadding="2" 
width="650">
      <tr >
        <th align="center">Point Groups</th>
      </tr>
      <xsl:for-each select="Points/Point[generate-id(.) = 
generate-id(key('groups',@group)[1])]">
        <!-- Sort according to the name -->
        <xsl:sort select="key('x', @group)/@name" data-type="text"/>
        <xsl:apply-templates select="."/>
      </xsl:for-each>
    </table>
  </xsl:template>
  <xsl:template match="Point">
    <tr>
      <td align="center">
        <!-- You had a variable $group here, you want to use current() function 
-->
        <xsl:value-of select="/SEEDB/Groups/Group[(_at_)num = 
current()/@group]/@name"/>
      </td>
    </tr>
  </xsl:template>

sort the nodeset, and then output, but I wanted to avoid this if
possible, since I am led to believe that some parsers don't have an
equivalent "msxsl:node-set" function.

Well, almost, if not all XSLT processors have some sort of e:node-set 
extension. See <http://exslt.org/> for the common extension for RTF -> node-set 
conversion.

Cheers,

Jarno - Assemblage 23: Pages

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



<Prev in Thread] Current Thread [Next in Thread>