2009-12-23 5 views
0

Je suis à la recherche d'une sorte d'héritage XSD que je ne suis pas tout à fait sûr, il est possible, donc je veux vous en assurer :)XSD héritage

La chose est que j'ai un type complexe A et un autre type B complexe qui diffère seulement de A que son attribut a une valeur fixe.

exemple:

<xs:complexType name="A"> 
    <xs:attribute name="AAtrr" type="xs:string"/> 
    </xs:complexType> 

<xs:complexType name="B"> 
    <xs:attribute name="AAtrr" type="xs:string" fixed="Something"/> 
    </xs:complexType> 

Ceci est bien sûr un exemple simplifié, mais pour commencer, je me demande si B peut hériter A et il suffit d'ajouter la valeur fixe pour l'attribut.

Répondre

0

Dans XSD, vous pouvez le faire, mais B n'est pas une extension de A, mais une restriction de A.

+0

Pouvez-vous ou quelqu'un d'autre utiliser mon exemple pour montrer exactement comment? comment puis-je restreindre un attribut spécifique? quelque chose comme ce que je pensais n'est pas valide: ozba

+0

Voir la réponse de xcut - il était plus rapide. :-) –

2

Voici une façon, avec quelques détails:

<xs:complexType name="A"> 
    <xs:attribute name="AAttr" type="xs:string"/> 
</xs:complexType> 
<xs:complexType name="B"> 
    <xs:complexContent> 
     <xs:restriction base="A"> 
       <xs:attribute name="AAttr" type="Restricted"/> 
     </xs:restriction> 
    </xs:complexContent> 
</xs:complexType> 
<xs:simpleType name="Restricted"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="Something"/> 
    </xs:restriction> 
</xs:simpleType>