我做了一个副本并修改了"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>
    

    如您所见,物理路径完全不同

    07-24 09:37
    查看更多