Следующий XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/table">
<xsl:copy>
<xsl:apply-templates select="row">
<xsl:sort select="col[1]"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="row">
<tr>
<td>
<xsl:value-of select="col[1]"/>
</td>
<td>
<a href="{col[3]}">
<xsl:value-of select="col[2]"/>
</a>
</td>
<td>
<xsl:value-of select="col[5]"/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
При применении к следующему входному XML
<table>
<row>
<col>1</col>
<col>name1</col>
<col>link1</col>
<col>junk1</col>
<col>value1</col>
</row>
<row>
<col>2</col>
<col>name2</col>
<col>link2</col>
<col>junk2</col>
<col>value2</col>
</row>
</table>
будет производить следующий вывод
<table>
<tr>
<td>1</td>
<td>
<a href="link1">name1</a>
</td>
<td>value1</td>
</tr>
<tr>
<td>2</td>
<td>
<a href="link2">name2</a>
</td>
<td>value2</td>
</tr>
</table>
Обратите внимание на использованиеШаблоны значений атрибутов (AVT) для установки атрибута href для тега a :
<a href="{col[3]}">
Вы также можете покончить с xsl: sort если вы хотите, чтобы порядок строк в выходных данных был таким же, как порядок во входном XML.