Je ne suis pas sur d'avoir bien compris ce qu'il vous fallait. Le code
suivant vous irait ?
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
<xsl:template match="/ | *">
<xsl:variable name="node" select="." />
<xsl:variable name="name" select="name()" />
<xsl:if test="not(preceding-sibling::*[name()=$name])">
<xsl:copy>
<xsl:for-each select="@*">
<xsl:copy />
</xsl:for-each>
<xsl:for-each
select="following-sibling::*[name()=$name]/@*">
<xsl:variable name="attrName" select="name()" />
<xsl:if test="not($node/@*[name()=$attrName])">
<xsl:copy />
</xsl:if>
</xsl:for-each>
<xsl:apply-templates select="*"/>
</xsl:copy>
</xsl:if>
</xsl:template>
</xsl:transform>
Je suis loin d'être un spécialiste. Il y a surement mieux pour obtenir
le même résultat mais en attendant ça vous aidera peut-être.
Cordialement,
Jérôme
Bob wrote:
>(re)Bonjour Benoît,
>
>j'ai testé un peu rapidement tout à l'heure. En fait c'était toujours ma
>version d'xslt qui était en action ;-)
>
>Benoît Barré a écrit :
>
>
>
>>Est-ce suffisant ?
>>
>>
>>
>>
>non non non, pas du tout ;-) et ça me rassure. (j'avoue que j'ai eu
>quelques minutes de gros doutes sur ma compréhension du fonctionnement
>de xcopy)
>
>En fait, je souhaite que la transformation ne retourne qu'une fois
>chaque élément et attribut. C'est ce que fait :
>http://www.bobiciel.com/maxopeninfo/tests/XmlResumeTest.xsl
>mais au prix fort en terme de temps et de ressources avec XsltProc
>
>il me semble qu'elle doit pouvoir être améliorée, en particulier mon
>horrible
>concat(name(current()/../..),name(current()/..),name(current()),name(.)))
>qui doit amha être à l'origine de ce temps de traitement excessif
>
>Merci quand même pour cette réponse ;-)
>
>Bon week end
>
>Bob
>
>
>
>><xsl:template match="/ | @* | *">
>> <xsl:copy>
>> <xsl:apply-templates select="@* | *"/>
>> </xsl:copy>
>></xsl:template>
>>
>>
>>bB
>>
>>
>>
>>========================================
>>Date du message : févr. 25 2005, 02:33 PM
>>De : "Bob"
>>A : xml-tech@xxxxxxxxx
>>Copie :
>>Sujet : [xml-tech] XML résumé
>>
>>Bonjour,
>>
>>J'aurai besoin de votre expertise pour une petite transformation xslt
>>qui me pose quelques problèmes.
>>
>>Cette xslt permet d'obtenir un petit fichier xml résumant le contenu de
>>n'importe quel xml plus volumineux. On retrouve dans le résultat, un
>>exemplaire de chaque élément (et ses attributs avec exemple de valeur)
>>présent dans le fichier source. L'imbrication des éléments est également
>>conforme à celle d'origine.
>>
>>Avec XsltProc, ça fonctionne très bien sur des petits fichiers xml (qq
>>10 éléments) par contre, la durée de traitement augmente de façon
>>exponentielle avec la taille du fichier traité :-(
>>
>>Vous pouvez la télécharger ici :
>>http://www.bobiciel.com/maxopeninfo/tests/XmlResumeTest.xsl
>>
>>Y a-t-il une astuce ou une optimisation pour contourner ce problème sur
>>xsltproc.
>>
>>Avez vous une autre solution à me proposer pour réaliser ce "résumé" ?
>>
>>D'avance merci pour votre aide
>>
>>Cordialement
>>
>>Bob
>>
|