Схема 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»), которые меня не интересуют.
Любые идеи, как я могу обеспечить присутствие того, что мне важно, но и другие?
ТИА! Шон