Я осмотрел сайт, но не смог найти решение конкретной проблемы XSL. Если вы признаете это как повторяющийся пост, я прошу прощения и был бы благодарен за указание в правильном направлении.
На основе сравнительно простого набора данных XML, приведенного ниже, я хочу создать таблицу по проекту, но также ограничить записи чем-то более «усваиваемым», таким как «новейшие» 10 для этого проекта.
+---------------------------------------------------+
| Alpha | Beta |
+---------------------------------------------------+
| Log_20091014_0900PM.xml | Log_20091015_0900PM.xml |
| Log_20091013_0900PM.xml | ... |
| ... | |
+---------------------------------------------------+
| Gamma | Delta |
+---------------------------------------------------+
| ... | ... |
+---------------------------------------------------+
Исходные данные XML вида:
<LogResults>
<Result>
<Project>Alpha</Project>
<Data>Log_20091013_0900PM.xml</Data>
<Name>Log_20091013_0900PM.xml</Name>
</Result>
<Result>
<Project>Alpha</Project>
<Data>Log_20091014_0900PM.xml</Data>
<Name>Log_20091014_0900PM.xml</Name>
</Result>
<Result>
<Project>Beta</Project>
<Data>Log_20091015_0900PM.xml</Data>
<Name>Log_20091015_0900PM.xml</Name>
</Result>
<Result>
<Project>Gamma</Project>
<Data>Log_20091016_0900PM.xml</Data>
<Name>Log_20091016_0900PM.xml</Name>
</Result>
<Result>
<Project>Delta</Project>
<Data>Log_20091019_0900PM.xml</Data>
<Name>Log_20091019_0900PM.xml</Name>
</Result>
<Result>
<Project>Delta</Project>
<Data>Log_20091020_0900PM.xml</Data>
<Name>Log_20091020_0900PM.xml</Name>
</Result>
...
</LogResults>
Я могу показать ALL результаты для каждого проекта с соответствующими вариациями следующего XSL:
<xsl:for-each select="LogResults/Result">
<xsl:sort select="Data" order="descending" />
<xsl:if test="(Project='Alpha')">
<li>
<a style="font-size:11pt;">
<xsl:attribute name="href">
Alpha/<xsl:value-of select="Data" />
</xsl:attribute>
<xsl:value-of select="Name" />
</a>
</li>
</xsl:if>
</xsl:for-each>
Вопрос:
Можно ли ограничить результаты до «новейших» 10 (или 20 ...)? И если да, то как бы вы предложили это сделать?
Я пытался использовать position()
следующим образом, например
<xsl:for-each select="(LogResults/Result) [position < 11]">
или
<xsl:if test="(Project='Alpha')">
<xsl:for-each select=". [position < 11]">
<li>
<a style="font-size:11pt;">
<xsl:attribute name="href">
Alpha/<xsl:value-of select="Data" />
</xsl:attribute>
<xsl:value-of select="Name" />
</a>
</li>
</xsl:for-each>
</xsl:if>
Но пока я не мог заставить его работать. Конечно, потому что сейчас больше ошибок и следов.
Большое спасибо за то, что даже прочитали это и любой потенциальный совет.
-Т