Рассмотрим следующий SQL:
;WITH XMLNAMESPACES(DEFAULT 'http://www.mynamespace.co.uk')
,CTE_DummyData AS (
select id=1
)
select TOP 1
[@ID]=1,
(select top 1 [@ID] = 1 FROM CTE_DummyData FOR XML PATH ('Child'), TYPE)
from CTE_DummyData
FOR XML PATH ('Parent')
Thie возвращает xml:
<Parent xmlns="http://www.mynamespace.co.uk" ID="1">
<Child xmlns="http://www.mynamespace.co.uk" ID="1" />
</Parent>
Мне нужно вернуть xml с объявлением xmlns только на корневой элемент. например:
<Parent xmlns="http://www.mynamespace.co.uk" ID="1">
<Child ID="1" />
</Parent>
Есть ли способ сделать это?
Примечание:
Вышеприведенный SQL является крайним упрощением реального кода, который создает сложный документ, поэтому переход от FOR XML PATH на самом деле не вариант, если мне не придется потратить пару дней дополнительной работы. Для ясности на верхнем уровне всего документа требуется наличие NS, а все дети должны быть без него.