XML-Schema: Kann ich festlegen, dass einige Werte eines Attributs erforderlich sind, andere jedoch weiterhin zulassen?

(Hinweis: Ich kann die Struktur des empfangenen XML nicht ändern. Ich kann nur die Art und Weise ändern, wie ich es validiere.)

Sagen wir, ich kann XML wie folgt erhalten:

<Address Field="Street" Value="123 Main"/>
<Address Field="StreetPartTwo" Value="Unit B"/>
<Address Field="State" Value="CO"/>
<Address Field="Zip" Value="80020"/>
<Address Field="SomeOtherCrazyValue" Value="Foo"/>

Ich muss ein XSD-Schema erstellen, das "Street", "State" und "Zip" validiertMus anwesend sein. Aber es ist mir egal, ob entweder "StreetPartTwo" und / oder "SomeOtherCrazyValue" ebenfalls vorhanden sind.

Wenn ich das wüsstenu Die drei, die mir wichtig sind, könnten eingeschlossen werden (und jede würde nur einmal enthalten sein). Ich könnte so etwas tun:

<xs:element name="Address" type="addressType" maxOccurs="unbounded" minOccurs="3"/>

<xs:complexType name="addressType">
  <xs:attribute name="Field" use="required">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="Street"/>
        <xs:enumeration value="State"/>
        <xs:enumeration value="Zip"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
</xs:complexType>

Aber dies funktioniert in meinem Fall nicht, da ich möglicherweise auch die anderen Adresselemente (die ebenfalls "Field" -Attribute aufweisen) erhalte, die mir egal sind.

Haben Sie eine Idee, wie ich sicherstellen kann, dass die Sachen, die mir wichtig sind, vorhanden sind, aber lassen Sie auch die anderen Sachen rein?

TIA! Sean

Antworten auf die Frage(4)

Ihre Antwort auf die Frage