4

我刚刚阅读了有关 XSD 1.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>                                                                     

我正在尝试使用以下命令将其解析为使用CodeSynthesis XSD XML Schema 到 C++ 编译器4.0.0的代码生成 hxx 文件:

/path/to/binary cxx-tree /path/to/file.xsd

但我收到以下错误:

/path/to/file.xsd:7:41:错误:复杂类型定义中的无效元素“断言”

当我将 xml 版本更改为1.0. 据我了解,在这种情况下,xml 版本无关紧要,但我可能错了。

什么会导致此错误消息,我该如何解决?

4

1 回答 1

4

您的 XSD 正在正确使用断言。(您可能需要version="1.0"在 XML 声明中,因为这是XML版本,而不是 XSD 版本,但这不是错误的来源。)

如果 XSD 处理器拒绝您的 XSD,则它不支持 XSD 1.1。

更新:确实,根据CodeSynthesis 的网站,CodeSynthesis XSD 4.0.0 基于 Xerces-C++,它不支持 XSD 1.1。CodeSynthesis 确实应该在他们的产品页面上明确说明这一点。

于 2015-06-23T23:35:38.950 回答