【问题标题】:Xslt 1.0 Numeric VariableXslt 1.0 数字变量
【发布时间】:2014-10-16 09:36:56
【问题描述】:

通常编程语言允许你声明一个变量,例如:

Dim test as integer

然后允许在每个循环中增加 a 的值。

for test=0 to 3
    print test
next 

我可以在 XSLT 1.0 中创建类似的结构吗?

使用'xsl:variable',我声明了一个变量,但是如果我想像你一样增加一个for-each呢?

【问题讨论】:

  • XSLT 是一种函数式语言,而不是过程式或命令式语言。函数式语言是不同的;它们没有相同的可变状态(变量)。您可以达到相同的结果,但优化的空间更大,出错的空间更小。

标签: xslt xslt-1.0


【解决方案1】:

最接近的是 XSLT 2.0

<xsl:for-each select="0 to 3">
  <xsl:value-of select="."/>
</xsl:for-each>

处理整数序列0, 1, 2, 3

如您所见,它不使用变量并递增,因为变量是不可变的,您只需将值绑定到它们一次。

使用 XSLT 1.0,您可以处理节点,也可以编写递归的命名模板,其中每个递归调用都传递一个递增的参数值。您是否真的需要这取决于您的要求,如果您是 XSLT 声明式编程的新手,那么最好通过显示 XML 输入示例和您想要创建的相应输出来定义您的问题,解释输入映射到输出。

【讨论】:

  • 谢谢马丁!我正在研究可能性......有办法在我的问题中标记你吗?
  • 正确的是:“你可以处理节点,也可以编写一个递归的命名模板,其中每个递归调用传递一个递增的参数值”。
  • 该评论是否意味着问题?是的,您可以编写带有参数的模板,并在递归调用或应用参数时增加或减少参数。有关示例,请参阅dpawson.co.uk/xsl/sect2/N4806.html#d6176e19。但我建议先学习如何编写带有匹配模式、位置谓词的模板以及如何在处理递归和参数之前应用它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
相关资源
最近更新 更多