une version complété qui marche chez moi
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:key name="rubricKey" match="rubric" use="name"/>
<xsl:key name="topicKey" match="topic" use="concat(../name,name)"/>
<xsl:key name="contentKey" match="content" use="concat(../../name,../name,name)"/>
<xsl:template match="/rubrics">
<rubrics>
<xsl:for-each select="rubric[generate-id(.)=generate-id(key('rubricKey',name)[1])]">
<rubric>
<xsl:copy-of select="name"/>
<xsl:for-each select="../rubric[name=current()/name]/topic[generate-id(.)=generate-id(key('topicKey',concat(../name,name))[1])]">
<topic>
<xsl:copy-of select="name"/>
<xsl:for-each select="../../rubric[name=current()/../name]/topic[name=current()/name]/content[generate-id(.)=generate-id(key('contentKey',concat(../../name,../name,name))[1])]">
<content>
<xsl:copy-of select="name"/>
<xsl:for-each select="key('contentKey',concat(current()/../../name,current()/../name,name))">
<xsl:copy-of select="section"/>
</xsl:for-each>
</content>
</xsl:for-each>
</topic>
</xsl:for-each>
</rubric>
</xsl:for-each>
</rubrics>
</xsl:template>
</xsl:stylesheet>
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Wed Aug 24 11:35:14 2005