Вот пример того, как может выглядеть подходящая таблица стилей. Конечно, вам придется адаптировать его в зависимости от того, какой HTML-код вы на самом деле хотите создать.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Advanced_IP_Scanner">
<html>
<head>
<title>Ip Scanner Table</title>
</head>
<body>
<table>
<thead>
<tr>
<th>...</th>
<th>...</th>
...
</tr>
</thead>
<tbody>
<xsl:apply-templates/>
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="row">
<tr>
<td><xsl:value-of select="@ip"/></td>
<td><xsl:value-of select="@name"/></td>
<td><xsl:value-of select="@status"/></td>
<td><xsl:value-of select="@has-http"/></td>
....
</tr>
</xsl:template>
</xsl:stylesheet>
Для .NET доступно несколько процессоров XSLT. Microsoft один поставляется в комплекте с .NET и поддерживает только XSLT 1.0 (что хорошо для такой простой задачи, как эта, но не работает на более сложных преобразованиях.) Есть два независимых процессора, которые поддерживают XSLT 2.0 - мой собственный продукт Saxon , который хорошо зарекомендовал себя и широко используется, и совсем недавно, XQSharp.