Имена столбцов с путем, указанным как data()
Если путь для имени столбца указан как «data()», то в сформированном XML-документе его значение обрабатывается как атомарное. Если следующий элемент последовательности также является элементарным значением, в XML-документ добавляется символ пробела. Это может пригодиться при создании списка типизированных элементов и значений атрибутов. Следующий запрос извлекает код модели продукции, ее имя и список продуктов этой модели.
USE AdventureWorks2012;
GO
SELECT ProductModelID AS "@ProductModelID",
Name AS "@ProductModelName",
(SELECT ProductID AS "data()"
FROM Production.Product
WHERE Production.Product.ProductModelID =
Production.ProductModel.ProductModelID
FOR XML PATH ('')) AS "@ProductIDs"
FROM Production.ProductModel
WHERE ProductModelID= 7
FOR XML PATH('ProductModelData');
Вложенная инструкция SELECT извлекает список кодов продуктов. Имя столбца для кодов продуктов в нем указано как «data()». Поскольку режим PATH указывает для имени элемента строки пустую строку, формирования элемента строки не происходит. Вместо этого значения возвращаются как назначенные атрибуту <ProductModelData
> ProductIDs элемента строки родительского элемента SELECT. Результат:
<ProductModelData ProductModelID="7"
ProductModelName="HL Touring Frame"
ProductIDs="885 887 888 889 890 891 892 893" />