現在、次のような SQL ステートメントがあります (複雑さの一部を削除しました)。
SELECT
Name as '@name'
,(
SELECT foo.Name as '@name', foo.Key as '@key'
FROM foo
FOR XML Path('foo'), root ('foos'), type
)
,(
SELECT
1 as Tag
,null as Parent
,bar.Name as 'bar!1!name'
,bar.Key as 'bar!1!key'
,bar.Content as 'bar!1!!cdata'
FROM bar
FOR XML EXPLICIT, root ('bars'), type
)
FROM baz
FOR XML Path('baz'), root ('bazzes')
このクエリの結果は、次のような優れた XML 値です。
<bazzes>
<baz name="">
<foos>
<foo name="" key="">
</foo>
</foos>
<bars>
<bar name="" key="">
<content>the content</content>
</bar>
</bars>
</baz>
</bazzes>
content
要素に期待どおりの CDATA マークアップがないことに注意してくださいtype
。
ただし、タイプを削除すると、コンテンツ要素全体がエンコードされて次のようになります。
<bazzes>
<baz name="">
<foos>
<foo name="" key="">
</foo>
</foos>
<bars>
<bar name="" key="">
<content> etc.
</bar>
</bars>
</baz>
</bazzes>
クエリの結果を有効な xml 値に保ち、型引数を削除して、CDATA マークアップが正しくなるようにするにはどうすればよいですか。
<bazzes>
<baz name="">
<foos>
<foo name="" key="">
</foo>
</foos>
<bars>
<bar name="" key="">
<content><![CDATA[the content]]></content>
</bar>
</bars>
</baz>
</bazzes>