Использование XML совместно с SQL
XML и современные базы данных
Алексей Ширшов
Введение
Этот материал посвящен тем нововведениям, которые появились в SQL и технологиях доступа к базам данных благодаря XML. Статья описывает базовые механизмы и возможности использования XML в MS SQL Server и ADO. Статья не претендует на фундаментальные исследования в этой области, так как XML и SQL Server вещи по природе своей необъятные. Кроме того, уровень поддержки XML в SQL Server постоянно увеличивается, и за всеми изменениями чрезвычайно трудно уследить. Например, после выхода SQLXML 3.0, стало возможным использовать SQL Server в качестве сервера Web-служб. К сожалению, эта тема в статье не освещается, но в будущем, возможно, найдется время и для нее.
Своим появлением статья обязана тому беспорядку, который был в голове у автора по данному вопросу.
Поддержка XML в Microsoft SQL Server 2000
Microsoft SQL Server 2000 содержит встроенные средства для работы с XML. Результирующую выборку можно представлять в формате XML с помощью ключевых слов for xml оператора select, а также сделать запрос из документа XML с помощью оператора OPENXML.
FOR XML
Этот оператор предназначен для представления результирующего набора строк в виде XML-документа. Рассмотрим его синтаксис:
[ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT } [ , XMLDATA ] [ , ELEMENTS ] [ , BINARY BASE64 ] } ] |
Назначение ключевого слова BROWSE не относится к теме нашей статьи.
FOR XML RAW – Каждая строка представляется в виде элемента <row/>. Название поля формирует название атрибута, а значение поля – значение атрибута.
FOR XML AUTO – Документ XML форматируется точно так же, как и при XML RAW, только название элемента, представляющего строку, заменяется на название таблицы.
FOR XML EXPLICIT – Самый сложный и гибкий вариант для создания XML-документов. В этом режиме можно формировать документы практически любой формы, однако для этого сам запрос должен быть написан по определенным правилам. Более подробно они рассматриваются ниже.
XMLDATA – Иногда бывает полезно получить не только сами данные, но и их схему. Схема данных также записывается в формате XML. Она определяет типы элементов и атрибутов, накладывает ограничения на их значения, и вообще представляет метаинформацию, позволяющую проверить документ на действительность (validity). Существует несколько разновидностей (форматов) схем данных. SQL Server использует XDR-схемы (XML Data Reduced). Подробную документацию по XDR можно найти в [1]. Ключевое слово XMLDATA может быть использовано для всех трех режимов формирования XML-документа (raw, auto и explicit).
ELEMENTS – Ключевое слово, использующееся только совместно с FOR XML AUTO. При его указании поля формируются как элементы: название поля соответствует названию элемента, а значение поля – значению элемента.
BINARY BASE64 – Определяет, как будут выведены двоичные данные (binary data).
ПРЕДУПРЕЖДЕНИЕ SQL Server не позволяет использовать предикат GROUP BY совместно с FOR XML AUTO. |
Примеры
Для простоты и удобства будем использовать стандартную базу данных PUBS из поставки SQL Server 2000. Надо сказать, что Query Analyzer – не лучшее средство для просмотра XML-документов, т.к. результат он помещает в одну ячейку, как текстовое поле (или в одну строку, обрезая текст, при выводе результата в виде текста). Поэтому, если вы хотите испробовать все примеры сами, обратитесь к разделу IIS и XML-функции SQL Server.
Начнем с рассмотрения FOR XML RAW:
select au_fname, au_lname, address from authors where au_fname like 'M%' for xml raw |
Этот запрос возвращает имена всех авторов, начинающиеся с буквы M. Вот результаты в формате XML:
<row au_fname="Marjorie" au_lname="Green" address="309 63rd St. #411" /> <row au_fname="Michael" au_lname="O'Leary" address="22 Cleveland Av. #14" /> <row au_fname="Meander" au_lname="Smith" address="10 Mississippi Dr." /> <row au_fname="Morningstar" au_lname="Greene" address="22 Graybar House Rd." /> <row au_fname="Michel" au_lname="DeFrance" address="3 Balding Pl." /> |
Теперь заменим xml raw на xml auto:
<authors au_fname="Marjorie" au_lname="Green" address="309 63rd St. #411" /> <authors au_fname="Michael" au_lname="O'Leary" address="22 Cleveland Av. #14" /> <authors au_fname="Meander" au_lname="Smith" address="10 Mississippi Dr." /> <authors au_fname="Morningstar" au_lname="Greene" address="22 Graybar House Rd." /> <authors au_fname="Michel" au_lname="DeFrance" address="3 Balding Pl." /> |
Как видите,
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.