2010-07-29 26 views
5

Je veux définir un type complexe qui contient des éléments qui peuvent ou peuvent ne pas exister, et permet également d'éléments non définis supplémentaires, donc j'ai quelque chose comme ceci:Schéma XML avec type complext contenant <xs:all> et <xs:any>?

<xs:complexType name="MyType"> 
<xs:sequence> 
    <xs:element name="A" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    <xs:element name="B" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    <xs:element name="C" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    <xs:any minOccurs="0" processContents="skip"/> 
</xs:sequence> 
</xs:complexType> 

Je ne veux pas forcer la ordre en utilisant <xs:sequence> donc je veux changer le <xs:sequence> en <xs:all> mais <xs:any> n'est pas autorisé. Y a-t-il un moyen d'accomplir cela?

+0

Je n'ai pas marqué le code dans ma description, donc il n'était pas visible. Je connais déjà , mais je veux utiliser et Ken

+0

duplication possible de [Validation de XML avec XSD ... mais toujours permettre l'extensibilité] (http://stackoverflow.com/questions/3347822/validating-xml-with- xsds-but-still-allow-extensibility) – Wrikken

Répondre

0

Pour autoriser toute commande, utilisez ceci:

<xs:complexType name="MyType"> 
<xs:all minOccurs="1" maxOccurs="1"> 
    <xs:element name="A" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    <xs:element name="B" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    <xs:element name="C" type="xs:float" minOccurs="0" maxOccurs="1" /> 
</xs:all> 
</xs:complexType> 

Mais, vous ne pouvez pas avoir un <any> l'intérieur d'un <all>.
Vous ne pouvez pas non plus les avoir tous les deux dans un type, directement ou en extension.