Tony,
Both the key declaration, and the variable declarations should go at the
top level.
Sorry 'bout that, too ... I assumed you'd be able to interpolate those
critical details. The idea is to pull the deduplication out completely from
your template logic, since now it'll be done once and once only, for all
the nodes you want to handle.
So (tuning up just a bit more):
<xsl:key name="resource-by-id" match="resource" use="@swgcraft_id"/>
<xsl:variable name="unique-resources"
select="//resources[generate-id() =
generate-id(key('resources-by-id',@swgcraft_id))]"/>
<xsl:template match="server[(_at_)name='Ahazi']">
<resources>
<xsl:for-each select="$unique-resources">
<xsl:sort select="."/>
<resource>
<xsl:copy-of select="@swgcraft_id"/>
<xsl:copy-of select="name | type"/>
...etc
HTH--
Wendell
======================================================================
Wendell Piez
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc. http://www.mulberrytech.com
17 West Jefferson Street Direct Phone: 301/315-9635
Suite 207 Phone: 301/315-9631
Rockville, MD 20850 Fax: 301/315-8285
----------------------------------------------------------------------
Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================