ルートノードにデフォルトの名前空間を使用してT-SQLを使用してXMLファイルを生成しようとしていますが、子ノードに名前空間が定義されていません。
DECLARE @xmlData XML
DECLARE @xmlInner XML
SELECT @xmlInner =
(
SELECT * FROM dbo.GH_DATA_BS_EVLTN_MNTH_ANL [r]
FOR XML PATH('r'), TYPE
)
;WITH XMLNAMESPACES (DEFAULT 'http://www.testnamespace.com')
SELECT @xmlData =
(
SELECT '2012-10-25T14:13:00Z' as "@DataFeedDate",@xmlInner
FOR XML PATH('root')
)
SELECT @xmlData
上記のスクリプトは、次のXMLファイルを生成します
<root xmlns="http://www.testnamespace.com" DataFeedDate="2012-10-25T14:13:00Z">
<r xmlns="">
<RPRT_DT_CD>2012-10-25T14:15:00-05:00</RPRT_DT_CD>
<RPRT_MO_CD>2013-01</RPRT_MO_CD>
<RPRT_EV_CD>1</RPRT_EV_CD>
</r>
</root>
問題は、タグに空白の名前空間xmlns = ""が含まれていることですが、意図した結果は、名前空間が定義されていない状態で取得することです。