0

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

2 回答 2

1

您的目标命名空间上没有命名空间前缀...

我建议阅读以下内容:http: //msdn.microsoft.com/en-us/library/aa258639 (v=sql.80).aspx

这是另一个创建模式的好指南:http: //www.ibm.com/developerworks/library/xml-schema/

于 2012-06-22T15:03:53.277 回答
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 的更多信息。

于 2018-05-22T12:39:28.567 回答