c++ - QXmlSchema 管理包含吗?

标签 c++ xml qt xsd

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

schema.load(schemaData);

每当我尝试使用自己的架构时都会失败。 我知道它应该可以工作,因为我可以使用使用 xerces 的命令行工具进行验证。我相信问题来自于:

<xsd:include schemaLocation="whatever.xsd"/>
  1. xsd 和 xml 文件未更改
  2. 文件路径保持不变,我将 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/

相关文章:

c++ - 实例化一个模板类 <erroneous-expression>?

R XML错误: 'configure' exists but is not executable centos 7

c++ - QUrl逐段构建

C++阶乘程序

c++ - 未初始化的值在 Linux 上的行为符合预期,但在 Windows 上则不然

java - Hibernate 工具 - 无法添加配置 - dom4j 连接超时 -

java - 如何制作像这样的自定义导航 View 动画

c++ - 静态构建qt后找不到qt creator

python - 将 QPainterPath 简化为轮廓

c++ - 防止复制构造和分配返回值引用