下面是我的部分XML Schema
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/Procurement"
xmlns:tns="http://www.example.org/Procurement" elementFormDefault="qualified">
<element name="CountryCode">
<simpleType>
<restriction base="string">
<enumeration value="US" />
<enumeration value="DE" />
<enumeration value="JP" />
</restriction>
</simpleType>
</element>
<element name="Address">
<complexType>
<sequence>
<element name="Name" type="string" minOccurs="0" />
<element name="StreeName" type="string" minOccurs="0" />
<element name="City" type="string" />
<element name="PostalCode" type="string" />
<element name="Country" type="CountryCode" />
</sequence>
</complexType>
</element>
</schema>
当我尝试验证此架构时,我收到与CountryCode
类型中的Country
属性相关的错误,例如
解析组件时出错。检测到“CountryCode”位于名称空间“http://www.w3.org/2001/XMLSchema”中,但此命名空间中的组件无法从模式文档“file:/// C:/Eclipse/workspace/Procurement.xsd”中引用。
我做过一些研究并看过类似的帖子,但仍然无法解决这个问题。
有什么想法吗?
答案 0 :(得分:2)
如果要定义类型,则无法使用<element>
。只需定义类型本身:
<simpleType name="CountryCode">
<restriction base="string">
<enumeration value="US" />
<enumeration value="DE" />
<enumeration value="JP" />
</restriction>
</simpleType>
在XSD中包含此类型意味着该类型将位于目标命名空间中。因此,您需要引用它:
<element name="Country" type="tns:CountryCode" />
通过这两项修改,您的XSD应该是正确的。