From: Eric van der Vlist (vdv@dyomedea.com)
Date: 21/11/2002 - 10:50
On Thu, 2002-11-21 at 09:28, Verachten Bruno wrote:
>
> Bonjour,
>
> >J'ignore dans quelle application vous souhaitez réaliser cette
> >opération.
> C'est à l'intérieur d'une feuille de style XSLT qui manipule
> un XML Schema.
C'est un problème auquel j'ai été confronté (le plan de la section
"référence" de mon livre est généré par transformation XSLT du schéma
W3C XML Schema pour W3C XML Schema...
La solution que j'ai fini par adopter est une comparaison de chaîne de
caractères sur une "sérialisation canonique" des définitions de schéma.
La canonicalisation devient rapidement complexe et je n'ai, par exemple
pas géré certains cas particuliers comme le fait que:
<xs:all>
<xs:element ref="foo"/>
<xs:element ref="bar"/>
</xs:all>
et
<xs:all>
<xs:element ref="bar"/>
<xs:element ref="foo"/>
</xs:all>
sont équivalents alors que
<xs:sequence>
<xs:element ref="foo"/>
<xs:element ref="bar"/>
</xs:sequence>
et
<xs:sequence>
<xs:element ref="bar"/>
<xs:element ref="foo"/>
</xs:sequence>
ne le sont pas.
Je pense que pour gérer cela, il faudrait un langage formel permettant
de définir des "canonicalisations" (éventuellement basé sur XSLT) ou un
mécanisme d'annotation (éventuellement basé sur W3C XML Schema) pour
définir noeud par noeud comment doivent être effectuées les
comparaisons.
> >La comparaison de deux objets consiste alors tout simplement à
> >comparer
> >leurs hachages respectifs, ce qui est effectivement trivial.
> En effet. Reste à voir l'implantation de l'algo en XSLT.
Oui, mais encore une fois, le problème est la définition de la
canonicalisation ou celle de l'équivalence de deux noeuds plus que la
comparaison par hachage...
Cordialement,
Eric van der Vlist
--
Freelance consulting and training.
http://dyomedea.com/english/
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
--
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)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|