- •Iis и xml функции sql Server
- •Поддержка xml в Microsoft sql Server 2000
- •Примеры
- •Iis и xml функции sql Server
- •Шаблоны
- •Запросы xPath
- •Замечания по разделу
- •Возможности ado 2.5 Сохранение и загрузка из файла в формате xml
- •Выдача Recordset’а в формате xml непосредственно в поток Response
- •Трансформация с помощью domDocument
- •Возможности 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-выражения
- •Кванторные выражения
- •Сортировка
- •Заключение
- •Литература
Поддержка xQuery
Важно понимать, что XQuery это не язык запросов только к XML-документам или XML-фрагментам. XQuery это набор ключевых слов, операторов и функций, с помощью которых выполняются определенные действия над последовательностями.
Последовательность – это упорядоченная коллекция элементов (item collection). Она может содержать повторяющие элементы или не содержать их вообще. В последнем случае говорят, что последовательность пуста. Элементом последовательности может быть атомарное значение или узел. Элементами последовательности не могут быть другие последовательности. Для конструирования последовательности применяется оператор запятая. Последовательности могут заключаться в скобки для улучшения наглядности.
Каждый элемент в последовательности имеет тип. Если процессор не может определить тип элемента в момент помещения его в коллекцию, ему назначается тип xs:anyType. Если процессор не может определить тип атомарного элемента, ему назначается тип xs:anySimpleType.
XQuery – типизированный, функциональный язык. В нем можно создавать пользовательские функции, однако перегрузка функций не допускается. Вы можете использовать конструкторы встроенных типов для создания атомарных элементов или узлов. В XQuery нет возможности создавать пользовательские типы.
На момент написания статьи XQuery был все еще рабочим проектом (working draft).
ПРИМЕЧАНИЕ Если быть точным, имеется несколько рабочих спецификаций XQuery, и ни одна из них пока еще не была кандидатом на рекомендацию (candidate recommendation). |
В имеющейся у меня версии SQL Server 2005 (кодовое название Yukon, версия 9.00.608) реализация XQuery базируется на рабочих проектах, которые выходили в течение 2002 года. Примерно эту же версию описывает Дон Чемберлин (один из редакторов спецификации) в статье [10]. Я буду описывать поддержку XQuery в SQL Server, попутно делая замечания о несоответствии реализации текущей (на момент написания статьи) спецификации.
Основы
Запрос XQuery состоит из пролога и тела запроса. В SQL Server-е пролог может содержать декларацию пространства имен и импорт схемы.
Пролог
Импорт схемы заявлен в документации, но, похоже, что все-таки не реализован. Синтаксис объявления пространства имен такой:
"namespace" NCName "=" StringLiteral |
где NCName – неквалифицированное имя (не может содержать двоеточия).
Это отличается от синтаксиса, описанного в последних спецификациях:
"declare" "namespace" NCName "=" StringLiteral; |
Изменения состоят в добавлении ключевого слова declare и точки с запятой после объявления пространства имен.
ПРИМЕЧАНИЕ Точка с запятой в текущей спецификации обязана присутствовать после любой инструкции в прологе. На данный момент существуют следующие инструкции: объявление пространства имен, импорт схемы, объявление пространства имен по умолчанию, объявление сопоставления (collation) по умолчанию, объявление базового URI, объявление поведения пробельных символов при конструировании узлов в запросе, импорт модуля, объявление глобальных переменных, объявление функций. Как видите, SQL Server не поддерживает и десятой части стандарта в отношении пролога. |
