我需要从 xml 文件中选择票数最多的前 10 个职位
<generals>
<person>
<id>1</id>
<votes>7150204</votes>
<name>Олег Вещий</name>
<group>1</group>
<lifedates>?–912</lifedates>
<smstel>9999</smstel>
<smscode>1</smscode>
</person>
<person>
<id>2</id>
<votes>9160842</votes>
<name>Добрыня Никитыч (прообраз богатыря)</name>
<group>1</group>
<lifedates></lifedates>
<smstel>9999</smstel>
<smscode>2</smscode>
</person>
<person>
<id>3</id>
<votes>8687189</votes>
<name>Князь Святослав</name>
<group>1</group>
<lifedates>942–972</lifedates>
<smstel>9999</smstel>
<smscode>3</smscode>
</person>
<person>
<id>4</id>
<votes>7365251</votes>
<name>Мстислав Владимирович Тмутараканский</name>
<group>1</group>
<lifedates>ок. 983–1036</lifedates>
<smstel>9999</smstel>
<smscode>4</smscode>
</person>
这样的职位只有 100 个,您需要选择并显示最多 10 个。这是我写的:
<h2>Князь</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Имя</th>
<th>Годы жизни</th>
<th>Количество голосов</th>
<th>Позиция</th>
</tr>
<xsl:for-each select="generals/person">
<xsl:sort order="descending" select="number(votes)" data-type="number"/>
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="lifedates"/></td>
<td><xsl:value-of select="votes"/></td>
</tr>
</xsl:for-each>
</table>
我按数字参数对它们进行了排序,即 我在顶部的票数最多,在底部的票数最少。我正在尝试使用 xsl:if 从该数据中选择最大的 10 个。但我不知道怎么做。该任务说通过 xsl:if 和 position() 来完成,但它对我不起作用,一切都崩溃了。Xsl:如果我这样写:
<xsl:for-each select="generals/person">
<xsl:sort order="descending" select="number(votes)" data-type="number"/>
<xsl:if test="position()<11">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="lifedates"/></td>
<td><xsl:value-of select="votes"/></td>
</tr>
</xsl:if>
</xsl:for-each>
我寻求帮助以解决这个问题,我环顾四周,我没有找到类似的例子