Когда я запускаю свой запрос, пространство имен добавляется с корневым элементом, но со вторым элементом у меня есть xmlns = "" ... и я хотел бы удалить что ... и мне нужно добавить префикс пространства имен к некоторым элементам.Как удалить ненужное пустое пространство имен и добавить префикс пространства имен в tSQL
Я привел пример:
declare @xml_h as xml
declare @xml_d as xml
select @xml_h = (
select NewID() as [UID]
for XML PATH('Head')
)
select @xml_d = (
select NULL,
(
select 'V00001' as [ID],
'Some name' as [Name]
for XML PATH('SubData'), TYPE
)
for XML PATH('Data')
)
;with XmlNameSpaces (DEFAULT 'uri_1', 'uri_2' as t)
select @xml_h, @xml_d for XML PATH(''), ROOT('ROOT')
Результат существо:
<ROOT xmlns:t="uri_2" xmlns="uri_1">
<Head xmlns="">
<UID>B12B8836-2061-4934-AC06-67D34579D1A6</UID>
</Head>
<Data xmlns="">
<SubData>
<ID>V00001</ID>
<Name>Some name</Name>
</SubData>
</Data>
</ROOT>
Но мне это нужно:
<ROOT xmlns:t="uri_2" xmlns="uri_1">
<Head>
<t:UID>B12B8836-2061-4934-AC06-67D34579D1A6</t:UID>
</Head>
<Data>
<t:SubData>
<t:ID>V00001</t:ID>
<t:Name>Some name</t:Name>
</t:SubData>
</Data>
</ROOT>
Есть ли способ, чтобы удалить ненужные пустые пространства имен и добавить префикс пространства имен?
благодаря
Может быть, вы можете просто добавить 't:' в имена столбцов в запросе типа '... выбрать NewID() как [t: UID]' и так далее? Как сервер sql знает, что префикс пространства имен? – Stoleg