From: Carbone Cedric (C.Carbone@NEOPOST.FR)
Date: 07/10/2003 - 14:42
Salut la liste !
J'ai un petit probleme à vous soumetre et je ne sais pas si XML Schema peut
le résoudre.
J'aimerais valider par un XSD les fichiers XML suivant
<?xml version="1.0"?>
<root>
<pere numeroLot="lot1">
<fils param="fils10"/>
<fils param="fils11"/>
</pere>
</root>
et le fichier suivant :
<?xml version="1.0"?>
<root>
<pere numeroLot="lot2">
<fils param="fils20"/>
<fils param="fils21"/>
<fils param="fils22"/>
</pere>
</root>
Le nom (et leur nombre) des attributs param de la balise <fils> sont pris
dans une des deux énumérations lot1Param ou lot2Param. Le choix de la bonne
énumération se fait par la valeur de l'attribut numeroLot de la balise
<pere>.
De plus, suivant l'énumération retenue, le nombre de fois qu'apparait ma
balise <fils> doit correspondre au nombre d'occurences de l'énumération lot1
ou lot2 (dans mon essai de XSD ci-dessous, j'ai mis <xs:element name="fils"
maxOccurs="unbounded"> pour simplifier)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- definition des types de la balise <pere> -->
<xs:simpleType name="numeroLotType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="lot1"/>
<xs:enumeration value="lot2"/>
</xs:restriction>
</xs:simpleType>
<!-- definition des types des balises <fils> -->
<xs:simpleType name="lot1Param">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="fils10"/>
<xs:enumeration value="fils11"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="lot2Param">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="fils20"/>
<xs:enumeration value="fils21"/>
<xs:enumeration value="fils21"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element name="pere">
<xs:complexType>
<xs:sequence>
<!-- maxOccurs dépendant normalement du nbr d'occurences de l'énnumération
lotXParam -->
<xs:element name="fils" maxOccurs="unbounded">
<xs:complexType>
<!-- MON PROBLEME2 COMMENCE ICI !!!!!!!!!!!
Si <pere numeroLot="lot1"> alors écrire -->
<xs:attribute name="param" type="lot1Param" use="required"/>
<!-- Si pere numeroLot="lot2" alors écrire
<xs:attribute name="param" type="lot2Param" use="required"/>
MON PROBLEME2 FINIT ICI !!!!!!!!!!! -->
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="numeroLot" type="numeroLotType" use="required"/>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
N'hésitez pas à me demander plus d'explication si je n'ai pas été très
clair.
--
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
|