为了简单起见并且因为它们在概念上是相关的,我希望在同一个命名空间中拥有一个文件数组。我有一个主 xsd 或中央 xsd,它将包含其他模式文件,并且基本上用作全局根元素。我的问题最好通过示例来说明,但我基本上无法验证我的非中心模式,这是一个命名空间问题:
模式1(支持):
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.company.org"
xmlns="http://www.person.org"
elementFormDefault="qualified">
<xsd:simpleType name="test">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="PersonType">
<xsd:sequence>
<xsd:element name="Name" type="test" />
<xsd:element name="SSN" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
模式 2(中央):
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.company.org"
xmlns="http://www.company.org"
elementFormDefault="qualified">
<xsd:include schemaLocation="http://www.person.org"/>
<xsd:element name="Company">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Person" type="PersonType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
模式 2 很好,模式 1 不验证。“test”没有命名空间,我不知道如何在不破坏我为所有文件使用 1 个命名空间的意图的情况下给它一个命名空间。