Во-первых, вам не нужно «экранировать» апос, например \'Talking Out\'
, просто используйте 'Talking Out'
.
Во-вторых, инструкция xsl:sort
может быть только дочерней по отношению к xsl:apply-templates
или xsl:for-each
инструкции в XSLT 1.0
В-третьих, стиль XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Agents">
<table>
<xsl:apply-templates>
<xsl:sort select="time" data-type="number" order="descending"/>
</xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="AgentSales[State='Talking Out']">
<tr>
<xsl:apply-templates/>
</tr>
</xsl:template>
<xsl:template match="AgentSales/*">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
<xsl:template match="AgentSales/Reason|AgentSales"/>
</xsl:stylesheet>
С этим входом:
<Agents>
<AgentSales>
<AgentName>WRIGHT SIMMONS NATHANIEL</AgentName>
<State>Talking Out</State>
<Reason>whatever</Reason>
<time>3</time>
</AgentSales>
<AgentSales>
<AgentName>SOMEONE</AgentName>
<State>Talking In</State>
<Reason>whatever</Reason>
<time>2</time>
</AgentSales>
<AgentSales>
<AgentName>SOMEONE ELSE</AgentName>
<State>Talking Out</State>
<Reason>whatever</Reason>
<time>5</time>
</AgentSales>
</Agents>
Выход:
<table>
<tr>
<td>SOMEONE ELSE</td>
<td>Talking Out</td>
<td>5</td>
</tr>
<tr>
<td>WRIGHT SIMMONS NATHANIEL</td>
<td>Talking Out</td>
<td>3</td>
</tr>
</table>