如何将属性添加到以元素为中心的FOR XML PATH查询

问题描述:

我正在构建一些HTML以包含在电子邮件的正文中并使用sp_send_dbmail发送。我想对齐某些列。有没有一种简单的方法来做到这一点(使用FOR XML EXPLICIT来重写它)?如何将属性添加到以元素为中心的FOR XML PATH查询

declare @html varchar(max) 

set @html = '<table cellpadding=0 cellspacing=0 border=0>' 

set @html += 
    cast(
    (select 
     'Column1' as td, '', 
     'Column2' as td, '', 
     'Column3' as [td align=right] /* Would like to do something like this */ 
    for xml path('tr')) as varchar(max) 
) 

set @html += '</table>' 

这应该这样做。请注意,您不需要手动将<tr></tr>标签添加到您的html字符串中。那些作为for xml path('tr')的一部分给你。您可能打算将</table>添加到最后。

declare @html varchar(max) 

set @html = '<table cellpadding=0 cellspacing=0 border=0>' 

set @html += 
    cast(
    (select 
     'Column1' as td, '', 
     'Column2' as td, '', 
     'right' as [td/@align], 'Column3' as td, '' 
    for xml path('tr')) as varchar(max) 
) 

set @html += '</table>' 

select @html 

输出是:对XML功能

<table cellpadding=0 cellspacing=0 border=0><tr><td>Column1</td><td>Column2</td><td align="right">Column3</td></tr></table> 
+0

极佳的描述可以在这里找到:http://sqlserverpedia.com/blog/sql-server-bloggers/xml-paths-of-荣耀/ – milivojeviCH 2012-11-28 17:23:48