Contents
概要
RELAX NG 入門 (原文RELAX NG Tutorial)
URL
http://www.oasis-open.org/committees/relax-ng/
https://sourceforge.net/projects/relaxng
定義
http://thaiopensource.com/relaxng/relaxng.rng
http://thaiopensource.com/relaxng/xhtml/
http://thaiopensource.com/relaxng/xslt.rng
Emacs
nxml-mode
nxml-modeであればrngの記述が可能です。
PSGMLでrngを記述する
からDTDを取得します。
.emacs
;; sgml-custom-dtdに以下追加 ("RelaxNG" "<!DOCTYPE rng PUBLIC \"-//RelaxNG//DTD RelaxNG 1.0//EN\" \"file:////Users/sakito/etc/psgml/relaxng.dtd\">\n") ;; これも追加 (setq auto-mode-alist (append (list (cons "\\.rng\\'" 'xml-mode)) auto-mode-alist))
CATALOG.txt
PUBLIC "-//RelaxNG//DTD RelaxNG 1.0//EN" "relaxng.dtd"
ECAT.txt
PUBLIC "-//RelaxNG//DTD RelaxNG 1.0//EN" cdtd/relaxng.dtd
利用方法
Tool
Jing
validator、妥当性検査ツールです。XMLの正確性をRelaxNGにしたがいチェックします。
XML文書を商用や通信、暗号化といった多様な用途に利用するには妥当性の検査は必須の物です。
妥当性が検査できなければその後の処理が不可能な場合もありえます。
このJingはRelaxNGの仕様策定の中心人物が作成しており、また完全に仕様に準拠しています。
ライセンスは旧BSDライセンス近似なため、商用利用の場合もあまり問題にならないでしょう。
ちなみにXMLSchemaにはまともなvalidatorが存在しない(おそらく実装不可能)という状態です。
java -jar jing.jar xxxx.rng hoge.xml
DTDinst
DTDからRELAX NGへ変換するツール。
java -jar dtdinst.jar DTD
Trang
RelaxNGからDTD、XMLSchema等へ変換するツール。
XMLSchema実装の中でもっとも仕様に忠実なXMLSchemaを吐きます。
java -jar trang.jar xxxx.rnc xxxx.xsd
Sun RELAX NG Converter
DTD、XMLSchema等からReluxNGに変換するJavaコマンドラインツール。変換は結構きれいです。
CyberNeko DTD Converter
http://www.apache.org/~andyc/neko/doc/dtd/
多用なSchema間で相互変換する。
XMLSchema、RelaxNGからDTDに変換も可能
http://crism.maden.org/consulting/pub/xsl/xsd2dtd.xsl
http://wwbota.free.fr/XSLT_models/XMLPublish/samples/self/items/XMLSchema2DTD.xslt.html