मैंने एक कम हैकिंग का पता लगाया। एकमात्र समस्या यह है कि यह <td />
. बनाएगा <td></td>
. के बजाय यदि मान शून्य है। जब कुछ पुराने आउटलुक क्लाइंट को ईमेल भेजा जाता है तो यह कुछ लेआउट समस्या का कारण होगा।
declare @table varchar(max) = '(select 1 a, ''one'' b union all select 2, ''two'') t '
declare @sql varchar(max) = '
declare @xml xml = (
select * from ' + @table + '
for xml path(''tr''), root(''table'')
);
select @xml'
declare @tmp table (x xml)
insert into @tmp exec(@sql)
declare @x xml = (select x from @tmp)
select @x.query('<body>
<table>
<tr>
{for $c in /table/tr[1]/* return element th { local-name($c) } }
</tr>
{
for $r in /table/*
return element tr { for $c in $r/* return element td { data($c) } }
}
</table>
</body>')