Шаблон | Описание |
eName | Создание XML-элемента с именем eName с содержимым соответствую-щего столбца |
@aName | Создание XML-атрибута с именем aName с содержимым соответствую-щего столбца |
eName1/eName2 | Создание XML-элемента с именем eName1 и вложенного элемента с именем eName2 с содержимым соответствующего столбца |
eName/@aName | Создание XML-элемента с именем eName и атрибут с именем aName с содержимым соответствующего столбца |
text() | Создание текстового содержимого тега |
data() | Создание атомарного значения текстового содержимого тега |
Рис. 14.13. Простейший XML-фрагмент, сформированный в режиме PATH
На рис. 14.14 и 14.15 приведен пример SELECT-запроса в режиме PATH, использующего несколько шаблонов из табл. 14.1. Следует обратить внимание, что в этом режиме при формировании результата у разработчика появляется возможность сочетать атрибутную и элементную форму.
Рис. 14.14. Применение шаблонов для псевдонимов столбцов в режиме PATH
Рис. 14.15. Результат выполнения SELECT-запроса,
представленного на рис. 14.14, режиме PATH
В примере на рис. 14.16 приведен более сложный запрос, формирующий четырехуровневую XML-структуру. При этом в SELECT-списке внешнего запроса используются два подзапроса. Первый подзапрос формирует скалярное значение, которое потом записывается как текстовое содержимое тега количество_кафедр. В результате выполнения второго подзапроса формируется значение атрибута с именем код элемента кафедра, а также XML-фрагмент, который помещается в тег преподаватели.
Обратите внимание на применение ключевого слова TYPE во внутреннем подзапросе. Использование TYPE позволяет указать на то, что формируемый XML-фрагмент следует рассматривать как вложенный.
Рис. 14.16. Пример использования вложенных подзапросов в режиме PATH
Рис. 14.17. Результат выполнения SELECT-запроса,
представленного на рис. 14.16, в режиме PATH
14.2.2. Преобразование XML-документа в табличный вид
Для преобразования XML-данных в строки таблицы предназначена функция OPENXML. Она принимает три входных параметра: дескриптор, сформированный системной хранимой процедурой с именем SP_XML_PREPAREDOCUMENT; выражение XPATH [7] и целое положительное число, определяющее режим работы функции.
Процедура SP_XML_PREPAREDOCUMENT должна быть выполнена до SELECT-запроса, применяющего OPENXML. Процедура принимает в качестве входного параметра XML-документ (в формате строки) и возвращает дескриптор, который впоследствии применяется функцией OPENXML.
Выражение XPATH, принимаемое функцией OPENXML в качестве второго параметра, предназначено для выбора требуемых данных из исходного (введенного процедурой SP_XML_PREPAREDOCUMENT) XML-документа.
Последний, третий, параметр функции OPENXML указывает на тип преобразования (режим). Основные базовые типы преобразования приведены в табл. 14.2.
Кроме того, с помощью выражения WITH должна быть указана структура формируемого результирующего набора.
Таблица 14.2
Дата: 2019-02-25, просмотров: 220.