我有两个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>
问题在于我不想将B.xsd
中ElementA
的规范克隆一遍,因为还有一些文档只有ElementA
作为根元素(即ElementB
是某种容器文档)。那么,如何在完全基于已存在的XSD上允许在
ElementB
中使用ElementA
呢?
ea:
命名空间前缀是从哪里来的?还是这是A.xsd
中类型定义的名称? - pokexmlns:ea="http://example.com/namespace/for/ElementA"
。您可以为其指定任何前缀,就像默认目标命名空间一样(尽管按照惯例,每个人都选择xs
或xsd
)。 - daveaglick