我在网站上环顾四周,但无法找到特定XSL问题的解决方案.如果你认为这是一个重复的帖子,我道歉并感谢指出正确的方向.
基于下面相对简单的XML数据集,我想按项目创建一个表,但也将条目限制为更容易"消化"的项目,如该项目的"最新"10.
+---------------------------------------------------+
| Alpha | Beta |
+---------------------------------------------------+
| Log_20091014_0900PM.xml | Log_20091015_0900PM.xml |
| Log_20091013_0900PM.xml | ... |
| ... | |
+---------------------------------------------------+
| Gamma | Delta |
+---------------------------------------------------+
| ... | ... |
+---------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
表单的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>
Run Code Online (Sandbox Code Playgroud)
我可以使用以下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>
Run Code Online (Sandbox Code Playgroud)
题:
是否可以将结果限制为"最新"10(或20 ......)?如果是这样,你会怎么建议这样做?
我尝试以position()下面的方式使用例如
<xsl:for-each select="(LogResults/Result) [position < 11]">
Run Code Online (Sandbox Code Playgroud)
要么
<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>
Run Code Online (Sandbox Code Playgroud)
但到目前为止,我无法让它发挥作用.当然因为现在更多的是追踪和错误.
非常感谢甚至阅读这个和任何潜在的建议.-T
Dim*_*hev 13
你非常接近正确的解决方案.
用途:
<xsl:for-each select="LogResults/Result[Project='Alpha']">
<xsl:sort select="Data" order="descending" />
<xsl:if test="not(position() > 10)">
<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>
Run Code Online (Sandbox Code Playgroud)