【发布时间】:2011-09-18 18:44:07
【问题描述】:
我有两个定义不同文档的 XSD。比如说A.xsd 定义了一个元素ElementA 作为根,有一些复杂的规则。现在B.xsd 定义了一个元素ElementB,它应该在两者之间使用ElementA。
例如,我希望ElementB 的 XML 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<ElementB xmlns="http://example.com/namespace/for/ElementB">
<foo>Bla</foo>
<bar>Blub</bar>
<ElementA xmlns="http://example.com/namespace/for/ElementA">
<!-- ... -->
</ElementA>
</ElementB>
那么B.xsd 可能看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://example.com/namespace/for/ElementB" targetNamespace="http://example.com/namespace/for/ElementB" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="ElementB">
<xs:complexType>
<xs:sequence>
<xs:element name="foo" type="xs:string" />
<xs:element name="bar" type="xs:string" />
<!-- And now I want to include ElementA somehow -->
<xs:element name="ElementA" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
问题是我真的不想将ElementA 的规范克隆到B.xsd,因为也有文档,只是以ElementA 作为根(即ElementB 是某种容器文件)。
那么,我怎样才能在ElementB 中允许ElementA,同时完全建立在已经存在的XSD 之上?
【问题讨论】:
标签: xml xsd xml-namespaces