Frage

Ich versuche, ungeordnete Liste von Variablen in var1 zu machen kommt zweimal und var2 tritt unendlich mal (Use Case in meinem Projekt ist anders). Das Element erlaubt mir nicht, maxOccurs zu verwenden.

Gibt es eine Arbeit um für das, was ich zu tun, ich versuche?

<?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>
War es hilfreich?

Lösung

Was Sie versuchen, klingt wie der Typ eines Elements in der Liste zu tun könnte, ohne lesen grünes Licht mehrdeutig sein, wobei in diesem Fall gibt es keine Arbeit um in XSD wegen der Klassen von Sprachen kann es beschreiben.

Können Sie den entsprechenden Teil Ihres XSD post up?


Update: Nein, können Sie das tun, nicht mit XSD. Die Regeln über das, was Sie in einem <xs:all> Elemente setzen können, sind beispielsweise aufgeführt hier . Diese Einschränkung hat einen Namen - die UPA oder Eindeutige Partikel-Zuordnung. Es ist alles mit Mehrdeutigkeit zu tun und die Microsoft-Website hat eine gute Erklärung, warum ist existiert hier .

Sie können entweder das Dokument-Layout ändern, um die Notwendigkeit für diese Art von Erklärung oder Blick auf eine ausdruck Schema Sprache wie zu entfernen RelaxNG .

Andere Tipps

Ich kam in dem gleichen Problem und es gibt eine Lösung! Schauen Sie sich diese Antwort:

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>

leicht, einfach statt <xs:choice maxOccurs="unbounded"> use<xs:all>. Dies gibt den Effekt, den Sie suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top