Отправленный вами XML не похож на правильно сформированный XML. Оставляя это вам, вы можете использовать элемент foreach в xslt.
Например:
<table>
<xsl:for-each select="node/cd">
<tr>
<td>
<xsl:value-of select="data/@value"/>
</td>
</tr>
</xsl:for-each>
</table>
Проверьте эту ссылку для более: http://www.w3schools.com/Xsl/xsl_for_each.asp
Надеюсь, у вас есть идея.
Обновление : Спасибо subtenante за очистку xml.
Вы можете использовать шаблон, чтобы решить это
<xsl:template match="node">
<html>
<body>
<table border="1">
<xsl:apply-templates select="cd" />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="cd">
<tr>
<td>
<xsl:value-of select="@name" />
</td>
<td>
<xsl:value-of select="data/@value"/>
</td>
</tr>
<xsl:if test="cd">
<xsl:apply-templates select="cd" />
</xsl:if>
</xsl:template>
Это приведет к следующей таблице:
<table border="1">
<tbody>
<tr>
<td>td1</td>
<td>cd1-0</td>
</tr>
<tr>
<td>td2</td>
<td>cd1-1</td>
</tr>
<tr>
<td>td3</td>
<td>cd1-2</td>
</tr>
<tr>
<td>td4</td>
<td>cd2-0</td>
</tr>
</tbody></table>
Предоставленный xslt нужно немного изменить, чтобы достичь именно того, что вы хотите. Если ты в порядке с этим. Отлично.
Источник: 1
Ramjee