2010-03-02 4 views
10

J'essaie de faire la liste non ordonnée des variables dans var1 se produit deux fois et var2 se produit des temps infinis (cas d'utilisation dans mon projet est différent). L'élément ne me permet pas d'utiliser maxOccurs.XSD ne me permet pas d'avoir illimité à l'intérieur de tous les indicateurs

Y a-t-il du travail pour ce que j'essaie de faire?

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="testcomment"> 
    <xs:complexType> 
     <xs:all> 
     <xs:element name="var1" type="xs:string" maxOccurs="2" /> 
     <xs:element name="var2" type="xs:integer" maxOccurs="unbounded" /> 
     </xs:all> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
+2

http://stackoverflow.com/a/3827606/637142 –

Répondre

1

Qu'est-ce que vous essayez de faire des sons comme le type d'un élément dans votre liste pourrait être ambiguë sans lecture avant, dans ce cas, il n'y a pas de travail autour de XSD en raison des classes de langues, il peut décrire .

Pouvez-vous poster une partie pertinente de votre XSD?


Mise à jour: Non, vous ne pouvez pas faire cela avec XSD. Les règles concernant ce que vous pouvez mettre dans un élément <xs:all> sont listées par exemple here. Cette contrainte a un nom - la contrainte UPA ou Attribution de particules unique. C'est tout à voir avec l'ambiguïté et le site Web de Microsoft a une bonne explication de la raison pour laquelle il existe here.

Vous pouvez soit modifier la disposition de votre document pour supprimer le besoin de ce type de déclaration, soit utiliser un langage de schéma plus expressif comme RelaxNG.

+0

Comment écrire du code dans stackoverflow .. Je suis assez nouveau à ce sujet – Vignesh

+0

Vous l'avez fait, il y a quelques minutes. Reportez-le, mettez-le en surbrillance et cliquez sur le petit bouton sur l'éditeur qui ressemble à binaire (10101) et il indentera votre XML, ce qui le fera apparaître correctement. – Brabster

+0

Oui .. Merci .. J'ai posté le code .. :) – Vignesh

3

facile, il suffit d'utiliser <xs:choice maxOccurs="unbounded"> au lieu de <xs:all>. Cela donnera l'effet que vous recherchez.

Questions connexes