XSD:无法使用同一XSD中定义的类型

时间:2012-06-22 14:40:50

标签: xml xsd

我正在编写以下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>

2 个答案:

答案 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的更多信息。