2012-03-29 11 views
17

データベースから顧客によって指定された特定のXML形式のデータをエクスポートしようとしています。私が生成するXMLは、最終的な出力を生成するために第三者によって(おそらくXSLTによって)操作されますが、私はその形式に近い形で私のXMLを正式にしたいと思います。SQL FOR XML - データを要素または属性として出力する

顧客はそうのように、各製品のデータを要求した:

<product id="1234567890123"> 
    <activeState partNumber="A1234567890" shipmentDate="20110518" /> 
</product> 

私の既存のSQLは次のとおりです。レンダリング

SELECT SerialNo as id, 
    PartNo as partNumber, 
    CONVERT(VARCHAR(8), GETDATE(), 112) AS shipmentDate, 
FROM Products 
WHERE SerialNo = @SerialNo 
FOR XML PATH ('product'), TYPE) 

は...:

<product> 
    <id>100000000458</id> 
    <partNumber>10004905892</partNumber> 
    <shipmentDate>20120312</shipmentDate> 
</product> 

私がいることを期待してこのデータをXSLTで操作するのは簡単ですが、純粋に知的エクササイズとして、私がどの程度までにできるのかを見たいと思いますSQL。私の最初の野望は、単純にidを子要素ではなく製品の属性として表現することでした。 activeState要素のレンダリングはXSLTに任せていましたが、私が途中で手伝ってもらえればどうしようもありません...

何か提案がありますか?

答えて

27

@を使用して属性を作成します。

select SerialNo as "@id", 
     PartNo as "activeState/@partNumber", 
     convert(varchar(8), getdate(), 112) as "activeState/@shipmentDate" 
from Products 
where SerialNo = @SerialNo 
for xml path('product') 
+0

ありがとうございます。 – CJM

関連する問題