特定の名前空間が定義された既存のSQLServer2005データベーステーブルにxml構造があり、XMLをクエリして、その過程で名前空間プレフィックスをデフォルトの名前空間に変更する必要があります。古いxmlには、ルートノードと子ノードで定義された名前空間があります。ルートを簡単に置き換える方法は知っていますが、子ノードの名前空間はわかりません。
現在のデータ:
<sg:Settings xmlns:sg="uri:mynamespace">
<sg:SomeData xmlns:sg="uri:mynamespace"/>
</sg:Settings>
SQLの使用:
WITH XMLNAMESPACES
('uri:mynamespace' as sg)
SELECT
settingsNode.query('<Settings xmlns="uri:mynamespace"> { sg:SomeData } </Settings> ')
FROM
SettingsTable CROSS APPLY
SettingsXml.nodes('/sg:Settings') T(settingsNode)
私は以下を得ることができます:
<Settings xmlns="uri:mynamespace">
<sg:SomeData xmlns:sg="uri:mynamespace"/>
</Settings>
しかし、私はこれを取得しようとしています:
<Settings xmlns="uri:mynamespace">
<SomeData/>
</Settings>
SQL XQueryを使用して名前空間をマージする方法はありますか?