0

XML は Rebol の Block に比べて冗長すぎるという Carl の意見に同意しますが、Rebol の Block には XML DOM ライブラリに相当するものはありませんか、それとも間違っていますか?

block の階層を反復処理するにはどうすればよいですか?

4

2 に答える 2

2

ブロックの Rebol のランタイム抽象化! DOM をカバーするには不十分です。技術的な障壁の 1 つは、複数の場所でエイリアスが設定されている可能性があるため、ブロックの単一の一意の「親」を取得できないことです。たとえば、次のようになります。

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

>> バー: [div id: "バー"]
== [div id: "バー"]

>>段落: [p ["こんにちは"]]
== [p ["こんにちは"]]

>> append foo append/only [contents:] パラグラフ
== [div id: "foo" 内容: [p ["Hello"]]]

>> 追加バー 追加/のみ [内容:] 段落
== [div id: "bar" コンテンツ: [p ["Hello"]]]

>> 2 番目の段落「世界」を追加
== [「こんにちは」「ワールド」]

>> foo/コンテンツ
== [p ["こんにちは" "世界"]]

>>バー/コンテンツ
== [p ["こんにちは" "世界"]]

「get-parent bar/contents」のような質問に有意義に答えることができる関数を書く方法はありません。解析され、操作可能な構造に取り込まれたものがありますが、それは DOM に一致する特定のデザインの構造ではありません。

木のように自由に周りを登るには、参照に接続されたオブジェクトの束を構築する必要があります。それは他のすべての言語が行うこととほとんど同じであるため、ここでは無料のランチはありません. プラス面としては、解析の一部が自動的に処理され、DOM ライブラリがなくてもかなりの操作を行うことができます。テキストよりも開始するのに適した場所です。

欠点としては、非常に自由に見えるため、どのようなユース ケースに最適化されているのか疑問に思うことがあります。答えは、Rebol の方言以外には特に最適化されていないということです。:) 循環論法ですが、言語を研究するのが面白く、一種の「時代を超越した」ものにする特性を生み出しました。

拡張タグの提案と、それによって引き起こされた議論の側面が明らかになるかもしれません。

于 2009-12-15T01:20:22.853 に答える
0

はい、Rebol はこれらの目的に使用できます。DSL を介して任意の言語を模倣できます。%Rebol-DOM.r ビューを Mdlparser で試してください。

于 2021-03-10T17:34:04.483 に答える