Bonsoir Jérome,
Effectivement, votre code est très proche de ce que je souhaite obtenir.
Je viens effectuer un essai rapide, ça marche impeccable lorsque tous
les attributs sont bien présents pour chaque élément. Par contre,
lorsque les attributs ne sont pas tous présents, il en manque dans le
résumé et je n'ai pas encore compris pourquoi. Je vais creuser et je
vous tiendrai informé.
ce premier test a été fait avec Saxon (je n'ai pas XsltProc sur cette
machine). Je testerai en début de semaine. Normalement, les performances
devraient être meilleurs avec votre code.
Moi qui pensais que des langages comme xslt réduisaient le nombre de
variantes possibles pour traiter un problème, voila une preuve que non ;-)
Merci pour cette solution très interressante.
Cordialement
Bob
Jerome Truffot a écrit :
>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
>
>
--
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 Fri Feb 25 21:16:17 2005