DITA-OT 4.3で追加された`init`サブコマンドに独自テンプレートを追加する
2025-03-16 一部事実関係修正
DITA Open Toolkit(DITA-OT) 4.3が2025年2月15日にリリースされました。
DITA-OT Day 2025が2月16日に開催されるという日程だったので[1]、そこで新規機能として紹介されているはずです。とはいえは22日現在はイベントのアーカイブなりスライドなりは公開されていません。
今回はvalidate
サブコマンドとinit
サブコマンド(プレビュー版)が追加されています。
validate
は対象ファイルのスキーマバリデーションと参照類のチェックを行うために用意されたもので、preprocess処理のdry-runのような働きをします。出力処理において不正な状態のファイルがスキップされて処理され、それなりに長い時間をかけて徒労というシーンはありがちであるので助かる人がいるはずです。
init
はテンプレートを提供する機能です。ドキュメンテーションツールのSphinxを使ったことがある人はsphinx-quickstart
を思い浮かべてください。DITAは単独ファイルで文書を作ることは殆どなく、またルートマップの位置の制限など本質的でない嵌りポイントもあるため、デフォルトで提供されるグッドプラクティスはとくにビギナーに資するものでしょう。
まあ企業ユーザは大抵独自CCMS内でDITAファイルを作るので関係無いんですが。
usage
dita init <template名>
で、指定したテンプレートが現在のパスに展開されます。
dita init <template名>
dita init --list
で現在利用可能なテンプレート一覧が表示されます。初期ではDITA-OTにバンドルされているsamples、startupの2つです。構成はOxygenXMLが提唱しているテンプレートに近いですが、theme
機能用のファイルが追加されていたりします。
$ dita init --list
samples DITA garage samples and Ant build scripts
startup Startup template
さて、init
ですが、ユーザ独自のテンプレートも追加できます。
plugin.xml
独自テンプレートを作成する場合も、出力プラグインや特殊化スキーマ追加プラグイン同様、DITA-OTプラグインとして実装します。
DITA-OTにバンドルされたorg.dita.initプラグインを見てみましょう。
<plugin id="org.dita.init" version="1.0.0">
<feature extension="init.template" file="samples/" desc="DITA garage samples and Ant build scripts"/>
<feature extension="init.template" file="startup/" desc="Startup template"/>
</plugin>
<feature>
に@extension="init.template"
が今回追加されています。@file
にコピーするファイル内容のパス(相対)が、@desc
にそのテンプレートの説明が記述されています。
これに倣って、plugin.xmlを書いてみます。
<plugin id="org.dddoooccc.templates">
<feature extension="init.template" file="mytemplate/" desc="my template"/>
</plugin>
mytemplate
の部分がテンプレート名として認識されます(その内変更されそうな気もする)。
フォルダ
init
機能自体は指定されたフォルダ内容をコピーするだけなので、テンプレートとしてコピーさせるファイル内容についてはかなり自由です。
典型的な内容としてはDITAファイルの他、html出力用の固定ヘッダやフッタ・追加CSSなどでしょうか。
ポイントというより懸念として、DITA-OTはWindowsやLinux間でのパス周りでの修正が度々あるので、パス名に関係する部分は安全側に倒しておくことをお薦めします。つまり
- ASCII範囲
- 空白を含まない(WindowsでOKだがソフト側がガバいことがある)
有効化
上のplugin.xmlとテンプレートのディレクトリを格納したorg.dddooccc.templatesディレクトリを<dita-ot>/plugins
下に配置してdita install
を叩きます。
$ dita install
Added org.dddoooccc.templates
$ dita init --list
samples DITA garage samples and Ant build scripts
mytemplate my template
startup Startup template
独自テンプレートが選択できるようになりました。
Discussion