Правила и ограничения по использованию коллекций 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> и описывает решение этой проблемы. |
|
Описывает ограничение, связанное с типом xs:QName. |
|
Описывает ограничения, применяемые к объявлениям типа <xsd:simpleType>. |
|
Описывает ограничение, связанное с аспектами перечислений. |
|
Описывает ограничение сужения смешанного типа до простого содержимого. |
|
Содержит решения проблемы с нехваткой памяти, которая может возникнуть при работе с большими коллекциями схем. |
|
Описывает ограничения, связанные с недетерминированными моделями содержимого. |