Merci pour vos éléments de réponse. J'ai enfin trouvé la solution à mon
problème :
<?xml version="1.0" ?>
<xsl:transform
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:key name="elements-by-att" match="//*" use="@att" />
<xsl:template match="/">
<root>
<xsl:for-each select="//*[@att][count(. |
key('elements-by-att', @att)[1]) = 1]">
<element att="{@att}">
<xsl:for-each select="../*[@att]">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:for-each>
</element>
</xsl:for-each>
</root>
</xsl:template>
<xsl:template match="*">
<xsl:choose>
<xsl:when test="@att">
<element ref="{@att}" />
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:apply-templates select="*[@att][count(. |
key('elements-by-att', @att)[1]) != 1] | *[not(@att)]" />
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:transform>
Fabrice
At 12:25 23/04/2003 +0200, you wrote:
>Bonjour,
>
> > -----Original Message-----
> > From: Fabrice Estiévenart [mailto:fe@cetic.be]
> > Sent: mercredi 23 avril 2003 09:40
> > To: xml-tech@xmlfr.org
> > Subject: [xml-tech] Re: Encore une énigme XSL...
> >
> >
> > Le 'hic' dont vous parlez est sans doute le fait que la balise <F>
> > n'apparaisse pas dans le document résultat ;o)
> > Même si ce défaut est facile à repérer, il est beaucoup moins évident à
> > expliciter !!! En effet, je ne comprends pas la cause exacte de ce
> > phénomène. Pourriez-vous m'éclairer sur ce sujet ?
>
>En fait, je pensais d'abord que c'était un problème intrinsèque de la
>transformation; mais en y regardant de plus près, il s'avère en fait...
>que j'ai tout simplement omis de gérer cette partie de votre spécification
>(suis passé dessus trop vite en 1ère lecture sans doute, désolé :) :
>
>'[...]Ajoutons que si, dans le document source, deux éléments consécutifs
>ont la même valeur pour l'attribut "att" (ex : <E> et <F>) alors ils
>doivent être inclus dans le même <element> global[...]'
>
>(mais, hélas, étant très pris actuellement, je crois que je vais vous
>laisser traiter cet ajustement... ;-)
>
> > Merci d'avance,
> >
> > Fabrice
>
>
>Cordialement,
>Cyril
>
>--
>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)
--
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 Apr 23 15:00:07 2003