RELAX NG

RELAX NG (XML)

[5] RELAX NG は、 XMLスキーマ言語の1つです。 00年代にはしばしば XML と共に使われていました。

[11] XML の衰退により、目にすることもなくなりました。

仕様書

構文

[10] 本来の XML 構文と、式言語のような構文を持つ RELAX NG Compact Syntax がありました。

[22] XML DTD (や SGML DTD) の独自構文を嫌った人達が XML SchemaRELAX のような XML ベースのスキーマ言語を作り始めた、ということだった気がしますが、 実際使ってみて面倒すぎることに気づいたのでしょう、 XML に基づかない構文が後から出てきました。

DTD 互換性

[19] 「DTD Compatibility」は、 XML DTD にあって RELAX NG に存在しない機能を補うもので、これによって XML DTD から RELAX NG への移行を促進するものであるとされていました。

[20] しかし RELAX NG の支持者は元々 XML SchemaPSVI を批判し、 XML DTDXML Schema のような妥当性検証XML情報集合の変更操作が一体となったスキーマ言語を批判していたはずです。 追加機能としてとはいえそれを再導入したことに、 果たしてどれだけの意味があったのか。 XML DTD との互換性のためと目的を設定したため、 XML情報集合の変更の記述能力は XML Schema (や XSLT その他の手段) に比べると著しく劣りますし、 XML情報集合の変更操作の適用の有無とタイミングを自由に選べることが特徴とされていますが、 裏を返せば相互運用性が保証されないということです。 そうであるなら、 操作のタイミングと結果が明確である XML DTD を使えば十分で、 RELAX NG に移行するべき動機などありません。

[21] 本機能が結局どの程度使われたのかは不明ではありますが、 RELAX NG 支持者には不要、 XML Schema 支持者には不十分、 XML DTD で満足していた人には魅力なし、 そもそもスキーマなんて使っていない大半の XML 利用者には無関係、 と利用者像がまったく見えてきませんでした。

歴史

[13] RELAXTREX が統合される形で開発されました。

[14] OASIS標準化されました。

[15] ISO/IEC に提出されて国際標準 ISO/IEC 19757-2 となりました。


[4] XMLスキーマ言語には他に XML DTDXML Schema があります。 XML SchemaRELAX NG の開発時にはどちらが優れているかなど XML コミュニティーでは大きな議論になりました。

[6] Web では00年代初期に W3C 近辺で XHTML などの語彙の制約を RELAX NG で記述することが流行しました。しかしその後の仕様をより厳密に記述する流れの中で RELAX NG を含むスキーマ言語では不十分であることが明確になり、 仕様の記述には使われなくなっています。

[9]HTML WGXHTML m12n や、 SVG Tiny 1.2 などが RELAX NG を使っていました。

[16] XML コミュニティーでは XML SchemaRELAX NG の両方が使われ続けました。マーク付け言語を定義する際には、 一方が用いられることもあれば、両方が用いられることもありました。 (両者のスキーマが表現できる内容は等しくないので、 厳密には両方を用いると解釈の問題が発生しますが...)

[17] しかし結局 XML の衰退により、両者のどちらもが「スキーマ戦争」 に勝利することなく世の中から忘れ去られることになりました。

[7] RNG は、 RELAX NG の略です。

[8] RELAX NG は ISO/IEC 標準だから XML Schema より偉いのだー!! とか言ってるアフォはとっとと氏んで欲しいよね。

[12] RELAX NG home page () <http://www.relaxng.org/>

[18] RELAX NG DTD Compatibility () <https://www.oasis-open.org/committees/relax-ng/compatibility-20011203.html>