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


Требования и ограничения для коллекций 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>, произведя копирование и слияние содержимого любых включенных схем в единую схему для ее последующей загрузки на сервер. Дополнительные сведения см. в разделе Предпроцессор схемы для слияния включаемых схем.

<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-схемы может иметь атрибут ID. 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 и условия исчерпания памяти

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

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

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

См. также

Справочник

Предоставление разрешений на коллекции схем XML

Коллекции XML-схем (SQL Server)

Основные понятия

XML-данные (SQL Server)

Сравнение типизированного и нетипизированного XML

Ограничение однозначного соответствия примитивов