【发布时间】: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