我制作了副本并修改了"schema validation" Qt example。我只是在资源中添加了我自己的xsd文件和一个xml文件。但行:
schema.load(schemaData);
每当我尝试使用自己的架构时,都会失败。 我知道它应该可以工作,因为我可以使用xerces 的命令行工具来完成验证。我相信问题来自于包括:
<xsd:include schemaLocation="whatever.xsd"/>
问题:我还要在资源中添加每个包含的架构吗?有什么特别的设置吗?我应该用加载模式加载它们吗? ......
答案 0 :(得分:2)
对我而言,这可以通过添加所有XSD作为资源来实现。我使用了以下行:
<xsd:include schemaLocation="qrc:///xsd/commondefinitions.xsd"/>
其中“xsd”是虚拟资源路径,而不是物理路径。这意味着路径通过以下方式实现:
<qresource prefix="/xsd/">
<file alias="commondefinitions.xsd">../framework/data/xml/commondefinitions.xsd</file>
</qresource>
正如您所看到的,物理路径完全不同