Может кто-нибудь объяснить, почему ограничение уникальной идентичности для элемента не будет работать, если элементы не имеют префикс пространства имен? Это заставляет меня поверить, что уникальные ограничения могут быть применены только к определенным элементам. Я не уверен, почему уникальное ограничение не может быть помещено на локально определяемый элемент. В моей схеме ниже, у меня есть уникальное ограничение, определенное в 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>