如何在 Xerces C++ 3.x (CodeSynthesis XSD) 中使用断言?
How do I use assertions in with Xerces C++ 3.x (CodeSynthesis XSD)?
我刚刚通读了关于 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 to C++ compiler 4.0.0 将其解析为代码生成 hxx 文件,使用以下命令:
/path/to/binary cxx-tree /path/to/file.xsd
但我收到以下错误:
/path/to/file.xsd:7:41: error: invalid element 'assert' in complex
type definition
将 xml 版本更改为 1.0
时出现相同的错误。据我了解,xml 版本在这种情况下应该无关紧要,但我可能错了。
什么会导致此错误消息,我该如何解决?
您的 XSD 正确使用了断言。 (您可能希望在 XML 声明中使用 version="1.0"
,因为这是 XML 版本,而不是 XSD 版本,但这不是错误的来源。)
您的 XSD 处理器不支持 XSD 1.1,如果它拒绝您的 XSD。
更新:的确,根据CodeSynthesis's website,CodeSynthesis XSD 4.0.0基于Xerces-C++,不支持XSD 1.1。 CodeSynthesis 确实应该在他们的产品页面上明确说明这一点。
我刚刚通读了关于 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 to C++ compiler 4.0.0 将其解析为代码生成 hxx 文件,使用以下命令:
/path/to/binary cxx-tree /path/to/file.xsd
但我收到以下错误:
/path/to/file.xsd:7:41: error: invalid element 'assert' in complex type definition
将 xml 版本更改为 1.0
时出现相同的错误。据我了解,xml 版本在这种情况下应该无关紧要,但我可能错了。
什么会导致此错误消息,我该如何解决?
您的 XSD 正确使用了断言。 (您可能希望在 XML 声明中使用 version="1.0"
,因为这是 XML 版本,而不是 XSD 版本,但这不是错误的来源。)
您的 XSD 处理器不支持 XSD 1.1,如果它拒绝您的 XSD。
更新:的确,根据CodeSynthesis's website,CodeSynthesis XSD 4.0.0基于Xerces-C++,不支持XSD 1.1。 CodeSynthesis 确实应该在他们的产品页面上明确说明这一点。