我同意Carl的观点,与Rebol的Block相比,XML太冗长了,但是对于Rebol的Block没有相应的XML DOM库,或者我错了?
如何遍历块的层次结构?
答案 0 :(得分:2)
Rebol的块运行时抽象!不足以覆盖DOM。一个技术障碍是您无法获得块的单个唯一“父”,因为它可能在多个位置具有别名。例如:
>> foo: [div id: "foo"] == [div id: "foo"] >> bar: [div id: "bar"] == [div id: "bar"] >> paragraph: [p ["Hello"]] == [p ["Hello"]] >> append foo append/only [contents:] paragraph == [div id: "foo" contents: [p ["Hello"]]] >> append bar append/only [contents:] paragraph == [div id: "bar" contents: [p ["Hello"]]] >> append second paragraph "World" == ["Hello" "World"] >> foo/contents == [p ["Hello" "World"]] >> bar/contents == [p ["Hello" "World"]]
没有办法编写能够有意义地回答诸如“获取父母栏/内容”之类问题的功能。虽然你有一些已被解析并带入你可以操作的结构的东西,但它不是一个与DOM匹配的特殊设计的结构。
要像树一样自由地攀爬它,你必须建立一堆与引用相关的对象。这几乎是所有其他语言所做的,所以这里没有免费的午餐。从好的方面来说,解析的一部分是为你完成的,没有DOM库你可以做很多操作。这是一个比文本更好的起点!
在缺点方面,它似乎是自由形式,你不知道它被优化的用例。答案是,除了方言Rebol之外,它特别没有针对任何事情进行优化。 :)循环推理,但它已经产生了使语言有趣学习的属性,这使得它有点“永恒”。
您可能会发现extended tag proposal的某些方面及其引发的讨论具有启发性。
答案 1 :(得分:0)
是的,Rebol 可用于这些目的。它可以通过 DSL 来模仿任何语言。使用 Mdlparser 尝试 %Rebol-DOM.r 视图。