Esquema XML: ¿Puedo hacer que se requieran algunos de los valores de un atributo pero permitir otros valores?

(Nota: no puedo cambiar la estructura del XML que recibo. Solo puedo cambiar la forma en que lo valido).

Digamos que puedo obtener XML como este:

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

Necesito crear un esquema XSD que valide que "Street", "State" y "Zip"debe estar. Pero no me importa si "StreetPartTwo" y / o "SomeOtherCrazyValue" también están presentes.

Si yo supiera esosolamente los tres que me importan podrían incluirse (y que cada uno solo se incluiría una vez), podría hacer algo como esto:

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

Pero esto no funcionará con mi caso porque también puedo recibir esos otros elementos de Dirección (que también tienen atributos de "Campo") que no me importan.

¿Alguna idea de cómo puedo asegurarme de que las cosas que me importan estén presentes pero dejar que las otras cosas también entren?

TIA! Sean

Respuestas a la pregunta(2)

Su respuesta a la pregunta