昨年仕事で作成したDITA Open Toolkit用のplug-inを納品したのですが、これとDITA Open ToolkitををCMSに組み込むためお客様のところにはるばるヨーロッパからCMSのベンダーの方がやってきました.私の方は組み込みのための作業についてレクチャーをしていただくということで東京に出張となりました.
組み込みの主な点ですが、やはりDTDのカスタマイズが焦点になるようです.plug-in本体には特別なカスタマイズは行なわないようでした.
何故DTDのカスタマイズが必要になるのでしょう?
まずCMSとは関係なく、お客様の扱っている文書の構造が標準のDITAだけでは表現できず、特殊化(Specialization)が必要となります.まずここで新規のカスタマイズされたDTDが追加されます.
またCMSが文書の管理上必要な属性を加えるという必要性があります.
そして、次のようなシステム要件が加わります.
CMS環境ではこの両方をサポートする必要があります.
更にDITA Open ToolkitではXercesでのパージングにOASISのカタログファイルを使用します.ところが御存知のように、MSXML4, 6ではカタログファイルの機構は利用できません.ですからDTDもカタログファイルを使用して動くだけでなく、カタログファイルなしでも動くようにコーディングしなければなりません.
例えば、カタログファイルを使えば
<!ENTITY % indexing-d-dec PUBLIC
"-//OASIS//ENTITIES DITA 1.2 Indexing Domain//EN"
"indexingDomain.ent">
"-//OASIS//ENTITIES DITA 1.2 Indexing Domain//EN"
"indexingDomain.ent">
と書いても実際のURIは公開識別子からマッピングされるので"indexingDomain.ent"はいわばどう書いても良いのですが、MSXMLだとそうはいきません.ちゃんと実際のindexingDomain.entを参照するようにフォルダ構造が書かれていなければなりません.
<!ENTITY % indexing-d-dec PUBLIC
"-//OASIS//ENTITIES DITA 1.2 Indexing Domain//EN"
"../../base/dtd/indexingDomain.ent">
"-//OASIS//ENTITIES DITA 1.2 Indexing Domain//EN"
"../../base/dtd/indexingDomain.ent">
また、xml:spaceの記述も違いがあるようです.DITA Open Toolkitでは、
と書いて通りますが、両方のパーサーで通すためには
と書かないと通らないとのこと.などなど.