Question

Je suis en train de faire la liste non ordonnée de variables dans var1 et var2 se produit deux fois se produit fois infini (cas d'utilisation dans mon projet est différent). L'élément ne me permet pas d'utiliser maxOccurs.

Y at-il travail autour de ce que je suis en train 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>
Était-ce utile?

La solution

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 mettre une partie pertinente de votre XSD?


Mise à jour: Non, vous ne pouvez pas le faire avec XSD. Les règles sur ce que vous pouvez mettre dans un élément <xs:all> sont énumérés par exemple ici . Cette contrainte a un nom - l'UPA ou contrainte unique d'attribution des particules. Il est tout à voir avec l'ambiguïté et le site Web de Microsoft a une bonne explication de pourquoi existe .

Vous pouvez modifier votre mise en page du document pour supprimer la nécessité de ce genre de déclaration, ou venir chercher un langage de schéma plus expressif comme relaxNG.

Autres conseils

Je suis tombé sur le même problème et il y a une solution! Consultez cette réponse:

https://stackoverflow.com/a/3827606/637142

<xs:element name="A">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="B"/>
      <xs:element ref="C"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top