Rebol的DOM就像Rebol's Block的库一样?

时间:2009-10-29 08:24:10

标签: rebol

我同意Carl的观点,与Rebol的Block相比,XML太冗长了,但是对于Rebol的Block没有相应的XML DOM库,或者我错了?

如何遍历块的层次结构?

2 个答案:

答案 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 视图。