XSD-Schema mit ungeordneten erforderlichen, optionalen und beliebigen Tags

Ich versuche, ein XSD 1.0-Schema mit den folgenden Einschränkungen zu entwickeln:

Es gibt keine BestellungEinige Elemente müssen genau einmal vorkommenEinige Elemente können null oder unbegrenzt oft vorkommenUnbekannte Elemente zulassen (nicht validieren)

Der Grund für 3. ist, dass ich den Typ überprüfen möchte, wenn das Element vorhanden ist.

Zum Beispiel muss eine Person genau einen Namen, ein optionales Alter (höchstens einen), optionale Telefonnummern (unbegrenzt) und ein beliebiges anderes Tag haben. Diese sollten validieren:

<person>
  <name>Bob</name>
  <age>33</age>
  <phone>123456789</phone>
  <phone>123456788</phone>
</person>

<person>
  <name>Alice</name>
</person>

<person>
  <name>John</name>
  <!-- unrecognized, arbitrary tags: -->
  <location>city</location>
  <occupation>laywer</occupation>
</person>

Whereas, diese solltennich validieren:

<person>
  <!-- I am missing a name -->
  <phone>123456789</phone>
</person>

<person>
  <!-- I should only have one name -->
  <name>Sally</name>
  <name>Mary</name>
</person>

<person>
  <name>Josh</name>
  <!-- Phone number is not an int -->
  <phone>not a number</phone>
</person>

Dies ist eine ungültige XSD, die auf verständliche Weise erfasst, was ich versuche:

<xs:element name="person">
  <xs:complexType>
    <xs:all>
      <xs:element type="xs:string" name="name" minOccurs="1" maxOccurs="1"/>
      <xs:element type="xs:int" name="age" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:int" name="phone" minOccurs="0" maxOccurs="unbounded"/>
      <xs:any />
    </xs:all>
  </xs:complexType>
</xs:element>

Diese XSD ist ungültig, da Sie kein @ haben könne<any> unter einem<all>, und weil XSD 1.0 nicht erlaubt, @ zu habmaxOccurs="unbounded" in einem (n<all> Element. Weiß jemand, wie das erreicht werden kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage