* SGML 系のスキーマ言語

[25] 元来 [[SGML]] では[[スキーマ言語]]である [[DTD]] は必須の存在で、
[[SGML文書実現値]]の[[構文解析]]には [[DTD]] の情報が利用されることになっていました。
時代が下るに連れ[[構文解析]]と[[妥当性検証]]は分離するべきと考えられるようになり、
[[XML]] では色々な[[スキーマ言語]]が提案されました。

[FIG(short list)[ [21] [[SGML]] 用[[スキーマ言語]]
- [2] [[SGML DTD]] 
]FIG]

[FIG(short list)[ [22] [[XML]] 用[[スキーマ言語]]
- [3] [[XML DTD]]
- [4] [[XML Schema]]
- [5] [[RELAX NG]]
- [6] [[TREX]] 
- [7] [[RELAX]] 
- [8] [[Schematron]]
- [[NRL]]
- [[NVDL]]
- [[RDDL]]
- [[DOM3 AS]]
]FIG]

[23] 
[[XML語彙仕様記述形式]]も参照。


[1]
[CITE[Family Tree of Schema Languages for XML: now takes A3 page! - O'Reilly XML Blog]] ([[Rick Jelliffe]] 著, [TIME[2007-04-12 22:20:42 +09:00]] 版) <http://www.oreillynet.com/xml/blog/2007/04/family_tree_of_schema_language_2.html>
([[名無しさん]] [WEAK[2007-04-12 13:22:23 +00:00]])

[11] 結局、 XML schema 論争は (直接的に) 非互換な3つの schema: [[DTD]], [[XMLSchema]], [[RELAXNG]] を全部必要としてしまったわけですが。 (Schema がどれで提供されているかは仕様によりそれぞれだから、実際に使うにはどれの知識も必要。)

[12] >>11 しかも他に [[RDFSchema]] なんかもあるし。

[13] >>12 もっとも、 RDF Schema はメタ・データ系マーク付け言語にしか使えないし、スキーマとしての機能みたいなのも他のとは全然違うけどね。

[14] でも正直、標準の XML schema に、追加のモジュールで RDF Schema 的メタ・データ・スキーマ機能とか [[HLink]] 的[[ハイパーリンク]]・スキーマ機能とかを統合できる形式にして欲しかった気が。 (そんなことしてたら永遠に標準化できないかもだけど・・・。)

[15] >>14 ついでに既定スタイル・シートも統合・・・はやりすぎか? でもそうすれば、マーク付け言語の定義を全部一つの文書にまとめれるような。

-*-*-

[FIG(short list)[ [29] [[内容モデル]]の記述と理論

- [[内容モデル (SGML)]]
- [[内容モデル (XML)]]
- [[内容モデル (HTML)]]
- [[木オートマトン]]
- [[木正規表現]]
- [[生け垣オートマトン]]

]FIG]

[30] 関連: [[パターン記述]]



* RDF 用スキーマ言語

[FIG(short list)[ [24] [[RDF]] 用の[[スキーマ言語]]
- [9] [[RDF Schema]]
- [[SHACL]]
]FIG]

* RDB 用スキーマ言語

[FIG(short list)[
- [[SQL]]
]FIG]

* JSON 用スキーマ言語

[FIG(short list)[ [19] [[JSON]] 用の[[スキーマ言語]]
- [[JSON Schema]]
- [[JSON Content Rules]]
- [[JSON Table Schema]]
- [[CDDL]] ([[CBOR]], [[JSON]] 用)
- [[Orderly]]
- [[JSON Hyper-Schema]]
]FIG]

* CSV 用スキーマ言語

[FIG(short list)[
- [[CSV Schema]]
- [[Model for Tabular Data and Metadata on the Web]]
]FIG]

* その他

[FIG(short list)[ [20] その他の[[スキーマ言語]]
- [[EBML DTD]] ([[EBML]] 用)
- [[Table Schema]] ([[表]]形式データ用)
- [[ECS][Elastic Common Schema]]
- [[SML Schema]]


]FIG]

* スキーマ言語と言語仕様

[16] 多くの場合、[[マーク付け言語]]の[[スキーマ言語]]は、対象となる[[言語]]を完全に記述する十分な能力は持っていません。
にも関わらず、[[スキーマ]]を記述したことで[[言語]]を規定したつもりになってしまう、
という意味で[[スキーマ]]は危険な存在です。

[EG[
[17] [[HTML4]] 時代、 [[DTD]] に[[適合]]することのみをもって[[文書]]の[[適合性]]を検査する杜撰な実装 (例: [[W3C Validator]]) が横行していた反省から、
[[HTML5]] は [[DTD]] を[[廃止]]しました。
]EG]

[EG[
[18] [[XML]] ベースの[[マーク付け言語]]の中には、[[XML Schema]]
の[[スキーマ]]しかないものがいくつもあります。
利用する[[属性]]の組み合わせや[[要素]]の入れ子関係などの複雑な制約、
[[属性値]]の詳細などが規定されていなかったり、
値の意味・解釈方法やエラー処理などがどこにも説明されていなかったりするのも珍しくありません。
]EG]

* 関連

[28] [[パターン記述]],
[[形式的記述]]も参照。

* メモ

[1]  
:スキーマ:
[DFN[[RUBYB[スキーマ]@en[schema]]]]は、
[[XML]] [[文書]]に適応可能な構造的な制約および値の制約の[[集合]]を定義する。
[[スキーマ]]は [[DTD]]、[[XML Schema]]
などの[[スキーマ言語]]により表現できる。

;; <IW:DOM3:"Val/glossary.html#dt-schema">

[10] [CITE@en-US[Internationalization Tag Set (ITS) Version 1.0]]
( ([TIME[2007-04-03 09:11:18 +09:00]] 版))
<http://www.w3.org/TR/its/#def-schemalanguage>


[26] [CITE@ja[doc7.pdf]], [TIME[2014-07-09T01:31:18.000Z]], [TIME[2024-04-05T15:31:57.463Z]] <http://ccs.tsurumi-u.ac.jp/docu/poster/doc/doc7.pdf#page=6>

>
[LEFT[
[SNIP[]]例えば,ファイルの中にどのようなデータ単位が存在するの[BR[]]
かが既に分かっているのであれば,その情報を用意しておけば,コンピュータは素早く正確に処理することができ[BR[]]
ます.このような「存在するデータ単位の情報」が書かれているデータのことを「スキーム (Scheme)」といいます.[BR[]]
DB として XML を使う場合には,スキームデータを用意する必要があります(ちなみに,DB 系の人達はスキームの[BR[]]
ことを「スキーマ(Schema)」ともよびます).
]LEFT]

[27] 
えっそうだったの・・・ スキームのことスキーマって読み間違えてる日本人以外みたことないけど専門分野によってはschemaのことをschemeっていってた時代あるの?

