Учитывая, что схема (анонимизирована, ключевые точки интереса переименовываются, а остальные опускаются ):
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="inspec"
targetNamespace="the_right_namespace"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name="inspec">
<xs:complexType>
<xs:all>
<xs:element name="a_scalar_property" type="xs:int"/>
<xs:element name="a_collection_property">
<xs:complexType>
<snip>
</xs:complexType>
</xs:element>
<xs:element name="another_collection_property">
<xs:complexType>
<snip>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
. и экземпляр (, объявленный с использованием литералов VB xml):
Dim xDocument =
<x:inspec xmlns:x='the_right_namespace'>
<a_collection_property/>
<another_collection_property/>
</x:inspec>
проверка завершается с ошибкой с сообщениемThe element 'inspec' in namespace 'the_right_namespace' has incomplete content. List of possible elements expected: 'a_scalar_property'.
Почему? Элемент all
, согласно W3Schools:
«Элемент all указывает, что дочерние элементы могут появляться в любом порядке и что каждый дочерний элемент может встречаться ноль или один раз».
Пропустить a_scalar_property
— это то же самое, что включить его ноль раз. Почему этот документ не проходит проверку?
И не говорите что-то вроде «опубликуйте полный код» -, это не мой IP-адрес, и я сделал его анонимным по уважительной причине. Это очень мало, и я проверил этот минимальный пример, он дает тот же результат.