ツール
RELAX NGに対応しているツールは現時点でもかなりたくさんあります。
バリデータ
バリデータ(またはベリファイヤ)とは、RELAX NG文法とXML文書を受け取って、文書が正しくかかれているかをチェックする、一番基本的なツールです。
-
VBRELAXNG (英語)
-
-
Visual BASICで書かれたWindows用のバリデータです。
ホームページは英語でかかれていますが、プログラム自体には
日本語版もあります。米倉氏作。
-
Jing (英語)
-
-
Javaで書かれたバリデータです。作者のJames Clarkは業界では超有名人なのに加えて、この人はRELAX NGの仕様を制定している委員会の委員長でもあります。つまり、仕様を一番良く知っている人が作っているバリデータです。「Javaなんて良く分からないしただ検証したいだけなんですが」という場合には、
Windows用の実行ファイルだけダウンロードするとよいでしょう。
-
サン・マルチスキーマバリデータ (MSV) (英語)
-
Sun Microsystemsが作っているRELAX NGバリデータです(SunもRELAX NGの委員会に参加しています)。ホームページは英語ですが、プログラム自体は日本語に対応していて、エラーメッセージなどもちゃんと日本語で表示されます。実は私が実装しました。
データバインディング
RELAX NGスキーマから(主にJava)ソースコードを生成するツールです。生成したソースコードを使って、スキーマに従った文書を読み書きすることが出来ます。
-
Relaxer
-
Relaxerは、現時点ではRELAX NGを部分的にサポートしています。スキーマを加工しなくても利用できるのが特徴で、Javaソースコードを生成するほかにも様々な機能があります。浅海氏作。
-
RELAXNGCC
-
RELAXNGCCは、YACCやJAVACCに近いツールで、XML文書を読み込むのに使えます。生成するソースコードをかなり柔軟に変更できるのが特徴ですが、スキーマに情報を追加する必要があります。岡嶋氏作。
スキーマ記述関連
スキーマを書く時に便利なツールなどです。
-
RELAX NG 短縮記法 (英語)
-
RELAX Coreにあったoccurs属性や、XML SchemaのminOccurs/maxOccurs属性などを取り入れた拡張文法を提案しています。この拡張文法から通常のRELAX NG文法に変換するためのツールもあります。これを使うと、RELAX NG文法を短く簡潔に書けるようになります。拙作。
-
RELAX NG オブジェクト指向拡張文法 (英語)
-
XML Schemaに見られる、型や継承の概念を使った文法を提案しています。この拡張文法から通常のRELAX NG文法に変換するためのツールもあります。これとRELAXNGCCやRelaxerを組み合わせて面白いことができそうです。村田氏作。
-
RELAX NG 非XML文法 (英語)
-
「簡潔に書く」という目標を追求した結果、遂にXML文法を捨ててしまった記法です。この記法から通常のRELAX NG文法に変換するためのツールも提供されています。新しい文法を覚えないといけませんが、大変短く書けます。James Clark氏作。
-
くつろぐための構文
-
RELAX NG構文のキーワードを日本語に置き換えた文法です。「英語のキーワードを覚えるのがちょっと」という人には大変お薦めできます。村田氏作。
スキーマ変換
今手元にあるRELAX NG以外の形式で書かれたスキーマを、RELAX NG形式に変換するためのツール群です。既にスキーマを持っている人向けです。
-
DTDinst (英語)
-
DTDからRELAX NGへ変換するツールです。DTD→RELAX NGはこれが今のところ唯一かつ最強のツールでしょう。大変見事な変換をします。James Clark作。
-
RELAX Core → RELAX NG (英語)
-
RELAX CoreからRELAX NGへと変換するXSLTスタイルシートです。単なるスタイルシートなので、動かすにはちょっとした知識が必要かもしれませんが、
RELAXユーザーML
で「使い方がわからない」と言えば、誰か教えてくれると思います。James Clark作。
実験プロジェクト
まだツールの形にはなっていませんが、将来が期待できる「種」たちです。興味を持ったら、ぜひ
RELAXユーザーML
で発言してみてください。
-
日本語RELAX NG文法プロジェクト
-
スキーマ自体を全部日本語で書いてしまおうというプロジェクトです。XMLで書くことにこだわるか、いっそXMLを捨てて自然言語に近い形で書くようにするか、主に2つの路線があります。ここやここやここを参照してみてください。