XSL を使用して、カタログ数値の XML リストを価格でソートする方法を見つけようとしています。現時点では、XML からの正しい情報を表示するだけです。次のコードを使用する場合。
<xsl:template match="catalog">
<html>
<head>
<title>book catalog</title>
</head>
<body>
<h1>book catalogs</h1>
<table border="1">
<thead>
<tr bgcolor="red">
<td>id</td><td>author</td><td>title</td><td>generation</td><td>price</td><td>publish date</td><td>description</td>
</tr>
</thead>
<xsl:for-each select="book">
<xsl:sort data-type="number" select="price" />
<tbody>
<tr>
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="author"/></td>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="generation"/></td>
<td><xsl:value-of select="price"/></td>
<td><xsl:value-of select="publishDate"/></td>
<td><xsl:value-of select="description"/></td>
</tr>
</tbody>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
しかし、 xsl:sortの場所を変更してtbodyタグの後に配置すると、エラーが発生します。この2つのコードの違いは何ですか? xsl:for-each の後にxsl :sortを挿入する必要がありますか、それとも何か他のことが問題を引き起こしますか?
<body>
<h1>book catalogs</h1>
<table border="1">
<thead>
<tr bgcolor="red">
<td>id</td><td>author</td><td>title</td><td>generation</td><td>price</td><td>publish date</td><td>description</td>
</tr>
</thead>
<xsl:for-each select="book">
<tbody>
<tr>
<xsl:sort data-type="number" select="price" />
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="author"/></td>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="generation"/></td>
<td><xsl:value-of select="price"/></td>
<td><xsl:value-of select="publishDate"/></td>
<td><xsl:value-of select="description"/></td>
</tr>
</tbody>
</xsl:for-each>
</table>
</body>