XML-схема 1.1 не распознает "assert" или "assertion"

Я пытаюсь использовать следующее в 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 1.1, но не 1.0. Однако все, что я прочитал, указывает на пространство имен одинаково для обоих:http://www.w3.org/2001/XMLSchema

небольшая проблема заключается в том, что программа, которую я использую для написания схемы (Microsoft Visual Studio), не распознает элемент "assert", говоря " элемент complexType в пространстве имен (...) имеет недопустимый дочерний элемент 'утверждать'.

основная проблема заключается в том, что когда я фактически пытаюсь проверить 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?

1 ответов


для обработки схемы XSD 1.1 вам нужен процессор схемы XSD 1.1. Microsoft не предоставляет один (они, похоже, отказались от реализации новых спецификаций W3C XML). Насколько мне известно, единственным процессором XSD 1.1, доступным на платформе .NET, является Saxonica.