- •Работа с xml в ms sql Server 2005, 2008
- •Использование типа данных xml Тип данных xml
- •Методы Query, Value, Exist, Modify и Nodes
- •Извлечение xml-данных с помощью предложения for xml Режим запроса raw
- •Результат:
- •Режим запроса explicit
- •Режим запроса path
- •Извлечение вложенных xml–данных
- •Индивидуальные задание:
Режим запроса explicit
В режиме EXPLICIT используется другой подход к формированию структуры XML документа, основанный на применении универсальной таблицы. Универсальная таблица является табличным представлением документа XML. Каждая строка универсальной таблицы содержит данные, которые будут представлены в итоговом документе XML в виде элемента.
Первые два столбца универсальной таблицы определяют положение элемента, содержащего данные этой строки, в иерархии итогового документа XML:
Тег. Числовое значение, которое уникальным образом определяет тег элемента, содержащего данные строки.
Родитель. Числовое значение, которое указывает родительский тег для данного элемента.
Каждый XML-тег в итоговом документе, который сопоставляется таблице или представлению базы данных, должен быть представлен отдельным значением Тег в универсальной таблице. Значение Родитель определяет положение тега в иерархии итогового документа. Для тегов на верхнем уровне фрагмента XML (для которых отсутствует родительский элемент) значение родительского тега равно NULL.
16. Пример извлечения данных из реляционной таблицы и преобразования к XML:
use AdventureWorksLT
select 1 as Tag, Null as Parent,
b.Name as [product!1!Category],
a.Name as [product!1!Name],
a.ProductNumber as [product!1!Number]
FROM
SalesLT.Product a inner join SalesLT.ProductCategory b ON
a.ProductCategoryID=b.ProductCategoryID
FOR XML EXPLICIT
Результат:
<product Category="Mountain Bikes" Name="Mountain-100 Silver, 38" Number="BK-M82S-38" />
<product Category="Mountain Bikes" Name="Mountain-100 Silver, 42" Number="BK-M82S-42" />
<product Category="Mountain Bikes" Name="Mountain-100 Silver, 44" Number="BK-M82S-44" />
<product Category="Mountain Bikes" Name="Mountain-100 Silver, 48" Number="BK-M82S-48" />
<product Category="Mountain Bikes" Name="Mountain-100 Black, 38" Number="BK-M82B-38" />
<product Category="Mountain Bikes" Name="Mountain-100 Black, 42" Number="BK-M82B-42" />
<product Category="Mountain Bikes" Name="Mountain-100 Black, 44" Number="BK-M82B-44" />
<product Category="Mountain Bikes" Name="Mountain-100 Black, 48" Number="BK-M82B-48" />
<product Category="Mountain Bikes" Name="Mountain-200 Silver, 38" Number="BK-M68S-38" />
Режим запроса path
В режиме PATH создаются XML- данные в пользовательском формате с использованием синтаксиса под названием XPath для сопоставления значений атрибутам, элементам, дочерним элементам, текстовым узлам и значениям данных. Возможность сопоставлять реляционные столбцы XML-узлам позволяет создавать сложные документы XML без необходимости создавать сложные запросы в режиме EXPLICIT.
17. Пример извлечения данных из реляционной таблицы и преобразования к XML:
use AdventureWorksLT
select b.Name "@Name_Categorya",
a.Name "product/Name",
a.ProductNumber "product/Number"
FROM
SalesLT.Product a inner join SalesLT.ProductCategory b ON
a.ProductCategoryID=b.ProductCategoryID
FOR XML PATH
Результат:
<row Name_Categorya="Mountain Bikes">
<product>
<Name>Mountain-100 Silver, 38</Name>
<Number>BK-M82S-38</Number>
</product>
</row>
<row Name_Categorya="Mountain Bikes">
<product>
<Name>Mountain-100 Silver, 42</Name>
<Number>BK-M82S-42</Number>
</product>
</row>