Как сделать атрибут уникальным в XML-схеме? - PullRequest
12 голосов
/ 02 августа 2010

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

Ответы [ 2 ]

26 голосов
/ 02 августа 2010

Примерно так должно работать:

<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> для получения дополнительной информации.

0 голосов
/ 18 ноября 2017

Примечание: это не работает, если у вас разные пространства имен.Тогда вам нужно полное выражение XPath:

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

<xs:unique name="unique-isbn">
      <xs:selector xpath="theOtherNamespace:book"/>
      <xs:field xpath="@isbn"/>
</xs:unique>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...