[XSD]choix d'un type d'attribut en fonction du contenu d'un autre attribut

Florian Lasdoulours- Son-Video <[email protected]> Wed, 7 May 2008 15:56:02 +0200
Newsgroups gmane.text.xml.french.tech
Organization PhC
Message-ID <[email protected]>
Bonjour à tous,

je viens chercher votre aide, pour le problème suivant :

j'ai un fichier xml à valider : 


<garanties>
	<garantie type="extension" duree="2" />
	<garantie type="extension" duree="5" />
	<garantie type="vol-casse" duree="1" />
	<garantie type="vol-casse" duree="2" />
</garanties>


]Contraintes :

Il faut que ma xsd valide le XML seulement dans les cas suivants : 

*** si l'attribut type  = "extension" alors l'attribut durée ne peut avoir 
que "2" ou "5" comme valeur.
*** si l'attribut type = "vol-casse' alors l'attribut duree ne peut avoir 
que "1" ou "2" comme valeur.

Sinon il ne faut pas que le document soit valide. 

j'ai écumé le web sans trouvé une réponse satisfaisante. 

actuellement j'ai définit les types à utiliser pour les attributs mais je ne 
sais pas comment les sélectionner en fonction de la valeur de l'attribut 
type.

<xsd:complexType name="garantieType">
		<xsd:attribute name="type" type="xsd:string" use="required" />
		<xsd:attribute name="duree" type="En fonction de la valeur de l'attribut 
type" use="required" />
</xsd:complexType>

<xsd:simpleType name="AttDureeGarantieExtensionType">
	<xsd:restriction base="xsd:string">
		<xsd:pattern value="2|5" />
	</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="AttDureeGarantieVolCasseType">
	<xsd:restriction base="xsd:string">
		<xsd:pattern value="1|2" />
	</xsd:restriction>
</xsd:simpleType>

Merci d'avance pour votre aide.