使用Unique无名称空间声明

时间:2012-02-27 15:40:58

标签: xsd

任何人都可以解释为什么元素上的唯一身份约束不起作用,除非元素是名称空间前缀?这让我相信,独特的约束只能应用于全身定义的元素。我不确定为什么一个独特的constratint不能放在一个本地的defiened元素。在下面的示例模式中,我有一个在Writer.name上定义的唯一约束,它可以正常工作。我还在Test.name上定义了一个,除非我制作Test及其chiled名称,全局元素。

<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>

0 个答案:

没有答案
相关问题