我想让计数器值根据条件递增。但我无法增加值或向全局变量加 1。我正在使用以下代码
<xsl:variable name="count">0</xsl:variable>
<xsl:variable name="incre">1</xsl:variable>
<xsl:template match="/">
<xsl:if test="$video1 != ''">
<xsl:variable name="count" select="number($count)+number($incrementor)"/>
<!-- display video1 -->
</xsl:if>
<xsl:if test="$video2 != ''">
<xsl:variable name="count" select="number($count)+number($incrementor)"/>
<!-- display video2 -->
</xsl:if>
<xsl:if test="$video3 != ''">
<xsl:if test="$count<2">
<xsl:variable name="count" select="number($count)+number($incrementor)"/>
<!-- display video3 -->
</xs:if>
</xsl:if>
<xsl:if test="$video4 != ''">
<xsl:if test="$count<2">
<xsl:variable name="count" select="number($count)+number($incrementor)"/>
<!-- display video4 -->
</xs:if>
</xsl:if>
</template>
如何增加 count 的值或加 1。提前致谢。
您的问题源于在尝试使用函数式语言时像过程程序员一样思考。这是一个糟糕的组合;当你使用工具而不是对抗它们时,工具会发挥更好的作用。
不要尝试遍历文档并增加变量来计数。用声明性的术语描述你想要什么。
在这里,您希望前两个非空<video>
要显示文档中的元素,并且您想要其他元素(所有空的<video>
元素以及第三个及之后的非空元素<video>
元素)被默默地忽略。 (当然,这是我编造的:因为您没有显示 XML,所以我实际上不知道用 XML 术语来说您真正想要什么。)
所以你需要一个模板来抑制空<video>
要素:
<xsl:template match="video[not(node())]"/>
并且您需要一个模板来抑制任何<video>
文档中元素前面有两个或多个非空元素<video>
要素:
<xsl:template
match="video[count(preceding::video
[* or normalized-space(.)]
)
> 1]"/>
并且您想要一个模板来显示前两个非空<video>
要素:
<xsl:template
match="video[* or normalized-space(.)]
[count(preceding::video
[* or normalized-space(.)]
)
< 2]">
<xsl:message>Displaying video ... </xsl:message>
<!--* ... whatever else is needed to display the video ... *-->
<xsl:template>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)