0

我同意 Carl 的观点,即 XML 与 Rebol 的 Block 相比过于冗长,但 Rebol 的 Block 没有等效的 XML DOM 库,还是我弄错了?

如何遍历 block 的层次结构?

4

2 回答 2

2

Rebol 的运行时抽象块!不足以覆盖 DOM。一个技术障碍是您无法获得一个块的唯一唯一“父级”,因为它可能在多个位置有别名。例如:

>> foo: [div id: "foo"]
== [div id:“foo”]

>> bar: [div id: "bar"]
== [div id:“酒吧”]

>> 段落:[p [“你好”]]
== [p [“你好”]]

>> append foo append/only [contents:] 段落
== [div id:“foo”内容:[p [“Hello”]]]

>> 附加栏 附加/仅 [contents:] 段落
== [div id: "bar" 内容: [p ["Hello"]]]

>> 附加第二段“世界”
== [“你好”“世界”]

>> foo/内容
== [p [“你好”“世界”]]

>> 栏/内容
== [p [“你好”“世界”]]

没有办法编写一个可以有意义地回答诸如“get-parent bar/contents”之类的问题的函数。虽然你已经得到了一些已经被解析并带入你可以操作的结构的东西,但它并不是一个具有与 DOM 匹配的特定设计的结构。

要像一棵树一样自由地爬上它,您必须构建一堆与引用连接的对象。这几乎是所有其他语言所做的,所以这里没有免费的午餐。从好的方面来说,部分解析是为您处理的,并且您可以在没有 DOM 库的情况下进行相当多的操作。这是一个比文本更好的起点!

不利的一面是,它看起来如此自由,以至于您想知道它针对哪些用例进行了优化。答案是,除了 Rebol 方言之外,它没有专门针对任何东西进行优化。:) 循环推理,但它产生了使语言有趣的特性,并使其具有某种“永恒性”。

您可能会发现扩展标签提案的各个方面以及它引发的讨论很有启发性。

于 2009-12-15T01:20:22.853 回答
0

是的,Rebol 可用于这些目的。它可以通过 DSL 模仿任何语言。使用 Mdlparser 尝试 %Rebol-DOM.r 视图。

于 2021-03-10T17:34:04.483 回答