我刚刚阅读了关于XSD1.1断言的本教程:
http://www.ibm.com/developerworks/library/x-xml11pt2/
我复制了其中一个示例并创建了这个xsd文件:
<?xml version="1.1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<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>
</xs:schema> 我试图使用http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml 4.0.0使用以下命令将其解析为代码-gen一个hxx文件:
/path/to/二进制cxx-tree /path/to/file.xsd
但我得到了以下错误:
/path/to/file.xsd:7:41:错误:复杂类型定义中的无效元素'assert‘
当我将xml更改为1.0时,也会出现同样的错误。据我所知,xml版本在这种情况下并不重要,但我可能错了。
是什么导致了这条错误消息,以及如何修复它?
发布于 2015-06-23 23:35:38
您的XSD正在正确地使用断言。(您可能希望在XML声明中使用version="1.0",因为这是XML版本,而不是XSD版本,但这不是错误的来源。)
如果XSD处理器拒绝XSD,则XSD处理器不支持XSD1.1。
Update:实际上,根据代码合成网站,CodeSynthesis XSD 4.0.0是基于Xerces-C++的,它不支持XSD1.1。CodeSynthesis确实应该在他们的产品页面中明确这一点。
https://stackoverflow.com/questions/31014880
复制相似问题