
[2] [ABBR[[[DTD]]] [[[文書型定義]]]]で使われる[[マーク宣言]]を特に
[DFN[[RUBYB[[ABBR[[[DTD]]] [[[文書型定義]]]] 宣言] [[ABBR[[[DTD]]] [[[文書型定義]]]] declaration]]]]といいます。

* 定義

[FIG(quote)[
[1] 
>
:[INS[[[Web SGML]]]] K.2.1.1 DTD 宣言 (DTD declaration):
[[文書型宣言部分集合]]の中に現れる[[マーク付け宣言]]。
]FIG]

[3] 具体的には、
[FIG(list short)[
- [[要素型宣言]] ([SAMP(SGML)[[[ELEMENT]]]])
- [[属性定義並び宣言]] ([SAMP(SGML)[[[ATTLIST]]]])
- [[実体宣言]] ([SAMP(SGML)[[[ENTITY]]]])
- [[記法宣言]] ([SAMP(SGML)[[[NOTATION]]]])
- [[短縮参照使用宣言]] ([SAMP(SGML)[[[USEMAP]]]])
- [[注釈宣言]] ([SAMP(SGML)[<!--]]・・・[SAMP(SGML)[-->]])
- [[マーク区間宣言]] ([SAMP(SGML)[<!'''[''']]・・・[SAMP(SGML)['''[''']]・・・[SAMP(SGML)[''']'''''']'''>]])
]FIG]
... があります。このうち、[[短縮参照使用宣言]]以外は [[XML]]
でも使えます。

[5] マーク宣言には、この他にも DTD 宣言の[Q[外側]]の[[文書型宣言]]や、
[[連結型宣言]]系の宣言、 [[SGML宣言]]、
[[短縮参照使用宣言]]の[[文書実現値]]内での用法がありますが、
それらを除外したものに便宜上名前を与えたようです。

* よくある (かもしれない) 誤解

[4] × [CODE(SGML)[[[DOCTYPE]]]] 宣言のことを [Q[DTD 宣言]]という ×

'''解説''': [[文書型宣言]]
([SAMP(SGML)[[[DOCTYPE]]]]) のことを俗に [Q[DTD 宣言]]とも言うようです。
ご丁寧に[Q[[[文書型定義宣言]]]]などとしている解説まであります。
この用法は Web SGML 以前からあるようですが、
正式な用語になった現在ではそれと異なる意味では使わない方が良いでしょう。

[6] × DTD 宣言は[[タグ]]・[[要素]]の意味を決める ×

'''解説''': DTD 宣言 (特に[[要素型宣言]]と[[属性定義並び宣言]])
は[[要素]]の構造やタグに記述する[[属性]]の構造を記述できますが、
意味 (semantics) を記述することは''できません''。

意味を記述するのは[[文書型]]を定義する仕様書です。
一般に意味を形式的に記述することは困難で、
[[自然言語]]で記述するのが普通です。

[7] × DTD では [CODE(SGML)[<!]] から始まる特別なタグを使う ×

'''解説''': DTD 宣言は[[マーク宣言]]であり、[[タグ]]ではありません。

[8]
[CITE[文字コードとDTD宣言]] ([CODE[2007-04-19 06:35:08 +09:00]] 版) <http://www.shoshinsha.com/hp/1hour/1hour_after/need.html>

> HTMLのDTD宣言
> もうひとつ重要なものがある。DTD宣言を入れておこう。

ちなみにこんな変なことも:

> このページで使ったHTML4.01 Transitionalは文法・タグの使い方を完全には守っていません。もしくはHTML4.01 Strictや次世代言語XHTMLへ移行する途中ですという意味がある。
> 僕みたいに勉強中の人や、W3Cの取り決めたHTMLのルールどおりには作っていないページにつけるってことですね。

ついでにいえば:

> その厳密なルールは勉強しなくていいんですか?
> どっちだと言われれば勉強したほうがいい。だけど最初はホームページ作りを楽しみながらHTMLを覚えるぐらいで気楽にいこう。その中でHTMLについて興味が湧いてきたらHTML4.01 Strictを宣言できるように勉強してくれ。
> せんせいも勉強中なんですね。
> とっくの昔に挫折した。

こんなやつが偉そうに [[HTML]] を語るのが現実。
([[名無しさん]])

[9]
[CITE[DOCTYPEによる宣言]] ([CODE[2005-08-01 02:11:52 +09:00]] 版) <http://www.tohoho-web.com/lng/199904/99040071.htm>

> HTMLがSGMLアプリケーションである以上、DTD宣言は必須です。
DTD宣言を解釈して表示を変更するブラウザが現存するかは不明ですが。
> #RFCにはDTD宣言を省略した場合はHTML/2.0として解釈すべきと書いてあるらしいです(未確認)

1999年だからこんな認識でも仕方が無いのかもしれませんが。。。

([[名無しさん]])

[10]
[CITE[DOCTYPEによる宣言]] ([CODE[2005-08-01 02:11:52 +09:00]] 版) <http://www.tohoho-web.com/lng/199904/99040071.htm>

> HTMLがSGMLアプリケーションである以上、DTD宣言は必須です。
DTD宣言を解釈して表示を変更するブラウザが現存するかは不明ですが。
> #RFCにはDTD宣言を省略した場合はHTML/2.0として解釈すべきと書いてあるらしいです(未確認)

1999年だからこんな認識でも仕方が無いのかもしれませんが。。。

([[名無しさん]])

[11]
[CITE[DOCTYPEによる宣言]] ([CODE[2005-08-01 02:11:52 +09:00]] 版) <http://www.tohoho-web.com/lng/199904/99040071.htm>

> HTMLがSGMLアプリケーションである以上、DTD宣言は必須です。
DTD宣言を解釈して表示を変更するブラウザが現存するかは不明ですが。
> #RFCにはDTD宣言を省略した場合はHTML/2.0として解釈すべきと書いてあるらしいです(未確認)

1999年だからこんな認識でも仕方が無いのかもしれませんが。。。

([[名無しさん]])

[12]
[CITE[XHTMLの文書型宣言(DTD宣言) : webデザイナーのナナメガキ]] ([CODE[2007-03-18 03:06:55 +09:00]] 版) <http://loconet.web2.jp/blog/archives/2006/05/xhtmldtd.html>

本文には[Q[DTD宣言]]は一度も出てこない。題名だけ。
([[名無しさん]])

[13]
[CITE@ja[Macromedia - Dreamweaver TechNotes : ページ内に記述されるDTD宣言によってコンテンツの表示がブラウザ上で異なる]] ([CODE[2007-06-10 23:00:38 +09:00]] 版) <http://www.adobe.com/jp/support/dreamweaver/ts/documents/dw0458.html>

これも題名だけ。
([[名無しさん]])

[14]
[CITE[XHTML 1.1 DTD]] ([CODE[2007-03-10 11:04:55 +09:00]] 版) <http://msugai.fc2web.com/web/XHTML11/dtd.html>

[CITE[XHTML 1.1 DTD]] ([CODE[2006-02-12 05:50:09 +09:00]] 版) <http://www.nextindex.net/web/XHTML11/dtd.html>

本文に何度も登場する。

[15]
>>14 と同じサイト

- [CITE@ja[DTD - Document Type Definition]] ([CODE[2007-03-10 11:04:59 +09:00]] 版) <http://msugai.fc2web.com/web/tips/dtd.html>
- [CITE@ja[XHTMLとは何だろうか]] ([CODE[2007-03-10 11:04:58 +09:00]] 版) <http://msugai.fc2web.com/web/XHTML/xml.html#global>
- [CITE[Java 入門 | DTD - Document Type Definition]] ([CODE[2007-03-10 11:04:54 +09:00]] 版) <http://msugai.fc2web.com/java/XML/dtd.html>
-- [Q@ja[文書型定義宣言(DTD 宣言)]]  とかいう展開版が出現。
- [CITE@en[How to Read the HTML DTD]] ([CODE[2007-03-10 11:04:59 +09:00]] 版) <http://msugai.fc2web.com/web/tips/readdtd.html>
- [CITE[Creating DTD]] ([CODE[2007-03-10 11:04:56 +09:00]] 版) <http://msugai.fc2web.com/web/XHTML11/createdtd.html>
- [CITE@ja[HTML 入門 | HTML 文書の全体の構造]] ([CODE[2007-03-10 11:05:04 +09:00]] 版) <http://msugai.fc2web.com/web/tut/HTMLtut/global.html>
- [CITE@ja[HTML Document]] ([CODE[2007-03-10 11:04:59 +09:00]] 版) <http://msugai.fc2web.com/web/tips/html.html>
-- [Q[文書型定義 (Document Type Definition; DTD) 宣言]]
- [CITE[XML - Extensible Markup Language]] ([CODE[2007-03-10 11:04:55 +09:00]] 版) <http://msugai.fc2web.com/web/XHTML11/xml.html>
- [CITE@ja[XHTMLとは何だろうか]] ([CODE[2007-03-10 11:04:58 +09:00]] 版) <http://msugai.fc2web.com/web/XHTML/css.html>

[16]
[CITE@ja[@IT:XMLテクニック集 - 外部サブセットを利用して、DTDをXML文書から分離する]] ([CODE[2007-06-10 23:14:24 +09:00]] 版) <http://www.atmarkit.co.jp/fxml/tecs/013dtd/13.html>

[[XML]] の文脈だけどやっぱりおかしい。
([[名無しさん]])

[17]
[CITE@ja[XHTML DTDの宣言]] ([CODE[2007-06-10 23:15:30 +09:00]] 版) <http://w-d-l.net/html/course/xhtml_dtd/>

> XHTMLの場合のDTD宣言は、まず最初にXMLのどのバージョンを使用したのか記述します。その次に、どのDTDに準拠しているのかを定義します。

どうやら [[XML宣言]]も [[DTD宣言]]の一部分らしい。。。
([[名無しさん]])

[18]
[CITE@ja[HTML / XHTML入門〜HTML DTDの宣言]] ([CODE[2007-06-10 23:16:45 +09:00]] 版) <http://w-d-l.net/html/course/html_dtd/>

>>17 と同じサイトの [[HTML]] 版。

> HTMLでは、作成した文書が、どのHTMLのバージョンとDTDに準拠しているのかをブラウザに知らせるために、最初の行にその命令文を記述することになっています。
> HTMLの場合は、最初の行にSGMLの命令文を記述することで、その文書がどのDTDに準拠しているのかを定義します。 

命令!?
([[名無しさん]])

[19]
[CITE['''['''#CHURA-23''']''' Teeda用HTMLにDTD宣言が存在しない場合に、ワーニングを出力する。 - The Seasar Foundation Issues]] ([CODE[2007-06-10 23:18:27 +09:00]] 版) <https://www.seasar.org/issues/browse/CHURA-23>

> Teeda用のHTMLに、DTD宣言が全く存在しない場合、ワーニングマークを出力する。
ワーニングマークをクリックすると、「Add DTD」がメニューとして出力され、それを選択すると、
「XML宣言及び、DOCTYPE宣言」もしくは、「DTD宣言」が挿入される。

後者の場合何が挿入されるの? それとも英語の [Q@en[[[or]]]]
の直訳で >>17 と同じ意味?

([[名無しさん]])

[20]
[CITE[mozilla dtd test]] ([[MARUYAMA Tsukasa]] 著, [CODE[2001-05-25 22:28:17 +09:00]] 版) <http://www.ash.ne.jp/~mal/mozilla/mozdtd/>
([[名無しさん]])

[21]
[CITE[XML宣言・DTD宣言の記述方法]] ([CODE[2007-06-10 23:19:37 +09:00]] 版) <http://www.boj.or.jp/type/form/tame/data/esengen.pdf>

それにしても[[根要素型名]]が様式何番の何とかいうやつ (もちろん日本語) とはwww
([[名無しさん]])

[22]
[CITE[Weblog Entry - 11/24/2002: "DTD宣言? しねーよバーカ"]] ([CODE[2005-03-23 04:21:44 +09:00]] 版) <http://monkey.workarea.jp/gm/archives/00000053.html>

言ってる内容はそう間違っていないのですが・・・。
([[名無しさん]])

[23]
[CITE[スキーマ言語とDTDXML'''['''セマンティックWeb''']''' -TECHSCORE-]] ([[4DD]] 著, [CODE[2007-06-10 23:24:15 +09:00]] 版) <http://www.techscore.com/tech/SemanticWeb/xml/2.html>

> 例えば、W3C が勧告する XHTML 1.1 の DTD 宣言は次のようになります。

([[名無しさん]])

[24]
[CITE@ja[W3C勧告と正しいHTML書式(DTD)の実例]] ([CODE[2007-03-28 18:04:06 +09:00]] 版) <http://dokodemo.rankuappu.com/w3c/index.html>

> DTD (Document Type Definition)
> 文書の構造を定義するもので文書型定義ともいう。文書の冒頭にDTDを宣言するとか段落は<p>で表すとかを定義しています。以下に使用を推奨されているDTDを紹介します。

いや、いくらなんでも[[文書型宣言]]を記述しろと [[DTD]]
内ではいわんでしょう。

> 横着をして<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">で済ませる事は出来ません。DTD宣言は必ず最後まで書き、1字1句間違わないように。

[[システム識別子]]を省略してはいけないらしい。

([[名無しさん]])

[25]
[CITE@ja[余白と画像、XML講座/メールマガジン第65号 今週のおさらい]] ([CODE[2003-09-11 23:51:38 +09:00]] 版) <http://www.scollabo.com/banban/magazine/review_065.html#back2>

> DTDで要素型宣言を記述する前に、文書中に DTD宣言を行わなければなりません。DTD宣言は、ルート要素(最上位要素)を指定して行います。

([[名無しさん]])

[26]
[CITE@ja[碧落 - content block]] ([CODE[2007-05-06 19:12:44 +09:00]] 版) <http://sgry.sakura.ne.jp/articles/contentblock.html>

最初は正しく [Q[[CODE(XML)@en[[[DOCTYPE]]]] 宣言]]と書いているのに、後の方はおかしい。
([[名無しさん]])

[27]
[CITE[XHTMLの基礎]] ([CODE[2001-09-27 17:14:55 +09:00]] 版) <http://freebooks.info.nara-k.ac.jp/archive/XHTML_Primer/xhtml-basic.html>
([[名無しさん]])


[28]
その他沢山大杉。
([[名無しさん]] [WEAK[2007-06-10 14:41:15 +00:00]])


[[#comment]]


* メモ