Один проверяемый XML-документ не может иметь несколько корней. У него должен быть один корень. Ваш XML:
<label name="Label_6">
<label name="Label_7"/>
</label>
<label name="Label_8"/>
имеет два корня, потому что есть два элемента "label
" на корневом уровне. Кроме того, ваша схема не определяет элемент с именем "label
", поэтому я запутался. Возможно, вам нужна схема, которая будет проверять что-то вроде следующего XML:
<labels>
<label name="Label_6">
<label name="Label_7"/>
</label>
<label name="Label_8"/>
</labels>
где у вас есть один корень "labels
". Обратите внимание, что у вас есть элементы с одинаковыми именами "label
" на разных уровнях иерархии. Это не verboten (см., Например, xhtml, где вы можете иметь div
внутри div
внутри ...), но это может сбить с толку. Для примера XML, показанного выше, попробуйте схему что-то вроде:
<xs:element name="labels">
<xs:complexType>
<xs:sequence>
<xs:element ref="label" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="labelType">
<xs:sequence>
<xs:element ref="label" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<xs:element name="label" type="labelType"/>