DITA 1.3とRELAX NG

DITA 1.3は2015年の第1四半期を目標に開発が進められているようです.先だってDITA 1.3の概要を紹介するWebinarが開催されましたが、そのプレゼンテーションが以下で紹介されています.

Recording of DITA 1.3 Webinar now available

この紹介の最後の方にありますが、RELAX NGがDITAのスキーマ言語として採用されるとのことが述べられています.

今まで多くの方はDITAの検証や特殊化はDTDで行ってきたのではないかと思います.今の時代でも様々な制約によりDTDが主流だったのです.しかしどうも今後は違った方向に進んでゆく様に見えます.

例えば


RELAX NGを採用するEliot Kimberさんの提案が載っていますが、そこには次のように述べられています.

The requirement is to use RELAX NG as a recognized and codified schema language for DITA vocabulary and constraint definitions. As a schema syntax, RELAX NG offers a number of significant advantages over both DTD and XSD that are ideally suited to DITA's modular vocabulary architecture.

An additional requirement is to use RELAX NG as the master form for all vocabulary definitions from which all other schema formats can be generated, reducing the effort required to maintain multiple forms of DITA modules and document type shells.

つまりDTDXML Schemaに続く第3のスキーマの追加とするのではなく、RELAX NGを中心に据えて他のスキーマはそこから自動的に生成すると位置づけるものです.これは大きな変更です.しかしすでにかのDocBookもRELAX NGを第一のスキーマとしていますので、世の中はそのような流れなのでしょう.

ちなみに、DITA 1.3のスキーマは、

OASIS Darwin Information Typing Architecture (DITA) TC Public Documents

で公開されています.以下はここにあるRELAX NGスキーマととテストデータでDITAのインスタンスを検証してみた例です.

[task.rng]
イメージ 1


[検証例]
イメージ 2


RELAX NGでの検証はJingで行われているのがわかります.

DTDで特殊化というのは結構大変でしたが、今後は特殊化もRELAX NGで行い、もしお客様がDTDを引き続き使用するならRELAX NGから変換してDTDを生成して使用するということになるのかもしれません.