DITA 1.3とRELAX NG(2)

DITA 1.3からのRELAX NGのサポートということで、少し気が付いたことがあるので書いてみたいと思います.それはいわゆるMicrosoftアーキテクチャを使用しているXMLエディタやCMSのことです.(私の独断と偏見と、下手をすると「妄想」も入っているかもしれませんので、その点ご了解ください.)

本当のところ、お客様にしてみれば自分たちのコンテンツがちゃんと作れれば良いので、スキーマが何かということはあまり気にされるというか製品選択の基準として重要視されないのかもしれません.

しかし、特殊化を行ったりしてスキーマをメンテナンスする立場からしてみますと、もうDTDはいくらなんでも古くて機能不足だし、しかしXML Schemaは少し難しくて!という感じがあります.ですのRELAX NGというのは意外に良いのでは?と思えます.

でもMicrosoftRELAX NGをサポートしてくれていないのです.

Relax-ng schema support - by Lionel Fourquaux 状態 : 解決済み   解決策: 修正しない

MicrosoftXML Shcemaをスキーマ言語として採用すると決めてしまっていて、その方針はもはや変更されないのでしょう.つまりMicrosoftアーキテクチャに依存しているXMLエディタではRELAX NGは使えないでしょう.

ではそのXML Schemaはどうなのか?と言いますと、XML Schema 1.1が出たのは2012年4月ですが、MSXMLも.netのパーサーもこれをインプリメントしたという話はいまだに聞こえてきません.あるのはユーザーからの要望ばかりです.

ですのでXSD1.1で強化されたassertionの機能などを使うことはできません.

あと非常に困るのではないか?という点にMSXMLはカタログファイルをまったくサポートしていない点があります..netのパーサーは開発者がコードを書きさえすればですが、カタログファイルを使えるように出来ることはできます.

そもそもカタログファイルはOASISが提唱したものなので、Microsoftは取り上げなかったのでしょうか?

しかしカタログファイルサポートされているかいないかは作業する側からすると非常に重要です.例えばお客様ごとに特殊化が異なるのはあたりまえです.開発側でテストデータを作るときはお客様毎にスキーマを切り替えねばなりません.

oXygen XML Authorではオプションでプロジェクトごとにカタログファイルを設定できます.やればよいのはこれだけで、あとはすべてそのカタログファイルに沿ったお客様のスキーマの世界でオーサリングができます.しかし、カタログファイルをサポートしないMSXMLを使っているXMetaLは、特殊化したDTDごとにすべてをXMetaLに登録してやらねばならず非常に煩雑です.*1

また、以前書きましたが、DITA-OT 2.0からは、OASIS標準のDTDXML Schemaすらもルートフォルダ([DITA-OT]/dtd,scham)から姿を消します.できるのは、[DITA-OT]/plugins/org.oasis-open.dita.v1_2フォルダです.つまりDTDスキーマプラグインになります.このようなフォルダ構成になってしまうと、もやはカタログファイルが必須になります.これらは、[DITA-OT]/catalog-dita.xmlから、

  <nextCatalog xml:base="plugins/org.oasis-open.dita.v1_2/dtd/" catalog="catalog.xml"/>
  <nextCatalog xml:base="plugins/org.oasis-open.dita.v1_2/schema/" catalog="catalog.xml"/>

で参照されてオシマイだからです.

もし特殊化したDTDプラグインを作ろうにも、カタログファイルが使えなければ、本家のフォルダ位置を特定するのが困難になります.つまりカタログファイルをサポートしないMicrosoftアーキテクチャXMLエディタやCMSは特殊化したDTDXML Schemaを格納する術がなくなってしまうからです.自分たち独自でDITA 1.3のDTDXML Schemaの世界をつくる必要があります.

というわけでDITA 1.3というのは、DITAそのものの仕様のみならず、それをとりまく様々な製品にも影響があるのではないかと思われてしかたがありません.

*1: XMetaLでもこのように単独で使うのではなく、CMSとのコネクタを持っているような場合は、コネクタの機能でユーザーがこのような作業をしないで済みます.