3

SQL Server 2008 を使用して、FOR XML を使用して結果セットを発行するクエリを作成しました。現在、これは非準拠のフラグメントです。

結果の XML を外側の要素でラップし、単純な XML 宣言を 1 つのスキーマ/名前空間参照で上に配置して、出力を準拠させるにはどうすればよいですか?

ありがとう。

4

2 に答える 2

4

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>
于 2011-03-24T22:16:58.160 に答える
4

"WITH XMLNAMESPACES" を先頭に追加し、ROOT() を FOR XML 句に追加します。

WITH XMLNAMESPACES ( DEFAULT 'http://namespace_uri_here' )
SELECT * 
FROM TABLE
FOR XML AUTO, ROOT('TopLevel')
于 2011-03-24T18:17:52.343 に答える