gpt4 book ai didi

xml - 在 XSLT 中递增和检查计数器变量

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:36 27 4
gpt4 key购买 nike

我在分配一个计数器变量并递增它然后检查 XSLT 中的某个值时几乎没有困难。这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" <xsl:variable name="empty_string"/>
<xsl:variable name="counter" select="0"/>
<xsl:template match="/Collection">
<xsl:for-each select="Content">
<xsl:sort select="Html/root/Event/start_date" order="ascending"/>
<xsl:variable name="isFutureEvent">
<xsl:value-of select="syscom:isFutureDate(Html/root/Event/start_date)" />
</xsl:variable>

<xsl:if test="Html/root/Event != $empty_string">
<xsl:if test="$isFutureEvent='true'">
<!-- Increment Counter -->
<xsl:value-of select="$counter + 1"/>
<!-- Test if Counter < 4 -->
<xsl:if test="$counter &lt; 3">
<div class="media">
<!-- Do stuff here -->
</div>
</xsl:if> <!-- End if for counter -->
</xsl:if>
</xsl:if>
<!--</xsl:when>-->
<!--</xsl:choose>-->
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

但它似乎并没有增加我的计数器,也没有在计数器达到 3 时退出。对此有什么帮助吗?

最佳答案

XSL 中的“变量”实际上是常量——您无法更改它们的值。这:

<xsl:value-of select="$counter + 1"/> 

只会输出$counter+1的值

要执行循环,您必须使用递归 - 例如:

<xsl:stylesheet 
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template name="loop">
<xsl:param name="i"/>
<xsl:param name="limit"/>
<xsl:if test="$i &lt;= $limit">
<div>
<xsl:value-of select="$i"/>
</div>
<xsl:call-template name="loop">
<xsl:with-param name="i" select="$i+1"/>
<xsl:with-param name="limit" select="$limit"/>
</xsl:call-template>
</xsl:if>
</xsl:template>

<xsl:template match="/">
<html>
<body>
<xsl:call-template name="loop">
<xsl:with-param name="i" select="0"/>
<xsl:with-param name="limit" select="10"/>
</xsl:call-template>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

虽然最好避免循环 - 在大多数情况下,可以编写 XSL 来避免循环,但我对您要实现的目标的了解还不够多,无法为您提供完整的解决方案。

关于xml - 在 XSLT 中递增和检查计数器变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9608432/

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