背景:放弃了每天实际使用XSLT作为编程工具包的一部分,我想知道是否有其他语言的实现(只有)我怀念该工具的两样东西:
根据谷歌的说法,在Javascript中添加“xpath样式”支持的努力有几个,但这些支持显然没有得到很大的重视。到目前为止,我还没有发现有人在另一种语言中使用“应用-模板”方法。
问题:有没有人知道一种编程语言(希望是主流语言)从XSLT中窃取这两个好的想法,或者使用不同的方法应用相同或类似的概念?
发布于 2009-07-17 20:28:59
通过xpath使用"path“样式状态遍历数据结构的能力
我不知道嵌入XPath的其他语言,但是LINQ有点类似,特别是在它的VB语法糖版本中。不过,您可以在通用Lisp宏或D模板中实现它。
使用apply-模板而不是通过迭代或“循环”方法遍历模板转换的能力。
据我所知,没有主流语言。实际上,这个特性可能是使用XSLT的主要原因(而不是XQuery,查看密切相关的语言)。
在任意条件下对接收方进行有效的可扩展的动态分派--因此,我认为您可能可以在Common (具体而言,是CLOS )中这样做--如果我没记错的话,它的多个方法可以匹配任意条件,所以如果您有一个XPath模式评估器,您可以使用它来模拟apply-templates
,甚至更多--因为apply-templates
只对单个参数进行调度,而CLOS多方法则在多个参数上调度。
发布于 2009-07-17 20:27:57
XPath虽然是让XSLT工作所必需的,但它是独立的;像libxml这样的库可以免费提供它。您所描述的模板应用程序的样式稍微复杂一些;这正是您通常使用XSLT的目的。
任何这样做的编程语言都应该是功能性的。您可以尝试编写自己的、较少冗长的XSLT方言;Perl还可能给您提供足够的资源来令人信服地模拟此特性(尽管性能含义尚不清楚)。
然而,艰难的答案是,除了作为现有语言的库之外,这并不是真正的存在。
发布于 2009-07-17 20:28:59
对XPath来说,绝对是。对于C语言,有Xalan++,有javax.xml.xpath (有多个实现),C#有XPathNavigator和SelectNodes。如果要将XPath用于对象层次结构,请查看JXPath。
对于模板转换,如果还没有,则应该查看C#的林克。这不是完全相同的事情,但它允许不显式循环地处理对象。
https://stackoverflow.com/questions/1145409
复制相似问题