在我的Scala项目中,我们有很多遗留的XSLT,并且想知道我们是否应该将XSLT转换为Scala代码。
我喜欢XSLTs将模板应用到节点的方法,并且很好地将它用于纯粹的DOM转换,但是不认为它非常适合处理XML文档中的数据(难以阅读和测试) - 我宁愿使用Scala来做到这一点。
鉴于Scala内置的XML支持和模式匹配,我认为它可能是一个很好的替代品。有没有人成功将XSLT脚本转换为Scala?是否有任何模式或最佳实践?
我知道有一个旧项目将XSLT转换为名为XSLT2src的Scala源代码,但是它已经处于休眠状态很长时间并且不支持XSLT2。
由于
答案 0 :(得分:6)
如果不确切知道要转换的XML以及如何转换,很难确定,但事实上,XSLT模板/匹配比Scala XML模式匹配更强大,更易读,后者存在许多问题。< / p>
特别是:
所以你最好从Scala调用Saxon来执行这些转换。
但是,您可能希望查看Scala编程中的chapter on XML。
最后,如今流行的观点是Scala内置的XML支持在很多方面都缺乏。参见例如Anti-XML用于旨在改善目标的项目。
答案 1 :(得分:1)
Scales Xml直接提供名称空间和属性的匹配,但也提供了更灵活的内部dsl来处理XPath(以及基于字符串的评估)。
对于转换最有趣的可能是它能够折叠路径,在XPath中选择所需的内容并转换结果“in place”。这些转换规则可以合并。
你仍然可以复制大部分xslt方法,在Scales中使用直接XPath,并像在xslt中那样转换/构建树。