【问题标题】:XSD Import NameSpacesXSD 导入命名空间
【发布时间】:2012-06-01 02:06:17
【问题描述】:

我有两个 xsd 文件“first.xsd”和“second.xsd”。

在 second.xsd 中,我想引用 first.xsd 中定义的元素(具有不同的命名空间)。
我的 second.xsd 看起来像:

<xs:schema ... xmlns:schema1="http://www.schema.org/schema1" targetNamespace "http://www.schema.org/schema2   ...  >
<xs:import namespace = "http://www.schema.org/schema1" schemaLocation = "first.xsd" />

<xs:element name = "complex1">
<xs:complexType>
.........
<xs:element ref="schema1:name2"/>
.........
</xs:complexType>
</xs:element>

现在我想在 first.xsd 中包含并导入 second.xsd 所以我在 first.xsd 中执行以下操作:

<xs:schema ... xmlns:schema2="http://www.schema.org/schema2" targetNamespace "http://www.schema.org/schema1  ... >
<xs:import namespace="http://www.schema.org/schema2" schemaLocation="second.xsd">
<xs:element name = "name1"/>
<xs:element name = "name2"/>
<xs:element name = "name3"/>

这是正确的方法吗,因为我无法成功验证架构。
是否因为某些循环命名空间包含而导致问题?
我正在使用氧气 xml 开发人员来验证架构文件,验证后我的 first.xsd 说:
E[Xerces] src-resolve:无法将名称解析为 (n) 类型定义组件。 (second.xsd)

但如果我单独验证 second.xsd 文件,它会显示架构有效。

在我的实际情况中,我有一个非常复杂的场景,因此我将其归结为一个简单的示例,如上所示。
有人可以帮忙吗。

【问题讨论】:

    标签: namespaces xsd xml-namespaces


    【解决方案1】:

    拥有这种循环依赖是完全有效的(尽管值得商榷);您的架构集无法验证的原因不可能是它;您必须检查架构处理器生成的错误并尝试理解其中的每一个。人们普遍认为,最好从第一条错误消息开始。

    您的 sn-ps 无效,因为您引用了一个未在 schema1 中列出的 element2(在 second.xsd 中)。这是无法通过验证的东西,所以请关注它们。

    如果您需要帮助以了解真正的问题是什么,请先使用实际的错误消息更新您的帖子。

    【讨论】:

    • 感谢您的回复。您指出的错误是错字。我的错误..我已经编辑了代码。我在验证架构时遇到的错误是:E[Xerces] src-resolve: Cannot resolve the name to a(n) type definition component。 (second.xsd) 我正在使用氧气 xml 开发人员来验证架构。但是当我验证 second.xsd 文件时,它说架构是有效的。
    • 错误似乎指向了一个找不到的类型定义。您的交互式工具应该允许您以某种方式(双击)错误和光标并将光标定位在错误所在的位置。查看所指的类型;确保它是合格的,等等。如果一切看起来都井井有条,请尝试用虚拟的本地类型替换所有这些有问题的类型;最后,它要么是您没有正确使用的拼写错误或命名空间限定符,要么是产品中的错误。如果您的所有努力都指向无法解释,请尝试使用其他产品进行验证。
    • 我认为这可能是我正在使用的工具中的一个错误。因为其中一个工具报告错误,另一个工具报告警告。但是如果我使用 xmllint 来针对这个模式验证一个 xml 文件,它不会显示任何错误。无论如何,非常感谢您的回复。
    • 嗯...这听起来很有趣。由于您没有提到什么工具(除了 libxml2)...如果您至少可以私下披露您的 XSD 是什么,我很想看看它们和您的示例 XML。您可以通过我网站上的支持地址与我联系。或者,请下载QTAssistant 并告诉我您使用它的结果。我想知道它是否与工具如何执行模式加载有关......
    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多