我复制并修改了"schema validation" Qt example 。我只是在资源中添加了我自己的 xsd 文件和一个 xml 文件。然而这一行:
schema.load(schemaData);
每当我尝试使用自己的架构时都会失败。 我知道它应该可以工作,因为我可以使用使用 xerces 的命令行工具进行验证。我相信问题来自于:
<xsd:include schemaLocation="whatever.xsd"/>
- xsd 和 xml 文件未更改
- 文件路径保持不变,我将 xml 文件和“main”xsd 添加到 Qt 资源文件“qrc”中。
问题:我是否还应该添加资源中包含的每个架构?有什么特别的设置吗?我应该使用加载模式加载它们吗? ...
最佳答案
对我来说,这是通过将所有 XSD 添加为资源来实现的。我使用了以下行:
<xsd:include schemaLocation="qrc:///xsd/commondefinitions.xsd"/>
其中“xsd”是虚拟资源路径,而不是物理路径。这意味着路径按以下方式指定:
<qresource prefix="/xsd/">
<file alias="commondefinitions.xsd">../framework/data/xml/commondefinitions.xsd</file>
</qresource>
如您所见,物理路径完全不同
关于c++ - QXmlSchema 管理包含吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24405756/