From: Eric van der Vlist (vdv@dyomedea.com)
Date: 07/10/2003 - 16:37
Bonjour,
On Tue, 2003-10-07 at 16:42, Carbone Cedric wrote:
> 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>.
Non, ceci (contrainte de co-occurrence) n'est pas possible dans le cas
général.
Une des solutions si vous définissez vous même le vocabulaire serait de
remplacer l'attribut numeroLot par un attribut xsi:type. Cet attribut
"magique" permet de forcer le type de l'élément dans lequel il est
placé. Si vous définissez un type par énumération, vous pouvez
éventuellement vous tirer d'affaire.
Une autre solution qui s'éloigne un peu plus de ce que vous demandez
serait de définir des noms d'éléments différents (pereLot2, pereLot1).
Sinon, vous pouvez soit remplacer W3C XML Schema par RELAX NG qui fait
cela très bien ou rajouter une contrainte Schematron à votre schéma W3C
XML Schema.
Cordialement,
Eric
--
Have you ever thought about unit testing XSLT templates?
http://xsltunit.org
Upcoming schema tutorial:
- Philadelphia (7/12/2003) http://makeashorterlink.com/?V28612FC5
Tutoriel XSLT:
- Paris (25/11/2003) http://makeashorterlink.com/?L2C623FC5
------------------------------------------------------------------------
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
|