XSD: Comment limiter les valeurs d'énumération d'un dérivé de type complexe?
Donné l'exemple suivant:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Book" abstract="true">
<xs:sequence>
<xs:element name="titel" type="xs:string">
</xs:element>
<xs:element name="bookCode" type="BookEnum"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Lyric">
<xs:complexContent>
<xs:extension base="Book">
<xs:sequence>
<xs:element name="author" type="xs:string">
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="BookEnum">
<xs:restriction base="xs:int">
<xs:enumeration value="Paperback"/>
<xs:enumeration value="Hardcover"/>
<xs:enumeration value="Liporello"/>
<xs:enumeration value="None"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Lyrique dérive de Livre. Je voudrais restreindre les valeurs possibles de la BookEnum pour la complexType "Lyrique" à "livre de Poche".
"None", "Liporello" et "Relié" ne doivent plus être des valeurs valides pour "Lyrique". cela peut être fait dans xsd?
OriginalL'auteur tobsen | 2010-02-15
Vous devez vous connecter pour publier un commentaire.
Nan, malheureusement vous ne pouvez pas le faire. Il n'existe aucun moyen de restreindre une énumération comme ça, et vous aussi, auraient de la difficulté à la fois l'extension et la restriction d'un type complexe en même temps. Il y a un bon article ce que vous peut faire avec les énumérations ici.
Peut-être envisager un travail de fond, au lieu de: définir un livre de base type avec pratiquement rien en elle, puis de définir une LyricType qui est une union de type de base et un peu plus de valeurs; transporter les bookCode dans la sous-types. Ce n'est pas idéal, mais hélas, XSD ne concordent pas toujours avec les langages orientés objet.
Je pense que vous pouvez le faire dans XSD 1.1 à l'aide de xpath: stackoverflow.com/questions/6472264/...
OriginalL'auteur xcut
En fin de compte .. vous essayez de valider un nœud en utilisant la valeur de l'autre (Parent, frère ou sœur ou etc) .. ce Qui n'est certainement pas possible ..
OriginalL'auteur InfantPro'Aravind'