QXmlSchema管理包括吗?

时间:2014-06-25 10:06:20

标签: c++ xml qt xsd

我制作了副本并修改了"schema validation" Qt example。我只是在资源中添加了我自己的xsd文件和一个xml文件。但行:

schema.load(schemaData);
每当我尝试使用自己的架构时,

都会失败。 我知道它应该可以工作,因为我可以使用xerces 的命令行工具来完成验证。我相信问题来自于包括:

<xsd:include schemaLocation="whatever.xsd"/>
  1. xsd和xml文件未更改
  2. 文件路径未更改,我添加了xml文件和&#34; main&#34; xsd到Qt资源文件&#34; qrc&#34;。
  3. 问题:我还要在资源中添加每个包含的架构吗?有什么特别的设置吗?我应该用加载模式加载它们吗? ......

1 个答案:

答案 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>

正如您所看到的,物理路径完全不同