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