アプリ版:「スタンプのみでお礼する」機能のリリースについて

皆さまお世話になります。超ド級の初心者質問なのですが、<!DOCTYPE html PUBLIC "-//w3c//DTD XHTML1.0 Transitional//EN" "http://www.w3c.org/1999/xhtml">と言うタグにhttp://www.w3c.org/1999/xhtmllが、DOCTYPE宣言の中に含まれているのはどうしてなのですか?単独で書かれてあるのは見たことがあるのですが・・・教えて下さい。
また、<?xml version ="1.0" encoding = "UTF-8" standalone="yes"?>と言うタグが
<!DOCTYPE・・・・・>DOCTYPE宣言の前に書かれてあるのには、どういう意味があるのでしょうか?DOCTYPE宣言が最初に来ると思っていましたので、教えて下さい。どうぞ宜しくお願い致します。

A 回答 (3件)

まず、<!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>だけにした方が(いろんな意味で)無難です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/09/16 14:23

一応、念のため。



> 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-transitio … です。

これは要するに、この文書の設計図(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> だけ書けば良い、ということです。それ以上のことは、必要になってから覚えれば十分です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/09/16 14:28

>DOCTYPE宣言の中に含まれているのはどうしてなのですか?


どうしてというのではなく、決まりです。
URL が含まれている場合は標準モードとなり、URL がない場合は互換モードとなります。

モードについては「DTD モード」で検索してください。

<?xml で始まるのは、「XML宣言」です。
XHTMLで文字コードが UTF 以外の場合は1行目に記述する必要があります。
UTF-8 , UTF-16 の場合は省略可。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/09/16 14:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!