Использование Unique без объявления пространства имен - PullRequest
2 голосов
/ 27 февраля 2012

Может кто-нибудь объяснить, почему ограничение уникальной идентичности для элемента не будет работать, если элементы не имеют префикс пространства имен? Это заставляет меня поверить, что уникальные ограничения могут быть применены только к определенным элементам. Я не уверен, почему уникальное ограничение не может быть помещено на локально определяемый элемент. В моей схеме ниже, у меня есть уникальное ограничение, определенное в Writer.name, которое работает нормально. Я также определил один в Test.name, который не работает, если я не сделаю Test и его chiled name глобальными элементами.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...