今、CMS の内部設計を見直しているのですが、どうも DOM でページ構造を表現すると上手くいく事が証明できそうです。
例えば、子ページの順番をソートする場合や、子ページの一覧の先頭に新規ページを追加する場合、順番の数字で管理するより、前後のリンクで管理する方が、更新が必要なデータの件数が一定であるので、特に子ページの件数が多い場合は望ましいと思われます。
DOM で考えると childNodes / firstChild / lastChild / previousSibling / nextSibling です。
しかし、サイトのページが多い場合、毎回まともに XML を読み込んで DOM として処理していては、処理速度やデータがロックされる期間を考慮すると好ましくありません。
なので、あくまでも DOM 的な考え方でページのオブジェクトの設計・実装を行う事になります。
システムで CMS サーバと呼べるようなデーモンを準備して、常に DOM をオンメモリの状態にしておけるのであれば DOM として処理する方が妥当でしょう。
まぁ正攻法以外もあります。
例えば、先頭の順番の数字が 0 だったら -1 を設定するとか。
途中の番号が歯抜けでも問題無ければ、途中を削除しても順番は更新しないとか。
でも、追加とか移動する場合に、順番を大量に更新する必要がある場合もあります。
結局、この記事はただのメモですので、どーでもいい人はスルーしてください。
<index template="template/index.html"> <page type="list" id="1" title="新着情報" updated="2010-12-01 13:25:30" template="template/page.html"> <parts type="html"> <![CDATA[ 新着情報一覧です。 ]]> </parts> <parts type="list" order="new" /> <page type="page" id="3" title="サイトリニューアルしました。"updated="2010-12-05 13:00:00" template="template/page.html"> <contents> <![CDATA[ サイトリニューアルいたしました。 ]]> </contents> </page> <page type="page" id="2" title="サイトオープンしました。"updated="2010-12-01 13:00:00" template="template/page.html"> <contents> <![CDATA[ サイトオープンいたしました。 ]]> </contents> </page> </page> </index>