Entry

XML + XSLT で CMS を作るアイデア

2005年12月01日

先日からこのサイトを改装することばかり考えているもんで,しつこいですけど今回もその文脈です。

Movable Type はネット経由で手軽にコンテンツを更新できるところが便利だけれど,コンテンツが DB の中に入っちゃうもんだから,バックアップや他システムへの移行に難儀するなぁ……と常々思っていました。普段の運用でも,せっかくテキスト形式のコンテンツを作ったんだから,テキストを扱える他のツール(UN*X な環境にはそういうツールがたくさんあるんです)と自分のサイトを連携できれば便利なはずです。

そんなことをゴニョゴニョと考えていて,ちょっと思い付いたのが XML と XSLT でどうにかならんか……ということでした。もちろん,こういうアイデアは少し前からあったわけで,あたしが新たに考え付いたもんじゃありません。ちょっと探してみたところ,考えているのに似たものもありました。

  • Apache Cocoon - Apache XML Project の超有名なシステム。サイト管理のシステムというよりは XML パブリッシング・ツール(似たようなもんだけど)。Xerces が必要。
  • SmartStep - MSXML + ActiveX + WSH + JScript なウェブサイト管理。

数年前,その手の本を読んで「これからは XSLT でサイトを運営するのが主流になるのかな……」なんて思っていたんですけど,ブログ・ブームが来てこういったサイト運営はすっかり影が薄くなっちゃいました。

具体的にどういうもんを考えているのかというと,大体以下のようなモノです。我ながらまだぼんやりとしかイメージできていないんですけど。

  • コンテンツは HTML ではなく独自定義の XML ファイルで保存する(メタ文書)
    • Atom feed の entry 要素のように,文書のメタ・データと content をまとめて,1つのメタ文書にする。
    • 文書のメタ・データは必須のデータの他にユーザが独自定義できる
    • content のフォーマットは自由(ただし,整形式の XML である必要があるから`&' や `<' のような文字はそのまま使えない)
    • メタ文書から XSLT を介して HTML を生成する
  • メタ文書をまとめた場所をリポジトリとしてメタ・サイトにする
    • メタ・サイト全体にわたるデータ(サイト名,URL 等々)をひとつのファイルにまとめてサイトのメタ・データにする
    • メタ文書の content にはサイトのメタ・データを埋め込める
    • サイトのメタ・データを使って HTML を生成する(インデックスやカテゴリ・リストに使う)
  • リポジトリは DB に入れない
  • リポジトリをリモートに置くかローカルに置くかは検討中

と,こんな感じで,管理方法としてはかなり原始的でユルユルです。けれど,保存するデータを限られたツールに依存させないようにするなら,これくらいユルユルに管理するのがいいんじゃないかと思います。

ミソは HTML を直接保存しないで,メタ文書を保存するということです。「メタ文書」というのはここでの造語で,ちょうど DocBook のようなもんです。HTML や TeX,それに roff や PDF なんかの素になる文書だと思ってもらえればいいと思います。同様に,「メタ・サイト」というのも,具体的なウェブサイトの前段階(素)という意味です。最初は DocBook をメタ文書にできないかと思ったんですけれど,目的も違えば規模も大きいので別のフォーマットを作るのがいいんじゃないかと思いました。

もうひとつのミソは,文書のメタ・データを独自定義できることです。例えば,基本的な情報の他に,外部 URL のリファレンス・リストを定義できたら便利だと思うことがあるんですけれど,プラグインから書き直すのは結構しんどかったりします。ここら辺は,メタ文書から独自定義を集めておいて,XSLT の xslt:param 経由でスタイルシートに渡す,みたいなことで実現できそうな感じ……。でも,XSLT になじみがなければプラグインを作る手間とそんなに変わらないかな……。

XSLT を使うメリットは,文書の変換エンジンを再発明しなくていいということです。メタ文書に XML を使うのも,将来的なフォーマットにも柔軟に対応できそうだ,といったことを(一応)にらんでます。一昔前と違って今どきは XSLT 周りの実装も相当進んできたし,個人サイトの文書管理に使うのも現実的になってきた感じがします。

一方で,XSLT は Movable Type のようなブログ・ツールのテンプレートを書くのと比べて,敷居が高いし複雑だという評価もあるようです。ここら辺は,小回りを利かせようと思うと設定項目が増えて複雑になるし,簡単に更新できるようにするとユーザが選択する範囲が狭くなるといった意味でトレード・オフなんじゃないかと思います。小回りを限界まで利かせようと思ったら,結局手打ちで更新するのが一番自由ですしね。

まぁ……妄想だけ話したところでどうしようもないので,ぼちぼち作ってみます。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN