С помощью этого кода вы можете быть довольно близко - при условии, что у вас есть все значения элементов и атрибутов, которые выводятся в вашем XML внутри некоторой таблицы в SQL Сервер:
DECLARE @Input TABLE (StyleId VARCHAR(20),
CellType VARCHAR(20),
CellData VARCHAR(20),
CellName VARCHAR(50))
INSERT INTO @Input (StyleId, CellType, CellData, CellName)
VALUES ('s87', 'String', 'Y', '_FilterDatabase');
WITH XMLNAMESPACES('urn:test' AS ss)
SELECT
StyleId AS '@ss:StyleID',
CellType AS 'Data/@ss:Type',
CellData AS 'Data',
CellName AS 'NamedCell/@ss:Name',
'' AS 'NamedCell'
FROM
@Input
FOR XML PATH('Cell')
Это приводит к вывод:
<Cell xmlns:ss="urn:test" ss:StyleID="s87">
<Data ss:Type="String">Y</Data>
<NamedCell ss:Name="_FilterDatabase"></NamedCell>
</Cell>
Я не понимаю, как можно "пропустить" фактическое объявление псевдонима пространства имен XML, так что это будет отображаться на вашем узле <Cell>
верхнего уровня.