[5] [DFN[[[RELAX NG]]]] は、 [[XML]] の[[スキーマ言語]]の1つです。
[[00年代]] ([[平成時代]]中期) にはしばしば [[XML]] と共に使われていました。

[11] [[XML]] の衰退により、目にすることもなくなりました。

* 仕様書

[REFS[
- [3] [CITE[RELAX NG Specification]] ([TIME[2007-11-03 05:45:29 +09:00]] 版) <http://www.oasis-open.org/committees/relax-ng/spec.html>
- [1] [CITE[RELAX NG DTD Compatibility]] ([TIME[2003-03-01 02:43:22 +09:00]] 版) <http://relaxng.org/compatibility-20011203.html>
- [2] [CITE[Guidelines for using W3C XML Schema Datatypes with RELAX NG]] ([TIME[2007-11-03 05:45:24 +09:00]] 版) <http://www.oasis-open.org/committees/relax-ng/xsd.html>
]REFS]

* 構文

[10] 本来の [[XML]] 構文と、[[式言語]]のような構文を持つ
[[RELAX NG Compact Syntax]] がありました。

[22] [[XML DTD]] (や [[SGML DTD]]) の独自構文を嫌った人達が
[[XML Schema]] や [[RELAX]] のような [[XML]]
ベースの[[スキーマ言語]]を作り始めた、ということだった気がしますが、
実際使ってみて面倒すぎることに気づいたのでしょう、
[[XML]] に基づかない構文が後から出てきました。


-*-*-


[29] 
簡潔構文のこの読みにくさというか頭に入って来にくさって何なんでしょうね?

[30] [[DTD]] とそんなに変わらないはずなのに [[DTD]] の可読性に対して
RNG はなんで読めないのか。構文が簡単すぎるのかなあ。

[31] 
RNG の方が書きやすいってのはわかるんだけど。[[プログラミング言語]]ぽい構文で技術者が嬉しそうなのもわかる。

[32] 
でもすっと頭に入ってこなくて謎プログラムの羅列にしか見えないんだよなあ。


[33] 
[[インデント]]とかの可読性のための慣習が形成されなかったせい、ということかもなあ?
[[DTD]] も[[インデント]]なしでベタ書きされると読めなそう。


* DTD 互換性

[19] 「DTD Compatibility」は、 [[XML DTD]] にあって [[RELAX NG]]
に存在しない機能を補うもので、これによって [[XML DTD]]
から [[RELAX NG]] への移行を促進するものであるとされていました。

[20] しかし [[RELAX NG]] の支持者は元々 [[XML Schema]] の [[PSVI]]
を批判し、 [[XML DTD]] や [[XML Schema]] のような[[妥当性検証]]と
[[XML情報集合]]の変更操作が一体となった[[スキーマ言語]]を批判していたはずです。
追加機能としてとはいえそれを再導入したことに、
果たしてどれだけの意味があったのか。
[[XML DTD]] との互換性のためと目的を設定したため、
[[XML情報集合]]の変更の記述能力は [[XML Schema]] (や [[XSLT]] その他の手段)
に比べると著しく劣りますし、
[[XML情報集合]]の変更操作の適用の有無とタイミングを自由に選べることが特徴とされていますが、
裏を返せば[[相互運用性]]が保証されないということです。
そうであるなら、
操作のタイミングと結果が明確である [[XML DTD]] を使えば十分で、
[[RELAX NG]] に移行するべき動機などありません。

[21] 
本機能が結局どの程度使われたのかは不明ではありますが、
[[RELAX NG]] 支持者には不要、
[[XML Schema]] 支持者には不十分、
[[XML DTD]] で満足していた人には魅力なし、
そもそも[[スキーマ]]なんて使っていない大半の [[XML]] 利用者には無関係、
と利用者像がまったく見えてきませんでした。

*関連

[28] [[RDDL]]

* 歴史

[13] [[RELAX]] と [[TREX]] が統合される形で開発されました。

[14] [[OASIS]] で[[標準化]]されました。

[15] [[ISO/IEC]] に提出されて[[国際標準]] [DFN[ISO/IEC 19757-2]] となりました。
[[DSDL]] の1プロジェクトと扱われていました。

-*-*-

[4] [[XML]] の[[スキーマ言語]]には他に [[XML DTD]] や [[XML Schema]]
があります。 [[XML Schema]] と [[RELAX NG]] の開発時にはどちらが優れているかなど
[[XML]] コミュニティーでは大きな議論になりました。

[6] [[Web]] では00年代初期に [[W3C]] 近辺で [[XHTML]] などの[[語彙]]の制約を
[[RELAX NG]] で記述することが流行しました。しかしその後の仕様をより厳密に記述する流れの中で
[[RELAX NG]] を含む[[スキーマ言語]]では不十分であることが明確になり、
仕様の記述には使われなくなっています。

;; [9] 旧 [[HTML WG]] の [[XHTML m12n]] や、 [[SVG Tiny 1.2]] などが
[[RELAX NG]] を使っていました。

[16] [[XML]] コミュニティーでは [[XML Schema]] と [[RELAX NG]] 
の両方が使われ続けました。[[マーク付け言語]]を定義する際には、
一方が用いられることもあれば、両方が用いられることもありました。
(両者の[[スキーマ]]が表現できる内容は等しくないので、
厳密には両方を用いると解釈の問題が発生しますが...)

[17] しかし結局 [[XML]] の衰退により、両者のどちらもが「[[スキーマ戦争]]」
に勝利することなく世の中から忘れ去られることになりました。



[7] [DFN[[[RNG]]]] は、 [[RELAX NG]] の略です。

[8] RELAX NG は [[ISO/IEC]] 標準だから [[XML Schema]] 
より偉いのだー!! とか言ってるアフォはとっとと氏んで欲しいよね。


[12] [CITE[RELAX NG home page]]
([TIME[2014-02-25 10:10:57 +09:00]])
<http://www.relaxng.org/>

[18] [CITE[RELAX NG DTD Compatibility]]
([TIME[2018-06-19 21:46:04 +09:00]])
<https://www.oasis-open.org/committees/relax-ng/compatibility-20011203.html>


-[23] [CITE@en-US[The Cafes » RELAX Wins]], [TIME[2022-07-30T03:36:47.000Z]], [TIME[2022-07-30T03:38:40.969Z]] <http://cafe.elharo.com/xml/relax-wins/>
-[24] [CITE@en[ongoing by Tim Bray · Choose RELAX Now]], [TIME[2006-11-29T07:13:45.000Z]], [TIME[2022-07-30T03:38:53.579Z]] <http://www.tbray.org/ongoing/When/200x/2006/11/27/Choose-Relax>
-[25] 
[CITE@ja[やはり書いておこう。:「新しい」こと探し:[[オルタナティブ・ブログ]]]], 
[[宮下尚]],
2006/12/02 18:26:39,
[TIME[2022-07-30T03:39:15.000Z]] <https://blogs.itmedia.co.jp/himi/2006/12/post_f790.html>


[26] 
[[RELAX NG]] 陣営が勝利宣言 [SRC[>>23, >>24]] して界隈で[[炎上]] [SRC[>>25]]。

[27] 
この事件が[TIME[西暦2006年][2006]]。
この人達が[[貴族だボヘミアンだとわけのわからない論争][ボヘミアンと貴族の階級闘争]]を続けている裏で、
一般人はじわじわ [[XML]] 離れをはじめていて、
[[JSON]]
の存在感が高まってきていた頃だな。





