Поддержка типов данных 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-типа» |
Рекомендации и ограничения
<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. Все данные XML внутренне хранятся в кодировке UCS-2. Все другие инструкции по обработке в экземпляре XML сохраняются, они допускаются в столбцах xml и могут поддерживаться SQLXML.