5.1 Определение уникальности

XML Schema предоставляет нам возможность указать, что значение любого атрибута или элемента должно быть уникально в пределах некоторой области. Для показа уникальности значения определенного атрибута или элемента, мы сначала используем элемент unique , чтобы "выбрать" набор элементов, а затем определяем соответствующее "поле" атрибута или элемента для каждого выбранного элемента, который должен быть уникален в пределах набора выбранных элементов. В случае нашей схемы отчета, report.xsd, элемент selector  с атрибутом xpath  содержит XPath выражение, regions/zip, которое выбирает список всех элементов zip в примере отчета. Аналогично, элемент field  с атрибутом xpath  содержит второе XPath выражение, @code, которое определяет, что значения атрибутов code этих элементов должны быть уникальны. Отметим, что XPath выражения ограничивают область, в которой должно удовлетворяться условие уникальности. Отчет может содержать другой атрибут code, но его значение не должно быть уникальным, поскольку он располагается вне области, определенной выражениями XPath. Также отметим, что XPath выражения Вы можете использовать в атрибуте xpath, который  ограничен поднабором полного языка XPath, определенного в XML Path Language 1.0.

Мы можем также указать комбинации полей, которые должны быть уникальны. Для иллюстрации этого предположим, что мы можем ослабить ограничение, связанное с уникальностью почтовых индексов, хотя мы все еще хотим оставить ограничение, что любое изделие перечислено только однажды в пределах действия данного почтового индекса. Такое ограничение можно обеспечить, определяя уникальность для комбинации почтового индекса и номера изделия. Из документа отчета, 4Q99.xml, объединенные значения почтового индекса code и number были бы: {95819 872-AA }, {95819 926-AA }, {95819 833-AA }, {95819 455-BX } и {63143 455-BX }. Очевидно, эти комбинации не обеспечивают однозначности по совокупности почтового индекса code и number, если они получены из одной или нескольких распечаток, сформированных только на основании, какого либо почтового кода. Поэтому не исключена двусмысленность в представлении изделий, перечисленных более одного раза в пределах одного почтового индекса. Другими словами, обработчик схемы может обнаружить нарушения ограничений уникальности.

Чтобы определить комбинации значений, мы просто добавляем элементы field, для идентификации всех вовлеченных значений. Так, чтобы добавить часть значения номера к нашему существующему определению, мы добавляем новый элемент field, значение атрибута xpath которого, part/@number, идентифицирует атрибут number элементов part, которые являются дочерними от элементов zip, определенных посредством regions/zip:

Уникальные составные значения

<unique name="dummy1">
 <selector xpath="r:regions/r:zip"/>
 <field xpath="@code"/>
 <field xpath="r:part/@number"/>
</unique>

ПромДоска | Виктор Цой | Курсовые | ПромКаталог | Смешной Блог | Каталог |
Используются технологии uCoz