From: Truffot Jérôme (jerome.truffot@cemagref.fr)
Date: 18/06/2002 - 08:12
Pour la solution de Stephane, ce n'est pas un problème dut à msxml 4.0. dans
les règles de validation donné par le W3C, il est bien précisé qu'un élement
doit avoir un et un seul type associé. Ceci se fait soit par l'attribut type
comme tu as fait :
> <xs:element name="ELEM" type="CT1" />
soit à l'aide des type anonymes dont parle Baruk :
<xs:element name="ELEM">
<xs:complexType>
...
</xs:complexType>
</xs:element>
Pour la solution de Baruk, je suis désolé mais ça ne doit pas marcher non
plus. A priori, toujours sur la spécif du W3C, l'élément choice ne peut pas
avoir comme fils un élement complexType (il peut avoir element, groupe, et
autres).
Bref, il parait difficile de s'en sortir. En effet, comme j'ai dit
précedemment, un XML Schema associe un type à chaque élément. Et ceci, même
si on ne définit pas d'élement directement dans le schéma. On peut ne
définir que des types que l'on appelle ensuite à l'aide des namespace dans
l'instance (fichier XML) à l'aide de l'attribut xs:type. Cet attribut permet
d'associer le type voulu à un élement. Il reste que cet association est trop
rigoureuse, on aimerait bien avoir des éléments qui puissent prendre un type
parmi un ensemble et ceci sans avoir à le préciser.
On revient donc à un sujet dont on a discuté il y a quelques jours sur cette
liste : le typage dynamique (ou automatique).
On s'était arrété à l'attribut xs:type dont je parle un peu plus haut. Je
crois pas que ce soit un véritable typage dynamique vu que l'on précise
quand même l'association element-type.
Bref, je pense qu'à l'heure actuelle, le typage dynamique est un manquement
cruel aux XML schemas. Il est même étonnant qu'aucun parseur ne soit capable
de vérifier la validité d'un document à partir d'une structure définie à
l'aide des types (c'est-à-dire des objets !!!! dans un vrai terme de langage
orienté objets).
-----Message d'origine-----
De : Baruk Toledano [mailto:Baruk.Toledano@dess-ia.infop6.jussieu.fr]
Envoyé : lundi 17 juin 2002 22:03
À : xml-tech@xmlfr.org
Objet : [xml-tech] Re: un complexType ou un autre
et comme ça ?
<xs:complexType name="ELEM" >
> <xs:choice minOccurs="1">
> <xs:complexType name="CT1">
> <xs:sequence>
> <xs:element name="MEMB1" type="xs:string" />
> </xs:sequence>
> <xs:attribute name="att1" type="xs:string" use="required" />
> </xs:complexType>
<xs:complexType name="CT2">
> <xs:sequence>
> <xs:element name="MEMB2" type="xs:string" />
> </xs:sequence>
> <xs:attribute name="att2" type="xs:int" use="required" />
> </xs:complexType>
> </xs:choice>
></xs:complexType>
est ce que le "name" est obligatoire ?
je crois qu'on peut utiliser des types anonymes
Stéphane MAIRESSE a écrit :
>
> Merci pour ta solution mais celle-ci ne me satisfait pas pour la raison
> suivante :
> en effet, la solution proposé m'oblige à insérer des éléments
hiérarchiques
> (Choix1 et Choix2) dont je souhaiterais me passer, voilà le fond de mon
> problème.
>
> Dans le cas où le choix (xs:choice) est effectué entre l'élément ELEM de
> type CT1 et l'élément ELEM de type CT2, le parser msxml 4.0 refuse cette
> syntaxe (voir ci-dessous).
>
> Est ce un manque de msxml 4.0, une autre solution existe elle ou bien XML
> Schema interdit cette syntaxe ?
>
> Merci !!!
> <xs:complexType name="X" >
> <xs:choice minOccurs="1">
> <xs:element name="ELEM" type="CT1" />
> <xs:element name="ELEM" type="CT2" />
> </xs:choice>
> </xs:complexType>
>
> <xs:complexType name="CT1">
> <xs:sequence>
> <xs:element name="MEMB1" type="xs:string" />
> </xs:sequence>
> <xs:attribute name="att1" type="xs:string" use="required" />
> </xs:complexType>
>
> <xs:complexType name="CT2">
> <xs:sequence>
> <xs:element name="MEMB2" type="xs:string" />
> </xs:sequence>
> <xs:attribute name="att2" type="xs:int" use="required" />
> </xs:complexType>
>
> --
> 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)
--
Cordialement,
Baruk Tolédano.
In theory, there is no difference between theory and practice.
But, in practice,there is
--
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)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|