уникальность в документе XML с использованием схемы xsd - PullRequest
0 голосов
/ 24 апреля 2020

Я борюсь со следующим вариантом использования при проверке XML с использованием XSD.

Пожалуйста, рассмотрите следующий фрагмент XML

<Library>
  <Book>Do Androids Dream of Electric Sheep?</Book>
  <Book>Choke</Book>
  <Book>Choke</Book>
</Library>

Как бы вы написали XSD чтобы избежать дублирования книги?

Так что xml выше не пройдет проверку.

Я могу гарантировать уникальность, если книга содержит подэлемент, такой как "заголовок".

Заранее спасибо С наилучшими пожеланиями

1 Ответ

0 голосов
/ 24 апреля 2020

Это очень просто реализовать с помощью конструкции xs:key. Проверьте это.

XML

<?xml version="1.0"?>
<Library xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="LibraryNew.xsd">
    <Book>Do Androids Dream of Electric Sheep?</Book>
    <Book>Choke</Book>
    <Book>Choke</Book>
</Library>

XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="Library">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="Book"/>
            </xs:sequence>
        </xs:complexType>

        <!-- Primary Key -->
        <xs:key name="PK">
            <xs:selector xpath="Book"/>
            <xs:field xpath="."/>
        </xs:key>
    </xs:element>
    <xs:element name="Book" type="xs:string"/>
</xs:schema>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...