列名として指定されたパスが "data()" の場合、値は生成された XML でアトミック値として扱われます。 シリアル化の次の項目もアトミック値である場合は、スペース文字が XML に追加されます。 これは、リスト型指定された要素と属性値を作成する場合に便利です。 次のクエリでは、その製品モデルの製品モデル ID、名前、および製品の一覧を取得します。
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 は、製品 ID の一覧を取得します。 製品 ID の列名として "data()" を指定します。 PATH モードでは行要素名に空の文字列が指定されているため、行要素は生成されません。 代わりに、親 SELECT の <ProductModelData
> 行要素の ProductIDs 属性に割り当てられた値が返されます。 結果を次に示します。
<ProductModelData ProductModelID="7"
ProductModelName="HL Touring Frame"
ProductIDs="885 887 888 889 890 891 892 893" />