gpt4 book ai didi

namespaces - XSD 导入命名空间

转载 作者:行者123 更新时间:2023-12-04 05:45:19 26 4
gpt4 key购买 nike

我有两个 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) 类型定义组件。 (第二个.xsd)

但是如果我单独验证 second.xsd 文件,它会说模式有效。

在我的实际案例中,我有一个非常复杂的场景,所以我把它归结为一个简单的例子,如上所示。
有人可以帮忙吗。

最佳答案

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

您的代码段无效,因为您引用的是 element2 (在 second.xsd 中)您没有在 中列出的架构 1 .这是那种不会通过验证的东西,所以专注于它们。

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

关于namespaces - XSD 导入命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10755288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com