我在xslt中有一个变量,它必须包含几个取决于页面的值。
我知道<xslt: variable>
无法完成工作,因为变量无法更改。
xslt:param
可以完成这项工作,我该如何动态更改价值?
鲁洛夫
编辑1:我试着解释我想要的东西。我有一个每月显示文章的网站。我真正喜欢的是一个脚本,我可以过滤文章,所以只有特定月份的文章显示在页面中。但我需要决定每页上显示多少篇文章。因此,显示的文章数量基于月份和显示的页面。
答案 0 :(得分:0)
XSLT是一种函数式语言,除其他外,意味着xsl:variable
或xsl:param
一旦指定就无法更改其值。
这并不妨碍在XSLT中表达解决任何问题的能力(XSLT是Turing-complete),只需要根据命令式编程范例改变思维。
一旦发布您的特定问题,许多读者将能够提供完整的XSLT解决方案。
以下是一个简单示例:
我们在变量中“累积”所有想要的值,然后输出它:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="vOddsAccumulator">
<xsl:apply-templates/>
</xsl:variable>
<xsl:template match="/">
<xsl:value-of select="$vOddsAccumulator"/>
</xsl:template>
<xsl:template match="*/*"/>
<xsl:template match="num[. mod 2 = 1]">
<xsl:value-of select="concat(., ' ')"/>
</xsl:template>
</xsl:stylesheet>
将此转换应用于以下XML文档:
<nums>
<num>01</num>
<num>02</num>
<num>03</num>
<num>04</num>
<num>05</num>
<num>06</num>
<num>07</num>
<num>08</num>
<num>09</num>
<num>10</num>
</nums>
生成了想要的结果:
01 03 05 07 09