• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:htmlについて)

HTMLとXHTMLの違いやHTMLのDTDについて知りたい

このQ&Aのポイント
  • HTMLとXHTMLの違いやHTMLのDTDについて教えてください。
  • ウェブサイト作成においてHTMLとXHTMLのどちらを使うべきか迷っています。また、HTMLのDTDにURLを記述するかしないかの違いも知りたいです。
  • 以前、URLを記述するタイプのHTMLのDTDを使ったところ、スタイルシートが思うように適用されず、URL部分を削除するとレイアウトが正常になりました。この違いの影響について教えてください。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>htmlでも問題はないですよね? はい。 >xhtmlの方がかっこいいという風潮があったりしますか? プログラムで読み取ったりするときはXMLパーサが使えるのでxhtmlの方が便利ですが、html5の方が今風です。 >私が以前URLを記述するタイプのもので宣言した時、cssでレイアウトが思うようにいかず、スタイルシートはそのままでURL部分を削除しただけで、レイアウトうまくいくようになった経験があります。 ブラウザのレンダリングモードで、標準モードとQuirks("奇妙な"と言う意味で昔のブラウザとの互換用)モードがあるのをご存じでしょうか? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> だと、Quirksモード、 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> だと標準モードになります。標準モードでうまくレイアウト出来ないというのは、あなたのHTMLやCSSが標準規格に則っていないと言うことです。IE4、IE5時代のHTML/CSSをそのまま使いたいのであれば、Quirksモードを選択することになります。 細かいことですが、DOCTYPE宣言の中の http://www.w3.org/TR/html4/loose.dtd 等はURLではありません。

kimufusi
質問者

お礼

お礼が遅くなってしまい申し訳ありません。 分かりやすいご回答ありがとうございました!

その他の回答 (3)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.4

かっこいいとかそんなことでどの仕様を使うかなんて決めません。 古いブラウザにも対応させようとすれば、HTML3.2でもよい。新しいブラウザであっても古い仕様で書かれたHTMLを表示できることが求められています。 【引用】____________ここから HTMLユーザエージェント ・・・【中略】・・・ HTML 4仕様に適合するユーザエージェントとは、この仕様の必須事項と下記の3点とを遵守するもののことを指す。  * 略  * 略  * 過去との互換性のため、HTML 4 を解釈するツールについては、HTML 3.2 ([HTML32]参照)並びにHTML 2.0 ([RFC1866]参照)をもサポートすることを推奨する。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Conformance: requirements and recommendations (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/conform.html#h-4.1 )]より  新しいHTMLを使うことを求める意見としては ・文書構造が分かりやすい  HTML3.2当時は、本来の要素が文書構造を無視した使われ方をしていた  本来はプレゼンテーションに課すべきものが要素として指定されていたなど  また、XHTMLを使うのは、ブラウザへの負担を軽減することや、他の、あるいは独自のXML要素が使えるからです。  MathMLを使って数式を表現できるとか・・・。  <m:red>ここは赤で</m:red>で表します。 とか。  その必要がないのにわざわざXHTMLで書く必要はないでしょう。  私は個人の(利用者は古いブラウザの人も多い)サイトはHTML4.01 strictで、仕事用のページはXHTMLです。たとえばこんな書き方ができる <dl>  <shop:product>商品名</<shop:product>  <shop:price>\12,000-</shop:price> </dl>  とか・・ > htmlのDTDで、html 4.01の後にW3CのURLを記述するものとしないも > のがありますが、これはどう違うのでしょうか?  これは、ブラウザにどちらのモードを使うか指示するためです。 たとえば下記サイトなどに説明があります。 文書型宣言とブラウザでの表示 ( http://web8341.info/advanced/dtd.htm ) > 私が以前URLを記述するタイプのもので宣言した時、cssでレイアウトが思うようにいかず、  それは、たぶんIEでしょうね。ウェブ標準的で作成されていないページ、すなわちIE専用ページは、互換モードでないと崩れる。

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

XHTML は XML の枠組みに従っており、XML 関連のツールを適用できます。今どきのプログラミング言語系なら XML ライブラリを標準で持っています。理念的なことを言えば、XML は数十年先でもデータを読み出せることを目的とする汎用構文です(たかだか十数年前のワープロファイルですら、読み取りの難しい現状を思い出して下さい)。 しかし、こと Web ページで使われている XHTML に関して言えば、マトモなものは極めて少ないです。世の中の XHTML で書かれている(と制作者が思い込んでいる)Web ページの多くは、XML として「壊れて」おり、使いものになりません。 そのため、ブラウザも XHTML として処理するのをあきらめ、ほとんどは従来の HTML として処理しています。だったら、その「従来の HTML として処理する方法」を標準化してしまえ、というのが HTML5 の目的の 1 つです。 --- IE 6.0 で追加された機能の 1 つに、HTML 4.01 に準拠しきちんと DOCTYPE 宣言を書いているページ上では標準的なスタイルシート解釈をし、古い(間違った)HTML の書き方をして DOCTYPE 宣言を書いていない古いページ上では従来の(バグのある)スタイルシート解釈をする、という DOCTYPE スイッチがありました。 HTML 4.01 Transitional は、その名が示す通り古いバージョンからの移行措置(transition)用です。そのためか、Transition 文書型に関しては、DOCTYPE 宣言にシステム識別子(URI)があれば標準モード、なければ互換モードという、中間の振る舞いをします。 したがって、システム識別子(URI)を削除して「うまくいった」なら、標準的ではない「昔のバグ持ち」モードならうまくいったということであり、決して手放しで喜べる状態ではありません。 --- DOCTYPE スイッチは、本来の DOCTYPE 宣言の用途とは何の関係もありません。しかし、Web ページ上で DOCTYPE 宣言が本来の用途で用いられる可能性はほぼ皆無であり、ほとんどが DOCTYPE スイッチのためだけに使われていることから、HTML5 では DOCTYPE スイッチのためだけに DOCTYPE 宣言を残しました。それが下記です。 <!DOCTYPE html> これは現状の多数派ブラウザの振る舞いをもとにして定義されていますので、今でもこれだけで標準モードになります。XML 処理にさほど興味がなく、Web ページ制作だけに集中したいのであれば、HTML5 でやっていくのをお勧めします。 --- 余談ながら、XMLとしては、SGML の遺物である DOCTYPE 宣言を徐々になくしていきたかったと思われます(DTD でないとできないことが僅かながら存在したので、一気に廃止することはできませんでした)。DOCTYPE スイッチなどというもののせいで、HTML5 ですらこんなものをいちいち書かざるをえなくなったのは、残念なことだと個人的には思います。

  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.1

>xhtmlの方がかっこいいという風潮があったりしますか? ここ5年程度でXHTMLが増加しましたから、 静的サイトの場合、 ソースを見ないユーザーにはわからない方が多いので無関係ですが、 制作関係者がみたらXHTMLでないと、古臭いと思われるかも・・・ "-//W3C//DTD HTML 4.01//EN" がフォーマル公開識別子で、 "http://www.w3.org/TR/html4/strict.dtd" などの部分がシステム識別子です。 全部宣言すると標準準拠モードで解釈されますので、CSSの解釈が変わるわけです。 常に標準モードで制作して、慣れる方が良いとも思いますが、 他者制作物の部分変更などは、過去互換モード (Quirks)でのCSSの挙動を解釈しないといけませんね・・・ また、 XHTMLのXML宣言の有り無しや、DOCTYPEの不適切宣言や1行目の扱いなどでも モード(DOCTYPEスイッチ)が切り替わります。 その他、IE6などもサポートしたら制作時間が増加しますw

関連するQ&A