Этот код содержит очевидную синтаксическую ошибку :
<xsl:for-each select="fixture">
<tr>
<td><xsl:value-of select="match"/></td>
<td><xsl:sort select="date"
order="ascending" data-type="text"/></td>
<td><xsl:value-of select="ground"/></td>
<td><xsl:value-of select="group"/></td>
</tr>
</xsl:for-each>
xsl:sort
может быть только потомком xsl:for-each
или потомком xsl:apply-templates
. Вот оно дитя td
.
Существует вторая семантическая ошибка :
<xsl:template match="fixture">
<table width="100%" border="2">
<tr bgcolor="silver"><td>match</td><td>date</td><td>ground</td><td>group</td></tr>
<xsl:for-each select="fixture">
Тело xsl:for-each
выше не будет применяться ни к какому узлу, поскольку текущий узел (fixture
) не имеет дочерних элементов с именем fixture
.
Вы, вероятно, хотите :
<xsl:template match="fixtures">
Полный исправленный код: :
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<html><head> <title>Output document</title></head>
<body><xsl:apply-templates /></body></html>
</xsl:template>
<xsl:template match="fixtures">
<table width="100%" border="2">
<tr bgcolor="silver"><td>match</td><td>date</td><td>ground</td><td>group</td></tr>
<xsl:for-each select="fixture">
<xsl:sort select="date"
order="ascending" data-type="text"/> <tr>
<td><xsl:value-of select="date"/></td>
<td><xsl:value-of select="match"/></td>
<td><xsl:value-of select="ground"/></td>
<td><xsl:value-of select="group"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
и применительно к предоставленному документу XML :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Output document</title>
</head>
<body>
<table width="100%" border="2">
<tr bgcolor="silver">
<td>match</td>
<td>date</td>
<td>ground</td>
<td>group</td>
</tr>
<tr>
<td>France vs. Germany</td>
<td>05-06-012</td>
<td>Krakow</td>
<td>A</td>
</tr>
<tr>
<td>Ireland vs. Poland</td>
<td>05-06-12</td>
<td>Apatov</td>
<td>A</td>
</tr>
<tr>
<td>Italy vs. Spain</td>
<td>06-06-12</td>
<td>Kiev</td>
<td>B</td>
</tr>
<tr>
<td>Portugal vs. Croatia</td>
<td>06-06-12</td>
<td>Warsaw</td>
<td>B</td>
</tr>
<tr>
<td>Austria vs. Greece</td>
<td>07-06-12</td>
<td>Flam</td>
<td>C</td>
</tr>
<tr>
<td>Lithuania vs. Latvia</td>
<td>07-06-12</td>
<td>Gameu</td>
<td>C</td>
</tr>
<tr>
<td>England vs. Sweden</td>
<td>08-06-12</td>
<td>Hanaas</td>
<td>D</td>
</tr>
<tr>
<td>Norway vs. Denmark</td>
<td>08-06-12</td>
<td>Olam</td>
<td>D</td>
</tr>
</table>
</body>
</html>