gpt4 book ai didi

xslt - 限制排序条件 xsl :for-each results to n values

转载 作者:行者123 更新时间:2023-12-04 06:11:50 26 4
gpt4 key购买 nike

我在网站上环顾四周,但无法找到特定 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>

我能够使用以下 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 &lt; 11]">

或者
<xsl:if test="(Project='Alpha')">
<xsl:for-each select=". [position &lt; 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>

但到目前为止,我无法让它发挥作用。当然是因为它现在有更多的线索和错误。

非常感谢您阅读本文和任何潜在的建议。
-T

最佳答案

您非常接近正确的解决方案。

使用 :

<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>

关于xslt - 限制排序条件 xsl :for-each results to n values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3505803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com