xml - 我需要 hack 来让 xslt 让我们为变量设置新值

标签 xml xslt

我读到过,与编程语言不同,XSLT 不允许我们为变量设置新值。我只是想知道是否有任何技巧可以绕过人们正在使用的这个限制?因为能够重置变量的值本身就很有用据我所知

好吧,至少如果我们可以重置变量的值,我就可以在这里解决我的问题:how do i not repeat repeated logic in my xslt code?

最佳答案

I've read that unlike programming languages, XSLT does not allow us to set a new value to a variable.

这里有两个不正确的陈述:

  1. “与编程语言 XSLT 不同”。 XSLT 一种编程语言。它是一组称为函数式编程语言的编程语言的成员。与您要表达的内容最接近的正确陈述是:“不像*过程”编程语言”

  2. “XSLT 不允许我们为变量设置新值”。同样不正确——不是 XSLT 不允许某些事情——它是任何函数式编程语言,而 XSLT 是一种函数式编程语言。

I'm just wondering is there any hacks to get around this limitation that people are using?

没有黑客,因为人们不需要这样的黑客。如果不能更改变量的值就无法生活,只需使用过程编程语言即可。

because having the ability to reset the value of a variable is inherently useful AFAIK

实际上,拥有这样的能力在大多数情况下都是有害的。这使得理解一个程序和/或用程序正确性验证器证明它的正确性变得更加困难。任何有副作用的程序也更难优化,而且任何此类程序的优化程度都可能低于同样解决相同问题的不可变代码。

很高兴知道:众所周知,任何可以用过程语言解决的程序也可以用函数语言解决。因此,不需要可变变量——甚至没有一个问题不能以函数式方式解决。 认为这个问题无法以功能方式解决并不能真正使这个问题无法解决——只要问问其他人,他们就会告诉你一个巧妙的解决方案——通常比程序性解决方案。

可以用纯 XSLT 完成的一个很好的例子 FXSL 图书馆。 FXSL 提供了一组解决大类问题的函数/模板,其中包括非常复杂的问题,例如求任何幂 (x^y) 或对数,或基本的三角函数,或求解任何方程f(x) = 0,等等……

FXSL 函数的其他示例在文本处理领域——词标记化、拼写检查、索引构建等......

使用 FXSL 函数实现更复杂的任务:通用 LR-1 解析器、JSON 和 XPath 2.0 解析器、随机数序列的生成、数值积分和微分……等

所有这一切都是在不改变任何变量的情况下完成的——“XSLT 不允许这样做”这一事实并没有带来任何不便:)

关于xml - 我需要 hack 来让 xslt 让我们为变量设置新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287983/

相关文章:

xml - XSL 将 SVG 转换为 VML

xslt - 允许属性集设置属性所需的命名空间

css - 如何在 XSLT 中获取父节点并将其加粗(应用任何样式)?

xml - 为什么 Jing 不允许在 id 属性中使用冒号 (":")?

xml - 需要在 Linux env 中用 Perl 脚本修改几个 XML 文件

c# - 用于显示独立存储中文件的数据绑定(bind)或 foreach

c# - 更改 xml 中的值,Xamarin ios C#

python - 解析一个 JSX 文件以提取 Import 语句的属性

java - XML 中的独立参数在 Jetty 上生成,但不在 JBOSS 上生成

java - XSLT - 删除空节点