Поделиться через


Правила и ограничения по использованию коллекций XML-схем на сервере

Язык определения XML-схем (XSD) имеет некоторые ограничения при проверке правильности столбцов SQL, использующих тип данных xml. В следующей таблице содержатся подробные сведения об этих ограничениях и рекомендации по изменению XSD-схемы, таким образом, чтобы обеспечить возможность работы с SQL Server. Темы данного раздела содержат дополнительные сведения об определенных ограничениях и рекомендации по работе с ними.

Элемент

Ограничение

minOccurs и maxOccurs

Значения атрибутов minOccurs и maxOccurs должны укладываться в 4-байтовые целые числа. Схемы, которые не соответствуют этому условию, будут отклонены сервером.

<xsd:choice>

SQL Server отклоняет схемы, содержащие примитив <xsd:choice> без дочерних элементов, если только он не определен с нулевым значением атрибута minOccurs.

<xsd:include>

В настоящее время SQL Server не поддерживает этот элемент. XML-схемы, содержащие данный элемент, отклоняются сервером.

Чтобы решить эту проблему, можно предварительно обработать XML-схемы, включающие директиву <xsd:include>, произведя копирование и слияние содержимого любых включенных схем в единую схему для ее последующей загрузки на сервер. Дополнительные сведения см. в разделе Препроцессор для XML-схем.

<xsd:key>, <xsd:keyref> и <xsd:unique>

В настоящее время SQL Server не поддерживает эти относящиеся к XSD ограничения для обеспечения уникальности или установки ключей и ссылок на ключи. Схемы XML, содержащие эти элементы, не могут быть зарегистрированы.

<xsd:redefine>

В SQL Server данный элемент не поддерживается. Сведения о других способах обновления схем см. в разделе Элемент <xsd:redefine>.

Значения <xsd:simpleType>

Для простых типов, содержащих доли секунд, отличные от xs:time и xs:dateTime, SQL Server поддерживает точность только до миллисекунд, а для компонентов xs:time и xs:dateTime — до 100 наносекунд. SQL Server накладывает ограничения на все распознанные перечисления простых типов XSD.

SQL Server не поддерживает использование значения «NaN» в объявлении <xsd:simpleType>.

Дополнительные сведения см. в разделе Значения для объявлений <xsd:simpleType>.

xsi:schemaLocation и xsi:noNamespaceSchemaLocation

SQL Server пропускает эти атрибуты, если они присутствуют в данных экземпляра XML, вставленных в столбец или переменную с типом данных xml.

xs:QName

SQL Server не поддерживает типы, полученные из xs:QName, использующие элемент ограничения XML-схемы.

SQL Server не поддерживает в качестве члена элемента типы объединений с xs:QName.

Дополнительные сведения см. в разделе Тип xs:QName.

Добавление элементов к существующей группе замещения

Нельзя добавить элементы в существующую группу замещения в коллекции XML-схем. Группа замещения в схеме XML ограничена в том, что главный элемент и все члены этого элемента должны быть определены в одной инструкции {CREATE | ALTER} XML SCHEMA COLLECTION.

Канонические формы и ограничения шаблона

Каноническое представление значения не может нарушать ограничение шаблона для своего типа. Дополнительные сведения см. в разделе Канонические формы и ограничения шаблона.

Аспекты перечисления

SQL Server не поддерживает XML-схемы с типами, имеющими аспекты шаблона или перечисления, которые нарушают эти аспекты.

Длина аспекта

Аспекты length, minLength и maxLength хранятся как тип long. Этот тип является 32-разрядным типом. Поэтому диапазон приемлемых значений для их значений равен 2^31.

Атрибут идентификатора

Каждый компонент XML-схемы может иметь атрибут идентификатора. SQL Server обеспечивает уникальность объявлений <xsd:attribute>, имеющих тип ID, но не хранит эти значения. Областью видимости, в пределах которой значения должны быть уникальными, является инструкция {CREATE | ALTER} XML SCHEMA COLLECTION.

Тип идентификатора

SQL Server не поддерживает элементы типа xs:ID, xs:IDREF и xs:IDREFS. Схема не может объявлять элементы этого типа или элементы, полученные ограничением или расширением этого типа.

Локальное пространство имен

Для элемента <xsd:any> локальное пространство имен должно быть указано явно. SQL Server отклоняет схемы, содержащие пустую строку ("") в качестве значения атрибута пространства имен. Вместо этого SQL Server требует явно указать значение «##local», которое означает, что элемент без квалификатора или атрибут будет использоваться как экземпляр символа-шаблона.

Смешанный тип и простое содержимое

SQL Server не поддерживает ограничение смешанного типа простым содержимым. Дополнительные сведения см. в разделе Смешанный тип и простое содержимое.

NOTATION, тип

SQL Server не поддерживает тип NOTATION.

Условия исчерпания памяти

В работе с большими коллекциями XML-схем может наступить условие исчерпания памяти. Решения этой проблемы см. в разделе Большие коллекции схем XML и условия исчерпания памяти.

Повторяющиеся значения

SQL Server отклоняет схемы, атрибуты block или final которых содержат повторяющиеся значения, например «restriction restriction» и «extension extension».

Идентификаторы компонента схемы

SQL Server ограничивает идентификаторы компонентов схемы до максимальной длины в 1000 символов Юникода. Кроме того, пары суррогатных символов в рамках идентификаторов не поддерживаются.

Сведения о часовом поясе

В SQL Server 2008 при проверке XML-схемы сведения о часовом поясе полностью поддерживаются для значений xs:date, xs:time и xs:dateTime. В режиме обратной совместимости с SQL Server 2005 сведения о часовом поясе всегда приводятся в формат UTC (время по Гринвичу). Для элементов типа dateTime сервер преобразует и вернет указанное время во время по Гринвичу, используя величину смещения (-05:00).

Типы объединения

SQL Server не поддерживает ограничения от типов объединений.

Десятичные числа переменной точности

SQL Server не поддерживает десятичные числа переменной точности. Тип xs:decimal представляет десятичные числа произвольной точности. Обработчики XML, соответствующие минимальным требованиям, должны поддерживать десятичные числа с как минимум totalDigits=18 знаками. SQL Server поддерживает totalDigits=38 знаков, но ограничивает число знаков после запятой десятью. Все экземпляры значений типа xs:decimal внутренне представлены сервером в виде числового типа SQL (38, 10).

В этом разделе

Подраздел

Описание

Канонические формы и ограничения шаблона

Объясняет канонические формы и ограничения шаблона.

Компоненты-шаблоны и проверка достоверности содержимого

Описывает ограничения использования символов-шаблонов, нестрогой проверки и элементов anyType с коллекциями XML-схем.

Элемент <xsd:redefine>

Объясняет ограничения использования элемента <xsd:redefine> и описывает решение этой проблемы.

Тип xs:QName

Описывает ограничение, связанное с типом xs:QName.

Значения для объявлений <xsd:simpleType>

Описывает ограничения, применяемые к объявлениям типа <xsd:simpleType>.

Аспекты перечисления

Описывает ограничение, связанное с аспектами перечислений.

Смешанный тип и простое содержимое

Описывает ограничение сужения смешанного типа до простого содержимого.

Большие коллекции схем XML и условия исчерпания памяти

Содержит решения проблемы с нехваткой памяти, которая может возникнуть при работе с большими коллекциями схем.

Недетерминированные модели содержимого

Описывает ограничения, связанные с недетерминированными моделями содержимого.