我下面的代码似乎合乎逻辑,但我不知道为什么排序不适用于错误“变量或参数'排序'未定义。” “?我怀疑在 xsl 中声明参数有问题。谁能指出我的错误?谢谢
传递参数的java代码
String sort = "rating";
transformer.setParameter("sort", sort); /It will control the sort in xsl
xml文件
<?xml version="1.0" ?>
<cd>
<title>A Funk Odyssey</title>
<artist>Jamiroquai</artist>
<tracklist>
<track id="1">
<title>Feels So Good</title>
<time>4:38</time>
<rating>2</rating>
</track>
<track id="2">
<title>Little L</title>
<time>4:10</time>
<rating>5</rating>
</track>
<track id="3">
<title>You Give Me Something</title>
<time>5:02</time>
<rating>3</rating>
</track>
<track id="4">
<title>Corner of the Earth</title>
<time>3:57</time>
<rating>1</rating>
</track>
</tracklist>
</cd>
这是我的 xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes"/>
<xsl:param name="sort" select="title"/>
<xsl:template match="/">
<table border="1">
<thead>
<tr>
<th><a href="#">Title</a></th>
<th><a href="#">Time</a></th>
<th><a href="#">Rating</a></th>
</tr>
</thead>
<tbody>
<xsl:for-each select="cd/tracklist/track">
<xsl:sort select="$sort"/>
<tr>
<td><xsl:value-of select="title" /></td>
<td><xsl:value-of select="time" /></td>
<td><xsl:value-of select="rating" /></td>
</tr>
</xsl:for-each>
</tbody>
</table>
</xsl:template>
</xsl:stylesheet>