XSD doesn't allow me to have unbounded inside all indicator

I came across the same problem and there is a solution! Check out this answer:

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>

easy, simply use<xs:choice maxOccurs="unbounded"> instead of <xs:all>. This will give the effect you are looking for.


What you're trying to do sounds like the type of an element in your list might be ambiguous without reading-ahead, in which case there's no work around in XSD because of the classes of languages it can describe.

Can you post up a the relevant part of your XSD?


Update: No, you can't do that with XSD. The rules about what you can put in an <xs:all> element are listed for example here. This constraint has a name - the UPA, or Unique Particle Attribution constraint. It's all to do with ambiguity and the Microsoft website has a good explanation of why is exists here.

You can either change your document layout to remove the need for this kind of declaration, or look to a more expressive schema language like RelaxNG.