有什么好处呢?最直接的好处就是同一个node可以被多个xml共享,想想DOM是怎么处理这个的。
问题是一个简单的修改就需要重新建立一个完整的xml。Scala提供了BasictTransformer和RuleTransformer,再加上无敌的case匹配,可以方便地处理某类节点。
有个麻烦地地方,Scala-2.7.5的BasicTransformer有bug,只能用nightly或者等2.8发布了。
而且好用。模型非常简单,比该死的DOM好太多了。 Lexer的直接支持使得XML使用起来就像是写代码一样,这样可以直接把XSLT丢掉了。 目前还有些不是很好的地方,比如不能用变量作为tag的名字:<{tag_name}>,这样不行;再比如XPATH的支持还不全。不过好在可以implicit来增加新的方法,语法糖衣真是不错。
用了一上午的时间,就实现了xpath的解释,类似这样的东西:a[@b==”1” and (c/@d==2 or e[f==”abc”])]。再加上Scala对函数对象的支持以及函数名的随意性,很容易就实现了对xml操作的扩展。除了Scala定义好的”\”,”\”,加入了”\%”来支持复杂的xpath,跟dom4j差不多了。真爽!
使用Lift的SHtml.a()设计ajax调用的时候,老版本的Lift不支持给onclick加入用户自己定义的javascript方法,新版本的有了。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /** * Create an anchor tag ar...
Scala确实非常适合实现DSL
上海的苹果专卖太土了
Comments powered by Disqus.