Можно ли определить в XML-схеме, что должны быть какие-то определенные XML-атрибуты, и в то же время я хочу разрешить расширение этого списка в будущем?
Здесь, если у нас есть следующая гипотетическая часть объявления XML:
<xs:element name="MyTypeInstance" type="MyType" />
<xs:complexType name="MyType">
<xs:attribute name="FirstAttr" type="xs:int" use="required"/>
<xs:attribute name="SecondAttr" type="xs:string" use="required"/>
</xs:complexType>
Тогда следующий фрагмент XML-документа действителен в соответствии с этой схемой:
<MyType firstAttr="123" secondAttr="abc" />
Я хочу иметь возможность успешно проверить следующий фрагмент XML:
<MyType firstAttr="123" secondAttr="abc" ThirdAttr="some new value" />
Две основные проблемы:
- Я не хочу менять XML-схему каждый раз, когда мне нужно ввести какой-то новый атрибут, потому что мы не хотим, чтобы все наши клиенты обновлялись до последней версии нашего программного обеспечения, а некоторые из них не обновляют свои приложения. длительное время;
- Я не могу просто использовать
anyAttribute
в XML-схеме, потому что хочу проверить XML-документ перед работой с ним. Если я укажу только элементanyAttribute
, то я не узнаю, что отсутствуют некоторые обязательные атрибуты. И, насколько я понимаю, XML не позволяет использовать элементыattribute
иanyAttribute
в схеме (по крайней мере, я не смог заставить такую схему работать с помощью класса .netXmlDocument
).
Было бы идеально, если бы можно было указать некоторые атрибуты явно, используя элемент attribute
, чтобы я точно знал, что эти атрибуты присутствуют в документе XML, но в то же время я бы позволил расширить документ XML, используя элемент anyAttribute
.
Как это сделать?