|
Re: egalité de noeuds: msg#00205text.xml.french.tech
Le mercredi 22 décembre 2004 à 19:32 +0100, Benoit Lefevre a écrit : > Salut. > > Je ne penses pas que tu puisses resoudre ton probleme > en une seule formule XPath. A confiermer ... C'est d'autant plus difficile que l'égalité de noeuds est une notion plus floue qu'il n'y parait. Egalité de noeuds peut se comprendre dans le sens de "ces noeuds sont le mêmes dans le document" mais aussi (comme c'est le cas ici) comme "ces noeuds ont le même contenu". Cette deuxième "identité" est elle-même dépendante de l'application puisque suivant les applications on va pouvoir considérer que les variations suivantes sont "identiques" ou non : <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> <foo1>texte</foo1> <foo2>autre texte</foo2> </foo> <foo xmlns="http://exemple.com/ns1/" baz="2004-12-23T09:56:25Z" bar="1"> <foo1>texte</foo1> <foo2>autre texte</foo2> </foo> <x:foo xmlns:x="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> <x:foo1>texte</x:foo1> <x:foo2>autre texte</x:foo2> </x:foo> <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> <foo1 xmlns="http://exemple.com/ns1/">texte</foo1> <foo2 xmlns="http://exemple.com/ns1/">autre texte</foo2> </foo> <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> <x:foo1 xmlns:x="http://exemple.com/ns1/">texte<x:/foo1> <y:foo2 xmlns:y="http://exemple.com/ns1/">autre texte</y:foo2> </foo> <foo xmlns="http://exemple.com/ns1/" xmlns:ns2="http://exemple.com/ns2/" baz="2004-12-23T09:56:25Z" bar="1"> <foo1>texte</foo1> <foo2>autre texte</foo2> </foo> <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"><foo1>texte</foo1><foo2>autre texte</foo2></foo> <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> <foo1> texte </foo1> <foo2> autre texte </foo2> </foo> <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> <foo2>autre texte</foo2> <foo1>texte</foo1> </foo> <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> <!-- commentaire --> <foo1>texte</foo1> <foo2>autre texte</foo2> </foo> <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> <?ma-pi valeur="x"?> <foo1>texte</foo1> <foo2>autre texte</foo2> </foo> <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> <foo1><![CDATA[texte]]></foo1> <foo2>autre texte</foo2> </foo> <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> <foo1>&texte;</foo1> <foo2>autre texte</foo2> </foo> <foo xmlns="http://exemple.com/ns1/" bar="1" baz="2004-12-23T09:56:25Z"> &foo1; <foo2>autre texte</foo2> </foo> <foo xmlns="http://exemple.com/ns1/" bar="01.0" baz="2004-12-23T09:56:25T+00:00"> <foo1>texte</foo1> <foo2>autre texte</foo2> </foo> <foo xmlns="http://exemple.com/ns1/" bar="0001" baz="2004-12-23T11:56:25T+02:00"> <foo1>texte</foo1> <foo2>autre texte</foo2> </foo> etc... Certaines de ces variations ne sont pas détectables en XPath. D'autres sont détectables mais généralement ignorée. D'autres enfin s'appuient sur les types W3C XML Schema. Dans chacun des cas, certaines applications ont de bonnes raisons d'ignorer ces différences et d'autres ont d'aussi bonnes raisons de ne pas le faire :-) ... En ce qui concerne les variations détectables en XSLT, on peut écrire des templates permettant d'effectuer ces comparaisons en ignorant ou non certaines d'entre elles. C'est assez pénible à écrire, mais malgré tout possible. Vous trouverez un exemple dans la transformation qui implémente XSLTUnit : http://xsltunit.org/xsltunit.xsl (utiliser "save as" ou "view source" pour accéder au source). Cordialement, Eric van der Vlist -- Have you ever thought about unit testing XSLT templates? http://xsltunit.org ------------------------------------------------------------------------ Eric van der Vlist http://xmlfr.org http://dyomedea.com (ISO) RELAX NG ISBN:0-596-00421-4 http://oreilly.com/catalog/relax (W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema ------------------------------------------------------------------------ |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Ignorer casse et diacritique: 00205, Jean-Marie Hoornaert |
|---|---|
| Next by Date: | URGENT : Probleme de recursivite: 00205, pierre . devreux |
| Previous by Thread: | Re: egalité de noeudsi: 00205, Benoit Lefevre |
| Next by Thread: | Re: RE : gestion de l affichage par lien href: 00205, Benoit Lefevre |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |