Here is a full example on how to generate XHTML with embedded CSS in T-SQL. It is using XQuery FLWOR expression. You could easily adjust it for your needs.
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE (
spid INT PRIMARY KEY
, blocking_spid INT
, Duration TIME
, [database_name] VARCHAR(100)
, open_tran_count INT
, [login_name] VARCHAR(100)
, [host_name] VARCHAR(100)
, [program_name] VARCHAR(100)
, sql_text VARCHAR(2048) NOT NULL
);
INSERT INTO @tbl
VALUES (1, 0, '12:34:54.1237', 'DB1', 0, 'Login1', 'HostName1', 'Prog1', 'SELECT * FROM tbl;')
, (25, 0, '10:34:54.1037', 'DB2', 0, 'Login2', 'HostName2', 'Prog2', 'SELECT * FROM AnotherTbl;')
-- DDL and sample data population, end
DECLARE @xhtmlBody XML
, @body NVARCHAR(MAX);
SET @xhtmlBody = (SELECT (SELECT TOP(10) *
FROM @tbl
--WHERE ...
ORDER BY spid DESC
FOR XML PATH('row'), TYPE, ROOT('root'))
.query('<html><head>
<meta charset="utf-8"/>
(: including embedded CSS styling :)
<style>table <![CDATA[ { border-collapse: collapse; width: 100%;} ]]>
th <![CDATA[ {background-color: #4CAF50; color: white;} ]]>
th, td <![CDATA[ { text-align: left; padding: 8px;} ]]>
tr:nth-child(even) <![CDATA[ {background-color: #f2f2f2;} ]]>
</style>
</head>
<body>
<div>Report Name such and such</div>
<div>Total SPID count: {count(/root/row)}</div>
<table border="1"><thead>
<tr>
<th>SPID</th>
<th>Blocking SPID</th>
<th>Duration days hr:mi:ss.ms</th>
<th>Database Name</th>
<th>Open_tran_count</th>
<th>Login name</th>
<th>Host name</th>
<th>Program</th>
<th>SQL Text</th>
</tr></thead>
<tbody>
{
for $row in /root/row
return <tr>
<td>{data($row/spid)}</td>
<td>{data($row/blocking_spid)}</td>
<td>{data($row/Duration)}</td>
<td>{data($row/database_name)}</td>
<td>{data($row/open_tran_count)}</td>
<td>{data($row/login_name)}</td>
<td>{data($row/host_name)}</td>
<td>{data($row/program_name)}</td>
<td>{data($row/sql_text)}</td>
</tr>
}
</tbody></table></body></html>'));
SELECT @xhtmlBody;
SET @body = CAST(@xhtmlBody AS NVARCHAR(MAX));
Output
<html>
<head>
<meta charset="utf-8" />
<style>table { border-collapse: collapse; width: 100%;}
th {background-color: #4CAF50; color: white;}
th, td { text-align: left; padding: 8px;}
tr:nth-child(even) {background-color: #f2f2f2;}
</style>
</head>
<body>
<div>Report Name such and such</div>
<div>Total SPID count: 2</div>
<table border="1">
<thead>
<tr>
<th>SPID</th>
<th>Blocking SPID</th>
<th>Duration days hr:mi:ss.ms</th>
<th>Database Name</th>
<th>Open_tran_count</th>
<th>Login name</th>
<th>Host name</th>
<th>Program</th>
<th>SQL Text</th>
</tr>
</thead>
<tbody>
<tr>
<td>25</td>
<td>0</td>
<td>10:34:54.1037000</td>
<td>DB2</td>
<td>0</td>
<td>Login2</td>
<td>HostName2</td>
<td>Prog2</td>
<td>SELECT * FROM AnotherTbl;</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>12:34:54.1237000</td>
<td>DB1</td>
<td>0</td>
<td>Login1</td>
<td>HostName1</td>
<td>Prog1</td>
<td>SELECT * FROM tbl;</td>
</tr>
</tbody>
</table>
</body>
</html>