【问题标题】:Importing schema via <import> - "Imported schema has different targetNameSpace..."通过 <import> 导入架构 - “导入的架构具有不同的 targetNameSpace...”
【发布时间】:2015-01-12 16:28:00
【问题描述】:

我似乎无法解决这个问题,我真的很希望它能够工作。使用我的主架构 rfidImage.xsd,我想导入一个描述基于 base64 的 JPG 的 MIME 方案的架构。我想我已经尝试了所有可能的组合,除了使这项工作有效的组合。我可以放弃并将 xmlmime.xsd 中的模式代码包含到 rfidImage.xsd 中,但我想在这里进一步加深理解。这两个模式有不同的命名空间,所以我应该很好地使用导入而不是包含。所以,我的基本问题是这个错误信息:

导入的架构“xmlmime.xsd”的目标名称空间“http://www.quikq.com/xsd/rfidImage”与声明的“http://www.w3.org/2005/05/xmlmime”不同

我在 IBM AS/400、V7R1 和 C++、SAX2 解析器上使用旧版本的 Xerces(可能是 2.6)。

rfidImage.xsd:

<?xml version="1.0"?>
<xs:schema 
    targetNamespace="http://www.quikq.com/xsd/rfidImage"
    xmlns="http://www.quikq.com/xsd/rfidImage" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:tns="http://www.quikq.com/xsd/JPEGPicture"
    xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
    elementFormDefault="qualified">

    <!-- Import a supporting document -->
    <xs:import namespace="http://www.w3.org/2005/05/xmlmime" 
               schemaLocation="xmlmime.xsd"/>

xmlmime.xsd:

<?xml version="1.0"?>
<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
    targetNamespace="http://www.w3.org/2005/05/xmlmime">

我暂时迷路了。

【问题讨论】:

    标签: c++ xml xsd xerces xerces-c


    【解决方案1】:

    如果 xmlmime.xsd 的内容与您描述的一样,那么您应该不会收到您报告的错误消息。您显示的导入和您显示的架构文档彼此一致。

    一个可能的原因是您认为 xmlmime.xsd 中的内容与实际存在的内容不一致。 rfidImage.xsd 的内容是否被意外保存到 xmlmime.xsd 中?我会通过关闭所有软件并检查内容来检查这一点;我附近的人因查看编辑器缓冲区而不是磁盘上的文件而被咬伤的次数已经数不胜数了。

    另一个可能的原因:由于某种原因,Xerces 实际上并未读取 xmlmime.xsd 而是其他一些架构文档。我会通过在 xmlmime.xsd 的前几行中引入格式正确错误并验证 Xerces 在尝试读取架构文档时是否引发错误来检查这一点。

    如果这些都没有产生任何向前运动,您可以尝试不指向 xmlmime 模式文档的本地副本,而是指向http://www.w3.org/2005/05/xmlmime.xsd 的版本——通常,W3C 鼓励模式文档的缓存和使用本地副本,但出于测试目的,它可能会对事情有所帮助。

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2016-11-05
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多