Я пытаюсь использовать следующее в XSD
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" >
<xs:element name="dimension">
<xs:complexType>
<xs:attribute name="height" type="xs:int"/>
<xs:attribute name="width" type="xs:int"/>
<xs:assert test="@height = @width"/>
</xs:complexType>
</xs:element>
Я знаю, что assert / assertion являются частью XML Schema 1.1, но не 1.0. Однако все, что я прочитал, указывает на то, что пространство имен одинаково для обоих: http://www.w3.org/2001/XMLSchema
Незначительная проблема заключается в том, что программа, которую я использую для написания схемы (Microsoft Visual Studio), не распознает элемент assert, говоря, что элемент complexType в пространстве имен (...) недействителен. дочерний элемент assert.
Основная проблема заключается в том, что когда я на самом деле пытаюсь проверить XML на соответствие этой схеме, используя xmllint, появляется сообщение об ошибке:
" element assert: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}complexType': The content is not valid. Expected is (annotation?, (simpleContent | complexContent | ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
Разве 1.1 просто не распознается xmllint / visual studio, несмотря на то, что он указывает на пространства имен 1.1?