我读到,与编程语言不同,XSLT 不允许我们为变量设置新值。我只是想知道是否有任何技巧可以绕过人们正在使用的这个限制?因为有能力重置 a 的值variableAFAIK 本质上很有用
好吧,至少如果我们可以重置变量的值,我可以在这里解决我的问题:我如何不在我的 xslt 代码中重复重复的逻辑? https://stackoverflow.com/questions/6296656/how-do-i-not-repeat-repeated-logic-in-my-xslt-code
我读过这与编程不同
语言,XSLT 不允许我们
为变量设置一个新值。
这里有两个不正确的说法:
“与编程语言不同,XSLT”。 XSLTis一种编程语言。它是称为函数式编程语言的一组编程语言的成员。与您想说的最接近的正确陈述是:“不像*过程”编程语言”
“XSLT 不允许我们为变量设置新值”。再次不正确 — 不是 XSLT 不允许某些东西 — 它是任何函数式编程语言,而 XSLT 是一种函数式编程语言。
我只是想知道是否有任何黑客行为
为了绕过这个限制
人们正在使用?
有no黑客,因为人们不需要这样的黑客。如果不能改变变量的值就无法生存,人们只需使用过程编程语言即可。
因为有
重置 a 值的能力
AFAIK 变量本质上是有用的
其实拥有这样的能力在大多数情况下都是有害的。这使得理解程序和/或使用程序正确性验证器证明其正确性变得更加困难。任何具有副作用的程序也更难以优化,并且任何此类程序的优化程度可能低于也解决相同问题的不可变代码。
很高兴知道:众所周知,任何可以用过程语言解决的程序也可以用函数语言解决。因此,不需要可变变量——甚至没有一个问题不能以函数方式解决。那you认为问题无法以函数方式解决并不意味着这个问题就无法解决——只要询问其他人,他们就会向你展示一个巧妙的解决方案——通常比程序解决方案更短、更优雅。
一个很好的例子可以用纯 XSLT 做什么 is the FXSL http://fxsl.sf.net图书馆。 FXSL 提供了一组用于解决大量问题的函数/模板,其中包括非常复杂的问题,例如求幂(x^y
) 或对数,或基本三角函数,或求解任何方程f(x) = 0
, ETC。 ...
FXSL 函数的其他示例属于文本处理领域——单词标记化、拼写检查、索引构建等......
使用 FXSL 功能实现更复杂的任务:通用 LR-1 解析器、JSON 和 XPath 2.0 解析器、随机数序列的生成、数值积分和微分等。
所有这一切都是在不改变任何变量的情况下完成的——“XSLT 不允许这样做”这一事实并没有带来一点不便:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)