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