Подтвердить что ты не робот

Как сделать атрибут уникальным в xml-схеме?

Я хочу сделать атрибут элемента уникальным, как первичный ключ. как это сделать?

4b9b3361

Ответ 1

Что-то вроде этого должно работать:

<xs:element name="books" maxOccurs="unbounded">
   <xs:complexType>
      <xs:sequence>
         <xs:element name="book" maxOccurs="unbounded">
            <xs:complexType>
               <xs:attribute name="isbn" type="xs:string"/>
            </xs:complexType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
   <xs:unique name="unique-isbn">
      <xs:selector xpath="book"/>
      <xs:field xpath="@isbn"/>
   </xs:unique>
</xs:element>

В принципе, вы можете определить ограничение "единственности" с помощью элемента <xs:unique> и определить, к какой XPath должна применяться эта уникальность.

Подробнее см. в разделе W3Schools на <xs:unique>.

Ответ 2

Примечание: Это не работает, если у вас разные пространства имен. Затем вам нужно полное выражение XPath:

Это может быть как:

<xs:unique name="unique-isbn">
      <xs:selector xpath="theOtherNamespace:book"/>
      <xs:field xpath="@isbn"/>
</xs:unique>