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


Поддержка типов данных xml в SQLXML 4.0

Начиная с версии SQL Server 2005, SQL Server через тип данных xml поддерживает типизированные данные XML. В этом разделе представлены сведения о том, как SQLXML 4.0 распознает экземпляры типов данных xml и реализует их поддержку.

Работа с типами данных xml

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

Задача

Пример

Раздел

Сопоставление столбца xml и его включение в XML-представление

«Сопоставление XML-элемента со столбцом типа данных xml»

Сопоставление элементов и атрибутов XSD с таблицами и столбцами по умолчанию (SQLXML 4.0)

Вставка данных в столбец xml с диаграммами обновления

«Вставка данных в столбец типа данных xml»

Вставка данных с помощью диаграмм обновления XML (SQLXML 4.0)

Массовая загрузка XML-данных в столбец xml

«Массовая загрузка XML-данных в столбцы типа данных xml»

Примеры массовой загрузки XML (SQLXML 4.0)

Рекомендации и ограничения

  • Тип <xsd:any> не может быть сопоставлен со столбцом, включающим тип данных xml. В SQLXML это делается с помощью заметки sql:overflow-field. Другой способ обойти это ограничение — сопоставление поля с типом данных xml в качестве элемента xsd:anyType. Этот способ показан в примере «Сопоставление XML-элемента со столбцом типа данных xml», ссылка на который дана в таблице выше.

  • Запрос XPath к содержимому столбца с типом данных xml не поддерживается.

  • Использование столбца xml в заметках, где он не поддерживается (например, sql:relationship и sql:key-fields) или не разрешается, приведет к ошибкам SQL Server, которые невозможно будет перехватить в приложении среднего уровня, реализующим SQLXML 4.0. Это происходит потому, что SQLXML не требуются сведения о типах SQL. Это напоминает поведение SQLXML в случае с другими типами данных, например двоичными и BLOB.

  • Сопоставление столбцов xml поддерживается только для схем XSD. Схемы XDR не поддерживают сопоставление столбцов xml.

  • При синтаксическом анализе XML SQLXML 4.0 использует поддержку, предусмотренную в SQL Server. Столбец xml может быть сопоставлен либо как типизированный, либо как нетипизированный XML. В обоих случаях SQLXML 4.0 не проверяет входной XML. Если входной XML недопустим или имеет неверный формат, то SQL Server сообщает об этом SQLXML и передает пользователю сведения об ошибках, возвращенные сервером.

  • SQLXML 4.0 зависит от ограниченной поддержки DTD, реализованной в SQL Server. SQL Server позволяет использовать внутреннее DTD в типе данных xml, с помощью которого можно определять значения по умолчанию и заменять ссылки на сущности их развернутым содержимым. SQLXML передает XML-данные серверу «как есть» (в том числе внутренние DTD). Можно преобразовывать определения DTD в документы схем XML (XSD) при помощи инструментов сторонних компаний и загружать эти данные вместе со встроенными схемами XSD в базу данных.

  • SQLXML 4.0 не сохраняет инструкции обработки декларации XML (например, <?xml version='1.0'?>) на основе поведения SQL Server. Вместо этого XML-декларация рассматривается как директива синтаксическому анализатору XML SQL Server, а его атрибуты (версия, кодировка и автономность) после преобразования данных в тип xml будут потеряны. Все XML-данные хранятся в кодировке UCS-2. Все остальные инструкции по обработке в экземпляре XML сохраняются, они допустимы в столбцах xml и могут поддерживаться SQLXML.

См. также

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

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