外字のためDTDを特殊化する.

DITAには外字という概念がありません.DITA Open ToolkitのDTDを見るとブロックレベル、インラインレベルというコメントはあるけれど、キャラクタレベルというのはないです.
 
海外では外字を使わないのかなあ?と思うのですが、ともかく日本の出版で外字というのは切っても切り離せません.ある技術文書の例ですが、外字をPDFではType1フォントを使って表し、HTMLではGIF画像を使って実現しています.さてこれをDITAにするときどうするかという話になりました.結局は外字を使い続けざるを得ませんでした.もし、Unicodeに似たグリフがあればまだなんとかなったのかもしれませんが、どうにもならない文字があるのです.例えば「電話のトーンマーク」なんて似たのはあるけど、これでバッチリというのはどうしてもUnicodeのグリフには見つかりませんでした.そこでDITAのDTDを特殊化を行って、外字を表す要素を作ることになりました.
 
例えばトーンマークは <specialChar name="tone.mark"/> などと表します.
 
DTDの特殊化という作業は実は私にとってはいやな作業です.スタイルシートの修正というような作業だったら年がら年中やっているので頭に入っていますが、特殊化はある決まった時期にだけ、それも短時間でやる作業です.前やったのはもう2年以上前で、恥ずかしながらすっかり「やり方」を忘れてしまいました.まえの仕事の特殊化したDTDを見たり、資料をあさったりしましたが、前回はEriot Kimberさんの書いたチュートリアルがあって、それを見てやったのを思い出してWEBをあたりましたがどうもURLが思い出せません.結局いろいろサーチして見つかったのがココでした.
 
 "DITA Configuration and Specialization Tutorials"
 http://xiruss.org/tutorials/dita-specialization/
 
HTMLだと見るのが手間なので、PDF
 
 
を落として見ましたが、なんと全体で100ページを超える"大作"です.それもそのはず、これはKimberさんが出版する予定の本の一部なのでした.
 
 
イメージ 1
 
思わずPDFをさっと見て見ましたが、この本「実践者のためのDITA」とあって、以前紹介したDITA101が「管理者、ライター」向けだったのと比べ、私のような実装者が読むのにうってつけの内容です.例えばDITAのスキーマとしてXML Schemaを取るかDTDを取るかの比較解説などDITA101ではお目にかかれません.また従来はDTDのみの特殊化の例でしたが、XML Schemaでの例もあります.
 
DITA for Practitioners will be available early in 2011.とありますが、まだamazon.comで探してもありません.出たらすぐ買おうと思います.
 
さて、肝心の特殊化ですが、チュートリアルを読んで思い出し何とかテストデータを作って通すところまで出来ました.あといくつかシェルをつくる作業が残っていますが大所は終わりました.
きっちり読んでいる訳ではないので、もしかしたらどこかに書いてあるのかもしれませんが、Kimberさんの特殊化のチュートリアルは、テスト用のシェルのDTDを本番用とは別フォルダに作ってテストデータをチェックするところで終わっています.でも実際にお客さんにDTDを使ってもらえるようにするには次のようなステップが必要です.(*印がチュートリアルには書いてない)
今回のように外字のための要素を追加するというのは、Element Domain Specializationに該当します.
 
1. ドメインの要素名/属性を設計する.(何から継承するやclass属性も決める)
2. これを記述するモジュールファイル.modファイルを作る.
3. モジュールエンティテイファイル.entを作る.
4. モジュールをシェルDTD(.dtd)に組み込んでテストする.
5*. .mod、.ent、.dtdに対して公開識別子を当てはめ、[DITA-OT]/catalog-dita_template.xmlを更新する.
6*. startcmd.batのシェルで ant -f integrator.xmlをたたいてDITA-OTに組み込む.
7*. オーサリング環境でもこのDTDが使えるようにオーサリングツールをカスタマイズする.
 
今回7.はCMSベンダーさんがやってくれるとのことなのですが、私もXMetaLのカスタマイズに挑戦しようかなと考えています.