Подтвердить что ты не робот

XML-схема 1.1, не признающая "утверждение" или "утверждение",

Я пытаюсь использовать следующее в 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", говоря, что "element 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?

4b9b3361

Ответ 1

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