Схема XML: Могу ли я сделать некоторые значения атрибута обязательными, но все же разрешить другие значения?

(Примечание: я не могу изменить структуру получаемого XML. Я могу изменить только то, как я его проверяю.)

Допустим, я могу получить XML следующим образом:

<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"/>

Мне нужно создать схему XSD, которая проверяет, что "Street", "State" и "Zip"должен присутствовать. Но мне все равно, присутствуют ли «StreetPartTwo» и / или «SomeOtherCrazyValue».

Если бы я знал, чтотолько три, которые меня интересуют, могут быть включены (и что каждый будет включен только один раз), я мог бы сделать что-то вроде этого:

<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>

Но это не будет работать с моим делом, потому что я могу также получить те другие элементы Address (которые также имеют атрибуты «Field»), которые меня не интересуют.

Любые идеи, как я могу обеспечить присутствие того, что мне важно, но и другие?

ТИА! Шон

Ответы на вопрос(2)

Ваш ответ на вопрос