• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:名前空間の指定がDOCTYPEに含まれているのは?)

名前空間の指定がDOCTYPEに含まれているのは?

このQ&Aのポイント
  • DOCTYPE宣言に名前空間が含まれる理由を教えてください。
  • <?xml version="1.0" encoding="UTF-8" standalone="yes"?>タグがDOCTYPE宣言の前に書かれている意味を教えてください。
  • 名前空間の指定とDOCTYPEについてご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Chaire
  • ベストアンサー率60% (79/130)
回答No.2

まず、<!DOCTYPE ...> はタグではありません。マーク宣言の一種です(DOCTYPE「宣言」と書いているのに)。 XML 宣言もタグではなく「XML 宣言」です。そうとしか言い様がありません。 そして、ちゃぶ台をひっくり返すようで恐縮ですが、 > <!DOCTYPE html > PUBLIC "-//w3c//DTD XHTML1.0 Transitional//EN" > "http://www.w3c.org/1999/xhtml"> こんな書式は(今のところ)ないです。書き写し間違いか、間違った書式を参考にしているか、どちらかだと思います。 そもそも、DOCTYPE 宣言は過去の遺物です。XHTML 1.0 でこれを書くのは後方互換性のためにすぎません。長ったらしい書式を書いて間違うくらいなら、いっそ HTML5 の <!DOCTYPE html>だけにした方が(いろんな意味で)無難です。

urimyu
質問者

お礼

タグと宣言も分かっていない者です。申し訳ないです。ちゃぶ台をひっくり返されて当たり前です。仰るとおり、書き写し間違いでした。指摘して頂いて本当にありがとうございました。

その他の回答 (2)

  • Chaire
  • ベストアンサー率60% (79/130)
回答No.3

一応、念のため。 > PUBLIC "-//w3c//DTD XHTML1.0 Transitional//EN" おそらく PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" だと思われます。所有者を示す "W3C" は大文字、"XHTML" と "1.0" の間に空白が必要です。その後に続くのは、何でも良いのですが、たいていは "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" です。 これは要するに、この文書の設計図(DTD)の在処を示すものです。設計図は、文書のミスをチェックするのに必要です。 PUBLIC で示されるものは「W3C が作った XHTML 1.0 Transitional という設計図」の意味で、設計図が手元にあればそれを使うも良し、なければ探しに行くも良し、とにかく同じ設計図なら何でも良い、ということです。その後ろに続く URL は、そこに行けば間違いなく設計図があるぞ、という意味です。名前空間ではありません。 ネットにつながっているなら指定の URL まで設計図を取りに行っても良いし、ネットにつながっていなければ手元にある設計図を使っても良い。柔軟にやってくれ、ということです。 --- さて。XML は「設計図」なしで、いきなり文書を書いても良い。たいていの場合、設計図を後から用意しても十分に間に合うからです。設計図の在処を示す DOCTYPE 宣言が不要になった、というのが XML の大きなウリです。 ではなぜ、みんな XHTML 1.0 文書で律儀に DOCTYPE 宣言を書いているのか。それは、XHTML 1.0 が HTML 4.0 からの移行措置だったからです。HTML 4.0 までは DOCTYPE 宣言が必須だったので、いきなりなくすと困る人がいるかもしれない。もし XHTML への移行が完全に終わっていたなら、今ごろ DOCTYPE 宣言なぞ必要なかったのです。 しかし、現実はそううまくいかず、ブラウザ開発者もページ制作者も、なぜか DOCTYPE 宣言を残す方を「歓迎」しました。面倒くさがりの私としては残念ですね。 --- で、XML 宣言について。XML/XHTML 文書と、XML でない HTML 文書は見分けがつかない場合がありますので、冒頭に「これは XML だぞ」という宣言を書いておきます。 <?xml version="1.0" encoding="UTF-8"?> これは、カタチとしては処理命令になっており SGML 宣言など面倒くさいものを省略する云々、XML は意識的に Unicode を取り込んだ規格で文書の保存性を高めるために文字コード宣言が云々。 小難しいことはともかく、XML/XHTML 文書を書くなら XML 宣言を書いて下さい。たかだかブラウザの都合で XML 宣言を書いたり書かなかったりなんて情けないことを言わず、どーんと構えていれば良いのです。 --- とはいえ、ブラウザの都合に左右されるのも人情です。どうしても気になる方々は HTML5 を使えば良いでしょう。 HTML5 というと、巷では「新機能!」と喝采を浴びていますが、そんなのはどうでもよろしい。大事なのは、「このように書けば、ブラウザがこう解釈するから、よろしく」と、HTML の書き方とブラウザの振る舞いを結び付けたことです。 HTML5 の DOCTYPE 宣言は <!DOCTYPE html>、ただこれだけです。これはどういう意味か? 何の意味もありません。 何の意味もないものを、なぜ書くのか。歴史的な理由で、DOCTYPE 宣言の有無でブラウザが「描画モード」を切り替えるという、面倒くさい話があるからです(DOCTYPE スイッチと呼ばれます)。本来なくなるべき DOCTYPE 宣言が、ブラウザの振る舞い上、なくせないものになってしまいました。 HTML5 はそういう事情を考慮し、DOCTYPE 宣言を残すにしても、せめて簡単な形にしようとしました。それが <!DOCTYPE html> です。これがあれば、DOCTYPE スイッチの元祖である IE6 でも「標準モード」になります。 本来の意味をなくしたものが、形骸化して残る。HTML の「進化」とはよく言ったものです。 --- 長々と書きましたが、結論としては、DOCTYPE 宣言の意味がよく分からなければ <!DOCTYPE html> だけ書けば良い、ということです。それ以上のことは、必要になってから覚えれば十分です。

urimyu
質問者

お礼

とても丁寧に教えて頂きまして、感謝致します。他の方も言われていましたが、<!DOCTYPE html>で進めます。誠にありがとうございました。

  • outbrave
  • ベストアンサー率60% (231/380)
回答No.1

>DOCTYPE宣言の中に含まれているのはどうしてなのですか? どうしてというのではなく、決まりです。 URL が含まれている場合は標準モードとなり、URL がない場合は互換モードとなります。 モードについては「DTD モード」で検索してください。 <?xml で始まるのは、「XML宣言」です。 XHTMLで文字コードが UTF 以外の場合は1行目に記述する必要があります。 UTF-8 , UTF-16 の場合は省略可。

urimyu
質問者

お礼

決まりなのですか。独立しているのを見かけましたが、それでも構わないということでしょうか?XML宣言、宣言なのですね。まだ何も分からない状態ですので、また質問をするとおもいますが、その時は宜しくお願い致します。ありがとうございました。

関連するQ&A