• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:[[:t/属性]] [[:t/継承]] [[:t/順不同]]

***同階層はマージ/異階層は上書き [#b503f498]
上位ページはすべて参照する必要はある。属性単位のオーバーライドで、状況によらず最上位に継承すべき属性があり得るので。でもキャッシュを作成しておけば何階層も辿らなくていい。
上位ページはすべて参照しなければならない。属性単位のオーバーライドで、状況によらず最上位に継承すべき属性があり得るので。でもキャッシュを作成しておけば何階層も辿らなくていい。

上位ページは複数存在するので、同じ近さの上位ページはまとめてマージ。
上位ページは複数存在するので、同じ近さの上位ページはまとめて''マージ''。
(編集衝突時のページ/版のマージと同じ?共通点は重複せず、相違点だけ追加していく??)
そして''遠いほうから''順に上書き(オーバーライド)。属性名が上下異階層間で重複していたら、最も近いものだけを使うということになる。最上位ページの属性は常に参照されるも最も上書きされやすい。
実装では1階層上を継承する処理を再帰呼び出し。最上位まで処理される。
***継承ルール [#d662e040]
%%属性は''未定義のものだけ''親ページから継承する。先祖に無ければデフォルト値。デフォルト値はWikiの設定にある。%%

%%ページ/内容内に章見出しか定義リストの形式で…%%
-%%属性名(継承する)%%
-%%値%%
-%%継承できるか否か%%

%%…を与えられるように。%%
%%通常のページ/内容は元からこの定義リストになっていることにする。属性名が無いと通常の内容の定義になる。%%
RIGHT:%%[[:t/継承]] [[:t/属性]]%%

----
未定義の属性だけ継承…というのはやめる。継承されるはずの値は全て評価しないと、属性にした要素が呼ばれないことになる。要素はただ呼ばれるだけでも意味があるが、それがなくなると応用が利かなくなってしまう。
→継承は最上位からの上書きで。

属性名を検出、継承ルールを適用するのはフレームワーク/WikiEngineの役目。属性記述に使える要素もフレームワーク次第。記述方法もフレームワークに従う。


***継承ルール [#b9848a10]
> /1/2/3 (/2/3/1なども同じページを指す)

上記のページは以下のページ(上位ページ)が持つ属性を継承する。

> /1/2 (/2/1と同じページ)
> /1/3 (/3/1と同じページ)
> /2/3 (/3/2と同じページ)
> /1
> /2
> /3
> / (ルートページ)

継承順は上位から下位へ。異階層間は上書きなので下位が有効になる。同階層間はマージ。1ページ内での重複もマージ。
属性の型は1つ。継承ルールも上書き・マージの仕方も1つ。