【发布时间】:2018-01-30 07:59:32
【问题描述】:
我有一个定义了 xml 架构的主 xsd 文件和第二个包含扩展名的 xsd 文件。我需要这样的东西:
<ns:Node>
<InnerNode>
<Value1>value 1</Value1>
<Value2>value 2</Value2>
</InnerNode>
</ns:Node>
InnerNode 定义在主文件中,Node 在扩展文件中。我的扩展定义如下:
<xs:element name="Node">
<xs:complexType>
<xs:sequence>
<xs:element name="InnerNode" type="InnerNodeType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
命名空间在两种模式中都定义,我对这两种模式都有导入。当我使用示例 xml 验证架构时,我收到错误消息,即 InnerNode 也应该具有命名空间,而不仅仅是 Node 元素。我尝试使用带有非限定值的 form 属性,但没有帮助 - 验证器 (XMLSpy) 建议插入空的 xmlns 属性。
是否可以定义不需要命名空间的 InnerNode 元素(缺少一些属性)?
编辑: 我没有提到在主 xsd 文件中我使用 Node 类型作为更大结构的一部分(它可能使它更复杂一点):
<OuterNode> <!-- defined in main xsd -->
<ns:Node> <!-- defined in imported -->
<InnerNode> <!-- defined in main -->
<Value1>value 1</Value1>
<Value2>value 2</Value2>
</InnerNode>
</ns:Node>
</OuterNode>
这样可以吗?
【问题讨论】:
-
有点技术性:您实际上有一个由两个模式文档组成的模式。不过不用担心,知道的人不多。