Реферат: Использование 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, но не выполняет трансформации текста. Например, символ меньше (<) не превращается в ссылку < |
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
|