Реферат: Использование XML совместно с SQL

<authors xmlns="x-schema:#Schema1"

au_fname="Michael" au_lname="O'Leary" address="22 Cleveland Av. #14" />

<authors xmlns="x-schema:#Schema1"

au_fname="Meander" au_lname="Smith" address="10 Mississippi Dr." />

<authors xmlns="x-schema:#Schema1"

au_fname="Morningstar" au_lname="Greene" address="22 Graybar House Rd." />

<authors xmlns="x-schema:#Schema1"

au_fname="Michel" au_lname="DeFrance" address="3 Balding Pl." />

Как видите, теперь документу предшествует ХDR-схема, позволяющая проверить правильность его содержимого.

FOR XML EXPLICIT

В данном режиме можно формировать практически любые документы; структура результирующего XML-документа определяется непосредственно в самом запросе. Запрос может принимать очень сложный вид, ниже будут рассмотрены правила, по которым он составляется.

Первое поле всегда называется tag и представляет собой числовой идентификатор таблицы. Вы можете указывать для него любые числовые значения. В результирующем документе он не появляется, и нужен только, чтобы определить связи между таблицами для формирования иерархического документа. Второе поле называется parent и тоже может представлять любой числовой идентификатор. Он определяет родительскую таблицу для данной таблицы и в результирующем документе также не присутствует. Если родитель отсутствует, указывается 0 или NULL. Для иерархических выборок нужно использовать несколько запросов, объединенных с помощью оператора UNION ALL.

После двух обязательных полей tag и parent следуют поля, которые требуется выбрать из таблицы. Для них должен быть задан псевдоним, определяющий тип XML-узла, его название и другую информацию. Вот синтаксис этого псевдонима:

ElementName!TagNumber!AttributeName!Directive

Рассмотрим назначение каждой из частей этого псевдонима:

ElementName – имя элемента, в котором будет находится элемент данного поля. Обычно здесь указывается имя таблицы.

TagNumber – идентификатор таблицы, в которой находится данное поле. Одному и тому же ElementName всегда должен соответствовать один TagNumber. Он также не отображается ни в каком виде в результирующем документе, однако нужен для определения иерархических связей между таблицами.

AttributeName – имя атрибута (или элемента), представляющего данное поле.

Directive – по существу, представляет собой тип узла. Может принимать следующие значения:

element поле представляется в виде элемента
xml То же самое, что element, но не выполняет трансформации текста. Например, символ меньше (<) не превращается в ссылку &lt;
cdata значение поля обрамляется соответствующим образом. Имя атрибута указывать совместно с этим ключевым словом нельзя.
hide позволяет скрыть поле
id,idref,idrefs позволяют делать ссылки на другие элементы. Эти атрибуты имеют значение, только если создается схема данных.

Рассмотрим небольшой пример. В самом начале мы рассматривали запрос с использованием FOR XML RAW:

select au_fname,au_lname,address from authors where au_fname like 'M%' for xml raw

Перепишем его с использованием FOR XML EXPLICIT:

select 1 as tag,

0 as parent,

au_fname as 'authors!1!fname',

au_lname as 'authors!1!lname',

address as 'authors!1!address'

from authors where au_fname like 'M%'

for xml explicit

Результат будет точно таким же. Немного исправим запрос для демонстрации возможностей директивы FOR XML EXPLICIT.

select 1 as tag,

К-во Просмотров: 535
Бесплатно скачать Реферат: Использование XML совместно с SQL