Xsd 使用不带命名空间声明的唯一

Xsd 使用不带命名空间声明的唯一,xsd,Xsd,有人能解释为什么元素上的唯一标识约束不起作用,除非元素带有名称空间前缀吗?这使我相信,唯一约束只能应用于全局定义的元素。我不知道为什么一个独特的构造不能放在一个局部破坏的元素上。在下面的示例模式中,我在Writer.name上定义了一个唯一的约束,该约束可以正常工作。我还在Test.name上定义了一个,除非我创建了Test和它的chiled名称global元素,否则它不会工作 <schema targetNamespace="http://www.amica.com/dev_v1/Tes

有人能解释为什么元素上的唯一标识约束不起作用,除非元素带有名称空间前缀吗?这使我相信,唯一约束只能应用于全局定义的元素。我不知道为什么一个独特的构造不能放在一个局部破坏的元素上。在下面的示例模式中,我在Writer.name上定义了一个唯一的约束,该约束可以正常工作。我还在Test.name上定义了一个,除非我创建了Test和它的chiled名称global元素,否则它不会工作

<schema targetNamespace="http://www.amica.com/dev_v1/Test" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.amica.com/dev_v1/Test" elementFormDefault="unqualified" attributeFormDefault="unqualified">
    <element name="MyMusic">
        <complexType>
            <sequence>
                <element name="Song" type="tns:SongType"/>
            </sequence>
        </complexType>
    </element>
    <complexType name="SongType">
        <sequence>
            <element ref="tns:Artists"/>
            <element ref="tns:Writers"/>
            <element name="Tests">
                <complexType>
                    <sequence>
                        <element name="Test" maxOccurs="unbounded">
                            <complexType>
                                <sequence>
                                    <element name="name"/>
                                </sequence>
                            </complexType>
                        </element>
                    </sequence>
                </complexType>
                <unique name="UniqueTestName">
                    <selector xpath="Test"/>
                    <field xpath="name"/>
                </unique>
            </element>
        </sequence>
    </complexType>
    <element name="Artist">
        <complexType>
            <simpleContent>
                <extension base="string">
                    <attribute name="aID" use="required">
                        <simpleType>
                            <restriction base="string"/>
                        </simpleType>
                    </attribute>
                </extension>
            </simpleContent>
        </complexType>
    </element>
    <element name="Writer">
        <complexType>
            <sequence>
                <element ref="tns:name"/>
            </sequence>
        </complexType>
    </element>
    <element name="Artists">
        <annotation>
            <documentation>Test unique constraint on an attrbute</documentation>
        </annotation>
        <complexType>
            <sequence>
                <element ref="tns:Artist" maxOccurs="unbounded"/>
            </sequence>
        </complexType>
        <unique name="UniqueArtistKey">
            <selector xpath="tns:Artist"/>
            <field xpath="@aID"/>
        </unique>
    </element>
    <element name="Writers">
        <annotation>
            <documentation>Test unique constraint on an element</documentation>
        </annotation>
        <complexType>
            <sequence>
                <element ref="tns:Writer" maxOccurs="unbounded"/>
            </sequence>
        </complexType>
        <unique name="UniqueWriterName">
            <selector xpath="tns:Writer"/>
            <field xpath="tns:name"/>
        </unique>
    </element>
    <element name="name" type="string"/>
</schema>

它适用于我-一旦我指定了名称的类型:。我正在使用Visual Studio 2010 XML编辑器内置的XSD验证。它适用于我-一旦我指定了名称的类型:。我正在使用VisualStudio2010 XML编辑器内置的XSD验证。