ここから本文です

HTML宣言(DOCTYPE)の質問です。FC2ブログのHTMLなのですが。

gan********さん

2013/3/401:40:29

HTML宣言(DOCTYPE)の質問です。FC2ブログのHTMLなのですが。




<!DOCTYPE html …

の後に付いてくる

<html xmlns="http://www.w3.org/1999/xhtml">

は、どういう意味でしょうか?

それと


<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml" >


<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%template_language>" lang="<%template_language>">


<html xmlns="http://www.w3.org/1999/xhtml">


3種類くらい見つかったのですが違いは何でしょうか?

どれが一番、公式(標準)の使い方ですか?

回答よろしくお願いします。

補足みなさん、お詳しい御回答ありがとうございます。

今後、指名質問させて頂きますが。宜しくお願いします。

閲覧数:
441
回答数:
3
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

coa********さん

編集あり2013/3/602:13:41

こんにちは。この話は結構複雑で私もうまく説明できてない所があるかもしれませんがご了承下さい。

xmlns属性は、XML Name Spaceの事でXML名前空間の事を意味します。

W3Cの勧告書を見ると、
"The namespace name, to serve its intended purpose, should have the characteristics of uniqueness and persistence. It is not a goal that it be directly usable for retrieval of a schema (if any exists)."

とあります。実際に、このURIにアクセスすると勧告書のウェブサイトへ飛び、DTDへリンクしてるのでは?と思いますが、実際にはID的な扱いだと思って下さい。

①~③の違いはありませんが、厳密に言えばあります。

①のdir属性は、"direction"で文字列の読む方向を指定します。日本語は左から右に読みますが、アラビア語圏内では右から左へ読んだりするものもあります。この場合は、属性値が"ltr"になってますが、これは"left to right"(左から右へ)を意味します。逆に右から左へ読むものは、"rtl"と記述します。基本的に、世界の言語はほとんどが左から右へ読むので、省略するのが普通です。意識的に書いてもOKという事です。

②lang属性と、xml:lang属性があります。これには明確な理由があります。lang属性はHTMLで定義されている属性ですが、xml:ang属性はXMLベースであるXHTMLで定義すべき属性です。lang属性とxml:lang属性を両方記載しているのは、HTMLとの互換性を持たせるために書かれているという事になります。

③こちらは①と同じです。

また、xml:lang属性だけの場合もあります。これは説明すると結構複雑ですが、一応説明しておきます。XHTMLには現在以下の仕様があります。

・XHTML1.0 Traditional
・XHTML1.0 Strict
・XHTML1.0 Frameset
・(XHTML 1.1)

がW3C(標準団体)より勧告されています。DTDという言葉が分からなければ、次のようだと思って下さい。基本的にHTMLのルーツは文書はHTMLで記述し、デザインはCSSで施すというコンセプトの元に作られました。しかし、いつしかHTMLのタグにはデザインを設定するタグも多く出てきました(IE独自のタグとかがそうですね)。まずこれをふまえてお話します。

"Traditional"はHTMLをルーズに書いても良い仕様です。デザイン用のタグ使いまくりでもOKです。一方、"Strict"はHTMLの文法に厳格な制限がされていて、正確に記述する仕様です。基本的には文書はHTMLで記述し、デザインはCSSで施さなければなりません(なので、iframeタグとかは使えません)。ただ、ルーズに書いてもブラウザが勝手に解釈して表示はされてしまいますが… ただ、自分で意識的に厳しく書きたい人向けです。この仕様によって使える要素があったり使えない属性があったりします。そういった定義を仕様書化したものがDTDと呼ばれるものです。

例えば、lang属性は"Traditional"では互換性を残すという理由でDTDに定義されていますが、"Strict"では定義されていません。"Strict"や"XHTML 1.1"ではxml:lang属性のみを使います。そういう意味で、"Traditional"はルーズと言ったわけです。

ただ、本末転倒な言い方かもしれませんが、このlang属性もxml:lang属性も必須属性とはなっていませんので、省略もできます。そういう意味では①~③はすべて同じとも言えます。ただ、なるべく記述した方がいいです。というのもブラウザがここの言語のパラメータを読み取って判断したり音声処理への判断をするからです。

W3Cとしては、今まで文書もデザインもすべてHTMLタグで記述していた流れから、元々のルーツに戻したいという理由があります。

質問者さんの質問では、DOCTYPE宣言の後が書かれてませんが、おそらく①~③のDOCTYPE宣言はこうなっているはずです。なので、どれもW3C準拠の標準的な書き方という事になります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

DOCTYPE宣言は、そのHTMLページの文法仕様を指定するものだと思って下さい。

p.s. "<%template_language>"という所(属性値の部分)はおそらく、ブログとの事ですので、編集者が記述する言語によって動的プログラムで勝手に置換されるのだと思います。日本語なら、"ja"、英語なら"en"です。

質問した人からのコメント

2013/3/10 17:07:54

降参 <%template_language>に関しては、FC2専用の変数というものだそうです。失礼しました。ありがとうございます。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

kil********さん

2013/3/412:27:01

XML名前空間です。
XMLでは自分でタグを定義できるので、複数の種類のXML文書を組み合わせるときに、要素や属性の衝突を防ぐための役割があります。

XHTMLはXMLの一種であり、HTMLの派生でもあります。
HTMLでは、html、head、bodyなど多くの要素・属性が定義されています。
そのHTMLの要素や属性に対して与えられる名前空間が
xmlns="http://www.w3.org/1999/xhtml"
です。
この名前空間を指定しておかないと、html要素やbody要素のようなHTMLで定義されているものでもXHTMLでは独自の要素・属性として処理される可能性があります。
ここで使われているURLに特に意味はありません。IDのようなものです。

普通のHTML文書では、XML名前空間は使用できません。
しかし、XHTMLからHTMLへの移行を簡単にするために
xmlns="http://www.w3.org/1999/xhtml"
のみ使うことが許されています。

ris********さん

2013/3/403:30:30

まず、どれも DOCTYPE 宣言とは関係ありません。また「HTML 宣言」なるものはありません。

> <html xmlns="http://www.w3.org/1999/xhtml">

これは XML 名前空間と呼ばれるものです。が、今は覚えなくて構いません。こういうものだと考えて下さい。
※XML 処理を行わない限り不要なものですが、テンプレートがそうなっているのなら仕方ありません。

(1) には dir="ltr" が付いていますが、これは left-to-right「この要素内は左から右に書かれている」という意味です。世の中には右から左に書く表記法の言語もありますので、ブラウザはこれを見つけると文字方向を切り替えます。ブラウザの初期設定が「左から右」か「右から左」かは地域によって違いますので、念のため書いているのでしょう。
※例えば、アラビア語の国に行ってブラウザを借りて日本語のページを見ると、dir="ltr" がないページは右に寄って見えたりします。

(2) には lang 属性がついています。これは要素内の言語を指定するものです。例えば、英語の引用符は ‘...’ ですが、フランス語の引用符は ‹...› です。あるいは、英語は単語の間に空白を入れますが、日本語では入れません。このように、「どうやって文字を配置するか」は言語によって違いますので、あらかじめブラウザに教えておいた方が無難です。
※なお、xml:lang="ja" は XML 文書用、lang="ja" は HTML 文書用です。両方書いておくのは昔の慣習ですが、テンプレートがそうなっているのなら仕方ない。

テンプレートとしては全体的にやや古い気がしますが、どれも公式・標準の書き方です。必要な組み合わせを選んで下さい。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる