2011-11-19 40 views
0

我在xslt中有一个变量,它必须包含几个取决于页面的值。 我知道<xslt: variable>无法完成这项工作,因为变量无法更改。我该怎么做最好的方法

可以xslt:param可以做这项工作,我该如何改变它的价值?

Roelof

编辑1:我试着解释我想要的。我有一个每月显示文章的网站。我真正喜欢的是一个脚本,我可以过滤这些文章,因此只有特定月份的文章才会显示在页面中。但我需要确定每页上显示的文章数量。所以显示文章的数量是基于月份和显示的页面。

+1

我猜你正在尝试在程序上使用xslt。您能否请您张贴您的输入样本以及您想要的输出?就目前而言,恐怕你的问题不能得到合理的回答。 – FailedDev

回答

0

XSLT是一种功能性的语言,其中,除其他事项外,是指一个或xsl:variablexsl:param,指定一次不能改变它的值。

这并不妨碍在XSLT中表达任何问题的解决方案(XSLT是图灵完备版),并且只需要一个人根据命令式编程范例改变思路。

一旦你发布你的具体问题,许多读者将能够提供完整的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> 

通缉[R esult生产

01 03 05 07 09