我正在编写以下XSD,但是我遇到了问题。无论出于何种原因,我都不被允许使用我在XSD中定义的简单类型。我收到此错误:Cannot resolve the name 'mySimpleType1' to a(n) 'simpleType definition' component.
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://myNamespace"
targetNamespace="http://myDifferentNamespace"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:simpleType name="mySimpleType1">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Added"/>
<xsd:enumeration value="Modified"/>
<xsd:enumeration value="Deleted"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="mySimpleType2">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="foo"/>
<xsd:enumeration value="bar"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:attributeGroup name="myAttributeGroup">
<xsd:attribute name="attribute1" type="mySimpleType1" use="optional"/>
<xsd:attribute name="attribute2" type="mySimpleType2" use="optional"/>
</xsd:attributeGroup>
</xsd:schema>
答案 0 :(得分:1)
目标命名空间中没有名称空间前缀...
我建议您阅读:http://msdn.microsoft.com/en-us/library/aa258639(v=sql.80).aspx
这是创建架构的另一个很好的指南:http://www.ibm.com/developerworks/library/xml-schema/
答案 1 :(得分:0)
问题是mySimpleType1
是从xmlns http://myNamespace
中查找的(类型中没有前缀 - 没有使用后缀的xmlns),但是您已在http://myDifferentNamespace
(由targetNamespace定义)中定义了它。
您可能希望使用与xmlns
相同的targetNamespace
。
否则,您需要定义例如xmlns:mydiff="http://myDifferentNamespace"
并将类型引用为type="mydiff:mySimpleType1"
。
检查https://stackoverflow.com/a/43336017/1576461以获取有关xmlns的更多信息。