SQL Server 2008 を使用して、FOR XML を使用して結果セットを発行するクエリを作成しました。現在、これは非準拠のフラグメントです。
結果の XML を外側の要素でラップし、単純な XML 宣言を 1 つのスキーマ/名前空間参照で上に配置して、出力を準拠させるにはどうすればよいですか?
ありがとう。
SQL Server 2008 を使用して、FOR XML を使用して結果セットを発行するクエリを作成しました。現在、これは非準拠のフラグメントです。
結果の XML を外側の要素でラップし、単純な XML 宣言を 1 つのスキーマ/名前空間参照で上に配置して、出力を準拠させるにはどうすればよいですか?
ありがとう。
SQL Server の XML データ型に XML 処理命令を含めることはできません。
XML データ型の制限を参照してください
このコード
declare @XML xml =
'<?xml version="1.0"?>
<root>Value</root>'
select @XML
出力あり
<root>Value</root>
XML 処理命令を配置して、XML を文字列として構築できます。
declare @XML xml = '<root>Value</root>'
declare @XMLStr nvarchar(max) = '<?xml version="1.0"?>'
set @XMLStr = @XMLStr + cast(@XML as nvarchar(max))
select @XMLStr
出力
--------------------------------------------------------------------------
<?xml version="1.0"?><root>Value</root>
"WITH XMLNAMESPACES" を先頭に追加し、ROOT() を FOR XML 句に追加します。
WITH XMLNAMESPACES ( DEFAULT 'http://namespace_uri_here' )
SELECT *
FROM TABLE
FOR XML AUTO, ROOT('TopLevel')