Dob Rebol как библиотека для Rebol's Block? - PullRequest
0 голосов
/ 29 октября 2009

Я согласен с Карлом, что XML слишком многословен по сравнению с Блоком Ребола, но нет эквивалента библиотеки XML DOM для Блога Ребола, или я ошибаюсь?

Как я могу пройти по иерархии блоков?

1 Ответ

2 голосов
/ 15 декабря 2009

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"]]

Нет способа написать функцию, которая могла бы содержательно ответить на такие вопросы, как «панель / содержание get-parent». Хотя у вас есть что-то, что было проанализировано и приведено в структуру, которой вы можете манипулировать, это не структура с конкретными проектами, соответствующими DOM.

Чтобы свободно лазить по нему как дереву, вам нужно построить кучу объектов, связанных ссылками. Это почти то же самое, что и любой другой язык, поэтому здесь нет бесплатного обеда. С другой стороны, часть синтаксического анализа позаботится о вас, и вы можете сделать немало манипуляций без библиотеки DOM. Это лучшее место для начала, чем текст!

С другой стороны, это может показаться настолько свободным, что вы задаетесь вопросом, для каких вариантов использования он был оптимизирован. Ответ в том, что он не был оптимизирован ни для чего, кроме диалекта Rebol. :) Циркулярное рассуждение, но оно породило свойства, которые делают язык интересным для изучения и который делает его «вечным».

Вы можете найти аспекты предложения расширенного тега и обсуждения, которое оно спровоцировало, чтобы пролить свет.

...