Nikolas Nehmer wrote:
Thanks a lot but this version doesn't work as well. The output it
produces is:
<table xmlns="http://www.w3.org/1999/xhtml">
<tr>
<th>Person</th>
</tr>
</table>
So it seams to pick the top level elements not the second level
elements. But when I try to use /*/* in the match attribute it doesn't
help. Any suggestions?
You have to use the same context in both the key and the
key retrieval:
<xsl:key name="elements-by-name" match="/*/*" use="name(.)" />
<xsl:template match="/*">
<xsl:variable name="unique-elements" select="*[generate-id()=
generate-id(key('elements-by-name',name(.)))]"/>
...
<html>
<table>
<tr>
<xsl:apply-templates select="$unique-elements" mode="header" />
</tr>
...
</table>
</html>
</xsl:template>
Wouldn't you think it's a good idea to read the URLs I posted? There
is much background information as well as more extensive examples for
how to use these techniques. Understanding why it's supposed to work
will save you a lot of trial-end-error type work.
J.Pietschmann
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list