2009/12/14

ひさしぶりにコンテンツを作ってみた

簡単なXML→HTML変換器を作成したので、調子に乗ってテストを兼ねて気になっていた話題で文書を作成してみました。 実際に使ってみるといろいろ不備がみつかったのですが、その場で修正していって、自分が書きたいものに特化しているけれど、そこそこ使えそうな形になってきたと思います。

きっとベースは同じでも書きたいものによって、少しずつ実装を変化させていくと思います。 書く量を減らしつつ、便利なものを短時間で作っていく、そんな事を目指しています。 対象によってタグが違うのは不便そうですが、記述する対象によってボキャブラリーやタグ付けの粒度は変化すると思うんですよね。

このブログでは読書感想文的なものは単純なリンクを含む程度で、 本文で必要なものは 強調 ぐらいです。 またコードや端末への入力・出力といった技術的な要素を多く含むので、codeタグといったXHTMLへ直接マッピングされるタグの他にコメント用の"note"タグという独自のタグも含んでいます。

今回使ったVelocityベースのAnakiaフレームワークはXSLTのように標準化がされていないけれど、 小さくまとまっていますから自分のツールボックスには入れておこうと思います。

いくつか実装した機能として、本文中に直接anchorとhrefを埋め込む事はせずに、外部のXMLファイルに情報をまとめて、本文からは簡単な名前だけを書き、Anakiaの中で変換するようにしています。 XMLファイルは、build.xmlの中でcontextタグの中で指定して、参照用のマクロをsite.vslで定義しています。 応用すれば、いろいろな情報と本文との結び付きを弱く保つ事ができそうです。

build.xmlでの指定例

<anakia>
...
  <context name="anc" file="../etc/proj_anchor.xml" />
</anakia>

ここで指定した"proj_anchor.xml"ファイルの中身は次のようになっています。

<anchor>
  <item name="ibm.jp" href="http://www.ibm.com/jp"/>
</anchor>

build.xmlの中で指定したcontextには次のようなVelocityマクロを準備しました。

#macro (find_anc $name $value)
  #set ($href = $anc.selectNodes("/item[@name='$name']/@href"))
  <a $href>$value</a>
#end

丁度このブログ記事を生成するツールには、この仕組みを入れていなかったのでバックポートしてみました。 ブログの中にあるリンクを一元管理するのは良いのか、悪いのか、どうなんだろうな。

しかし自分で作成したツールの仕様書をどの程度のレベルでまとめておくのか、少し悩んでいます。 okwaveでも似たような投稿は度々みますね。良い結論に至ったものは、まだなさそうですが。 まぁ基本的な取扱説明書と内部のデータ構造ぐらいは最低限かな。

今回作成したツールで書いた文書はこちら → http://www.yasundial.org/shell_script/

0 件のコメント: