DITA-OTのリビルド

DITA-OTをリビルドするのはまだ開発がsourceforgeで行われていた頃一回やったことがありましたが、GitHubに移ってからはやったことがありませんでした.今回お客様からの要望を実現するためにDITA-OTをリビルドする機会がありましたので紹介します.と言っても私はGitHubは素人ですし、DITA-OTの内部も詳しいわけではありません.どこかに間違いもあるかもしれませんのでご了解ください.

1.DITA-OTをGitHubからクローンします.

私はGitHub for Windowsをインストールしてあります.ですのでデスクトップからすぐGit Shellを開くことができます.そこでDITA-OTをローカルリポジトリにクローンして、今回の目的のDITA-OTのバージョンの1.7.5をチェックアウトします.DITA-OTのstableは1.8.4で開発バージョンはもう2.0ですが、お客様の使っているバージョンは1.7.5なのでそれにあわせます.入力したコマンドは以下のようなものです.

イメージ 1

2.ローカルリポジトリからdita-otフォルダを別フォルダにコピーして、目的のJavaのコードを修正します.

今回の修正は、PDFを作る途中で出来るマージ後中間ファイルにconkeyref属性を出力することです.通常conkeyref属性は対象のコンテンツに置換されます.最終的なpublicationを作る際にはこの属性が残っている必要はまったくないのですが、オーサリングをレビューしたりする際にはこの属性値に何を指定してオーサリングをしたのか確認するのにとても必要になります.修正したのは、dita-ot/src/main/java/org/dita/dost/writer/DitaWriter.javaです.追加したのは次の4ステップです.

    String conkeyref = atts.getValue(ATTRIBUTE_NAME_CONKEYREF);
    if(conkeyref != null && conkeyrefValid){
        XMLUtils.addOrSetAttribute(res, "conkeyref_org", conkeyref);
    }

イメージ 3


本当はconkeyref属性で残せばよかったのですが、DITA-OTが後でこの属性をどのように使っているかつかみきれていなかったので、無害な"conkeyref_org"という属性にしました.

3.dost.jarをビルドします.

JAVA_HOMEをJDK7に、ANT_HOMEをDITA-OTのlib/antフォルダに設定します.dita-ot/build.xmlを指定してantを起動しdost.jarをビルドします.

イメージ 2


4.conkeyref_orgが残っているかdost.jarを置き換えて試してみます.

ビルドしたdost.jarを[DITA-OT1.7.5]/lib/dost.jarと置き換えてサンプルデータをビルドしてみます.中間ファイルとしてconkeyrefをやっている箇所では例えば次のような出力を確認できました.

<keyword class="- topic/keyword "
        conkeyref_org="MODEL_NUMBER/TOUCH_SCREEN_MODEL"
        xtrf="D:\My_Documents\XML2014\Acme\ja-JP\workset\model_conkeyref_resource.xml"
        xtrc="keyword:17;70:82">
  <text class="- topic/text "
        xtrf="D:\My_Documents\XML2014\Acme\ja-JP\workset\model_conkeyref_resource.xml"
        xtrc="text:28;70:144">QRJ-C2460D</text>
</keyword>

ちゃんとconkeyref_org属性が出力されて、元のconkeyrefの指定値を確認できました.

GitHubリポジトリでは、DITA-OTの各々のバージョンがタグがつけられています.これはgit tagコマンドで確認できます.

イメージ 4

お客様は必ずしも最新のバージョンを使っている訳ではありません.しかしタグ付けされているおかげで、それを指定してチェックアウトさえすればお客様の使っている目的のバージョンのDITA-OTを手に入れることができます.DITA-OTのリビルドというのは、そう機会がある訳ではありませんが、GitHubのおかげで簡単に目的のバージョンを手に入れられます.もしDITA-OTを改造できたらな?というような場合があったら、リビルドの方法は知っておいても決して損はないでしょう.