首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Xerces C++ 3.x (CodeSynthesis XSD)中使用断言?

如何在Xerces C++ 3.x (CodeSynthesis XSD)中使用断言?
EN

Stack Overflow用户
提问于 2015-06-23 22:58:53
回答 1查看 537关注 0票数 4

我刚刚阅读了关于XSD1.1断言的本教程:

http://www.ibm.com/developerworks/library/x-xml11pt2/

我复制了其中一个示例并创建了这个xsd文件:

代码语言:javascript
复制
<?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版本在这种情况下并不重要,但我可能错了。

是什么导致了这条错误消息,以及如何修复它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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确实应该在他们的产品页面中明确这一点。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31014880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档