#pragma section-numbers off
[[TableOfContents]]

= 概要 =

[http://relaxng.sourceforge.net/japan/ RELAX NG 日本語ポータル]

[http://www.oasis-open.org/committees/relax-ng/spec-20011203.html RELAX NG Specification(英語)]

[http://www.kohsuke.org/relaxng/tutorial.ja.html RELAX NG 入門]
(原文[http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html 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を記述する ==
[http://www.snee.com/xml/relaxng/ relaxng.dtd]

から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 ==
[http://www.thaiopensource.com/relaxng/jing.html Jing]

validator、妥当性検査ツールです。XMLの正確性をRelaxNGにしたがいチェックします。

XML文書を商用や通信、暗号化といった多様な用途に利用するには妥当性の検査は必須の物です。

妥当性が検査できなければその後の処理が不可能な場合もありえます。

このJingはRelaxNGの仕様策定の中心人物が作成しており、また完全に仕様に準拠しています。

ライセンスは旧BSDライセンス近似なため、商用利用の場合もあまり問題にならないでしょう。
RELAX NG
ちなみに["XMLSchema"]にはまともなvalidatorが存在しない(おそらく実装不可能)という状態です。

{{{
java -jar jing.jar xxxx.rng hoge.xml
}}}

== DTDinst ==
[http://www.thaiopensource.com/relaxng/dtdinst/ DTDinst]

DTDからDTDinst Fomartへ変換するツール。

{{{
java -jar dtdinst.jar DTD
}}}

RELAX NGにはスタイルシート利用して変換可能。

== Trang ==
[http://www.thaiopensource.com/relaxng/trang.html Trang]

RelaxNGからDTD、["XMLSchema"]等へ変換するツール。

["XMLSchema"]実装の中でもっとも仕様に忠実な["XMLSchema"]を吐きます。

{{{
java -jar trang.jar xxxx.rnc xxxx.xsd
}}}

== Sun RELAX NG Converter ==
[http://wwws.sun.com/software/xml/developers/relaxngconverter/ 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

= 参考サイト =
[http://www.atmarkit.co.jp/news/200111/09/xml.html W3Cスキーマに対抗するXMLの新仕様「RELAX NG」]

[http://www3.sppd.ne.jp/lena/relax-ng/index.htm RELAX NG 私的解説メモ]


----
CategoryXml