/
171.txt
99 lines (72 loc) · 5 KB
/
171.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
[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]] に基づかない構文が後から出てきました。
* 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]] 利用者には無関係、
と利用者像がまったく見えてきませんでした。
* 歴史
[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>