XML Schema 1.1 not recognizing 'assert' or 'assertion'

不羁的心 提交于 2019-12-23 07:00:40

问题


I am trying to use the following in an 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>

I know assert/assertion are part of XML Schema 1.1 but not 1.0. However everything I have read indicates the namespace is the same for both: http://www.w3.org/2001/XMLSchema

A minor problem is that the program I am using to write the Schema (Microsoft Visual Studio) does not recognize the 'assert' element, saying the 'the element complexType in namespace (...) has invalid child element 'assert'.

The main problem is that when I actually try to validate an XML against this schema, using xmllint, it throws up an error saying

" 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?))))

Is 1.1 simply not recognized by xmllint/visual studio, despite being pointed to the 1.1 namespaces?


回答1:


To process an XSD 1.1 schema you need an XSD 1.1 schema processor. Microsoft does not supply one (they seem to have given up implementing new W3C XML specifications). As far as I am aware the only XSD 1.1 processor available on the .NET platform is Saxonica's.



来源:https://stackoverflow.com/questions/15573894/xml-schema-1-1-not-recognizing-assert-or-assertion

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!