2009-10-29 2 views
0

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

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

+0

Вы просто хотите спуститься через структуру блока или вам нужно вернуться к родителям и т. Д.? – Sunanda

+0

Ну, я хочу все, конечно ... если возможно;) –

ответ

2

Ребвольная абстракция блока! не является достаточным для получения покрытия 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 и обсуждение, которое оно вызвало для освещения.

+0

Подумайте обо всем этом и вернетесь к нему в один прекрасный день спасибо :) –

 Смежные вопросы

  • Нет связанных вопросов^_^