- •Iis и xml функции sql Server
- •Поддержка xml в Microsoft sql Server 2000
- •Примеры
- •Iis и xml функции sql Server
- •Шаблоны
- •Запросы xPath
- •Замечания по разделу
- •Возможности ado 2.5 Сохранение и загрузка из файла в формате xml
- •Трансформация с помощью domDocument
- •Выдача Recordset’а в формате xml непосредственно в поток Response
- •Возможности ado 2.6
- •Использование Command для формирования xml-документа на сервере
- •Выполнение шаблона
- •Выполнение запроса xPath
- •Шаблон с агрегатными функциями
- •Формирование xml-документа на клиенте с помощью ado
- •Апдейтаграммы и xml Bulk Load
- •Апдейтаграммы
- •Добавление данных
- •Обновление данных
- •Удаление
- •Создание новой таблицы и загрузка данных
- •Загрузка иерархических документов
- •Заключение
- •Литература
- •Предисловие
- •Настройка iis
- •Содержание wsdl-файла
- •Секция types
- •Секция message
- •Секция portType
- •Формы сообщений
- •Секция binding
- •Секция service
- •Создание Web-методов
- •Тестируем Web-сервис
- •Поддержка sqlxml в .Net Framework
- •Тестовый проект
- •Цели и ограничения
- •Реализация
- •Заключение
- •Литература
- •Тип данных xml Основы
- •Метод query
- •Метод value
- •Метод exist
- •Метод modify
- •Использование xml-типа
- •Хранение xml-типа
- •Поддержка xml Schema
- •Создание схемы
- •Удаление схемы
- •Ограничения текущей реализации
- •Безопасность
- •Вложенные запросы for xml
- •Генерация xsd на лету
- •Поддержка xQuery
- •Тело запроса
- •Конструкторы узлов
- •Операторы сравнения
- •Операторы сравнения атомарных значений
- •Общие операторы сравнения
- •Операторы сравнения узлов
- •Логические операторы
- •Условные выражения
- •Flwor-выражения
- •Кванторные выражения
- •Сортировка
- •Заключение
- •Литература
Поддержка xml Schema
XML-документ – вещь чрезвычайно гибкая. Он может принимать какую угодно структуру, главное, чтобы он удовлетворял тем синтаксическим требованиям, которые излагаются в спецификации XML 1.0. С одной стороны это очень хорошо, однако конкретное приложение, как правило, хочет работать не с абстрактной структурой, а со вполне определенной. Для описания структуры или схемы документа и проверки документа на соответствие этой схеме консорциумом w3c был разработан стандарт XML Schema Definiton Language. Подробное описание его выходит за рамки статьи [5].
В SQL Server 2005 входит поддержка данного стандарта, правда в весьма ограниченном виде. Основными целями этой поддержки разработчики считают автоматическую проверку документа на допустимость и типизацию документа. Фактически первичной целью является типизация документа, так как автоматическая проверка на допустимость проводится именно на основе типов. Другой эффект от типизации документа заключается в оптимизации хранения документа и оптимизации запросов XQuery. Оптимизация заключается в том, что для типизированных документов система хранит значения соответствующих типов для значений узлов, тогда как для не типизированного документа все текстовые узлы и значения атрибутов хранятся в виде строк. Такой подход уменьшает размер сериализованного представления XML-документа и увеличивает скорость выполнения запросов.
Схема XML-документа хранится в метаданных базы, ее имя (т.е. целевое пространство имен) должно быть уникально не в пределах схемы как почти все объекты теперь, а в пределах всей базы.
Сервер хранит схемы данных не в том первоначальном текстовом виде, в котором они создавались, а в разобранном и приведенном к реляционной структуре. Разобранная схема доступна с помощью нескольких системных представлений. Вот основные из них:
sys.xml_attributes – содержит все атрибуты всех схем данной базы;
sys.xml_elements – содержит все элементы всех схем данной базы;
sys.xml_facets – содержит все фасеты всех схем данной базы;
sys.xml_components – содержит все компоненты (т.е. и атрибуты, элементы, типы и проч.) всех схем данной базы;
sys.xml_namespaces – список всех целевых пространств имен (т.е. названий схем) всех схем данной базы.
Как вы сами понимаете, собирать из всего этого схему вручную довольно сложно, поэтому существует встроенная функция xml_schema_namespace, которая по имени схемы воссоздает ее текстовое представление. Надо сказать, что полученная таким образом схема данных не совсем точно будет соответствовать первоначальной, так как в метаданных не хранятся комментарии, аннотации, префиксы пространств имен и пр. Если вам необходимо работать с оригинальной версией схемы, рекомендуется сохранять ее в отдельной таблице.
Если сейчас выбрать текстовое представление схемы my-first-schema с помощью функции xml_schema_namespace, вы увидите некоторые различия с исходной схемой:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="my-first-schema" xmlns:t="my-first-schema" elementFormDefault="qualified"> <xsd:import namespace="http://www.w3.org/2001/XMLSchema" schemaLocation="urn:schemas-microsoft-com:sql:database" /> <xsd:element name="root"> <xsd:complexType> <xsd:complexContent> <xsd:restriction base="xsd:anyType"> <xsd:sequence> <xsd:element name="a" type="xsd:integer" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:element> </xsd:schema> |
Добавлено пространство имен urn:schemas-microsoft-com:sql:database, добавлена секция complexContext.
Рассмотрим команды создания и удаления схемы.
