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

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

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

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4851/10265)
回答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

  • XHTML&CSSとドリームウィーバーについて

    最近というかずいぶん前からですが、ウェブサイトの制作に XHTML&CSSで記述しているサイトをよく見かけますが、 これにするメリットはただのhtmlと比べ何が優れているのでしょう? わたしとしては、htmlしかしらず、ドリームウィーバーver4で、 サイトを制作していましたが、最近、初めてXHTML&CSSで記述している サイトを読み込んで、レイアウトがめちゃめちゃなのに驚きました。 テーブルレイアウトでしか作ってこなかったので、正直どうして いいか戸惑っています。今後どうしたらいいのでしょうか? またドリームウィーバーの最新バージョンは、テーブルレイアウト のような簡単な見え方で、XHTML&CSSで記述ができるように なっているのでしょうか?

    • ベストアンサー
    • CSS
  • XHTML1.1でのXML宣言とDTD宣言の書き方

    XML宣言によるレイアウトの崩れ等の質問はありましたが今回の質問と同じ内容は私には見当たらなかったため質問させて頂きます。 XHTMLでのXML宣言を <?xml version="1.0" encoding="utf-8"?> と記述しています。 上記の記述と <?xml version="1.0" encoding="UTF-8"?> とで、文字コードの大文字か小文字かの違いだけなのですがどちらの方が良いのでしょうか。 同じくDTD宣言を <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> と記述しています。 XMLでは大文字と小文字を区別して扱うため必ず半角で書かなければならないとされていますが、XHTMLでマークアップされているサイトのソースを見るとどこもXML宣言での文字コードとDTD宣言では大文字が使用されています。 細か過ぎるというのは分かっているのですが厳密にはどのような記載が正しいのでしょうか。 ※今回投稿カテゴリーの小カテゴリーにて”XML”を選択致しましたがXHTMLについての質問の場合”XML”と”HTML”どちらにするべきでしょうか。 合わせてご返答、又はご意見を頂戴できれば幸いです。

    • 締切済み
    • XML
  • DreamWeaverでのスタイルシート適用後のプレビューについて

    最近やっとDreamWeaverを購入してテーブルからCSSデザインに 乗り換えようと奮闘中のものです。 外部スタイルシートに div#container { background: #ffffff; padding: 20px; margin: 10px 30px; border: 2px solid #999999; } と書き、 HTMLのほうに、 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <link href="/test.css" rel="stylesheet" type="text/css" /> <title>test</title> </head> <body> <div id="container"> test web site </div> </body> </html> と書きプレビューしてみたのですがスタイルシートが 適用されません。 デザインビューでは適用されているのですが、、、 何が原因なのでしょうか?

  • xhtmlでの画像サイズ指定について質問です。

    xhtmlでの画像サイズ指定について質問です。 htmlでは、例えば800×800の画像でも、スタイルシートのクラス指定(下記は外部にcssを記述)などで (中略) <link rel="stylesheet" href="size.css" type="text/css" media="screen" /> (中略) <img src="cat.jpg" class="wid180he50" alt="猫" /> 外部ファイルで・・・ .wid180he50 {width=180px ; height=50px ;} とすれば180×50で表示されますが、 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> のxhtmlでは無効となっているようで、そのままの800×800で表示されてしまいます。 どのように記述すれば180×50で表示されますでしょうか?

  • DOCTYPE宣言は厳密に気にするべきか??

    現在WEBを独学で学んでおります。 そこでDOCTYPE宣言についていくつか疑問に思いました。 ひとつでもわかる方はご回答頂ければ幸いです。 1.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> と、ソースの頭に記述しておいて <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> の内容で記述(XHTML 1.0 Transitionalで記述)することは可能ですか?? つまり、HTML 4.01 Transitionalを宣言して終了タグなど、XHTML 1.0 Transitionalの方式で書いても正確に表示されるかを知りたく思って おります。 2.DOCTYPE宣言を書いてないサイトが多く見受けられますが、 この場合はどのようにDOCTYPE宣言と捉えられるのでしょうか? また、この場合のデメリットとかはありますでしょうか?? 以上、わかる方いましたらよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • スタイルシートが時々適用されない ZendFw

    xampp、ZendFrameworkという環境で開発しています。 適用されているスタイルシートが何かの拍子で適用されなくなります。 Frameworkの性であるかどうか、多分関係あるとは思うのですが、原因が全く分かりません。 cssの適用方法ですが、login画面以外はlayout.phtmlというレイアウトを作成し、そこで適用しています。 なので、共通のレイアウトが読み込まれている認識でいます。 症状としては、 (1) login -> index -> user/index -> user/list と遷移するとuser/listでいきなりcssが適用されなくなります。 (2) loginでエラーを出すとやはりcssが適用されなくなります。 (3) user/indexとuser/listは同じコントローラなのでレイアウト適用に関する記述は共通のinitを見ています (4) indexもuser/indexもuser/listも、レイアウト崩れの違いはあってもhtml部分は同様に表示されています (5) cssを読み込んでいる部分のソースもindex・user/index・user/listで全く同じです ちなみにこんな感じ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <title>****</title> <link href="css/****.css" media="screen" rel="stylesheet" type="text/css" ><script type="text/x-jquery-tmpl"> </head> どなたか、わかる方がいたら教えてください。

    • 締切済み
    • PHP
  • スタイルシート

    スタイルシートを使用していたときに、cssのしたにxhtml を記述する、という形式で記述していたのですが、求めていた書式葉、反映されたんですが、css自体も表示されてしまいました。 どうすればいいのでしょう。

  • 推奨するHTMLの基本骨格

    まだ、HTMLのタグも知らない初心者です。 通常、基本骨格というとhtml・head・body要素からなりますが、推奨されているような基本骨格というのはどういうものでしょうか? 自分なりに調べてみると、 ---------------------------------------------------------------- HTML4.01Strictの場合 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="言語コード">「*1」 <head> <meta http-equiv="Content-Type" content="MIMEタイプ;charset=文字エンコード">「*2」 </head> <body> </body> </html> *1:要素内に使用している「言語コード」の言語を宣言(サーチエンジンのロボットに何語で書かれているか判別できる、文字化け防止) *2:文書を読み込むときに文書形式は「MIMEタイプ」、記述されている文字コードは「文字エンコード」という情報を、ユーザーエージェントに与える(文字化け防止) 言語コード:ja(日本語) MIMEタイプ:text/html(HTML4.01ではHTML文書としては、「text/html」以外のMIMEタイプの使用を禁止している) 文字エンコード:Shift_JIS(WindowsやMacでは「Shift_JIS」が主流) ---------------------------------------------------------------- XHTML1.0Strictの場合 <?xml version="1.0" encoding="文字エンコード" standalone="no"?>「*3」 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="言語コード" lang="言語コード">「*4」 <head> <meta http-equiv="Content-Type" content="MIMEタイプ; charset=文字エンコード" />「*5」 </head> <body> </body> </html> *3:スタンドアロン宣言はこの文書以外に参照すべきDTDがあるかどうかを指定するもので、XHTMLではどのバージョンでも「no」でよい。 *4:XHTML1.0では、XHTMLの環境に対応していないことへの配慮として、lang属性とxml:lang属性の両方を指定する。 *5:「*2」と同様。 言語コード:ja(日本語) MIMEタイプ:text/html(XHTMLの「MIMEタイプ」で推奨されているのは「application/xhtml+xml」だが、IE7でも対応し切れていないので、MIMEタイプは「text/html」にするしかない) 文字エンコード:Shift_JIS(WindowsやMacでは「Shift_JIS」が主流) ---------------------------------------------------------------- XHTML1.1の場合 <?xml version="1.0" encoding="文字エンコード" standalone="no"?>「*6」 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="言語コード">「*7」 <head> <meta http-equiv="Content-Type" content="MIMEタイプ; charset=文字エンコード" />「*8」 <title></title>「*9」 </head> <body> </body> </html> *6:「*3」と同様。 *7:lang属性はXHTML1.1では、後方互換の指定は全て非推奨のため記述できない。 *8:http-equiv属性はXHTML1.1では、HTML互換のため非推奨。 *9:head要素の中には、文書の題名を表すtitle要素が一つ現れなければならないので記述しなければならない。 言語コード:ja(日本語) MIMEタイプ:text/html(XHTMLの「MIMEタイプ」で推奨されているのは「application/xhtml+xml」だが、IE7でも対応し切れていないので、MIMEタイプは「text/html」にするしかない) 文字エンコード:Shift_JIS(WindowsやMacでは「Shift_JIS」が主流) ---------------------------------------------------------------- となりました。 また、XHTMLのMIMEタイプでXHTMLであってもブラウザが対応してないため「application/xhtml+xml」にはできないとありましたが、「application/xhtml+xml」が好ましいと書いてあるサイトもあって「text/html」とどちらが正しいのか分かりません。 また、「*8」は非推奨となっていますが、このmeta要素の部分の記述をしているところもあるので記述するのかしないのかはっきり分かりません。 この「推奨する基本骨格のHTML書式」(この言葉が妥当かは分かりませんが)に修正や追加するものがあったら教えてください。 回答よろしくお願いします。

    • ベストアンサー
    • HTML
  • CSSでの中央寄せにかんする疑問

    .main { margin:0 auto; width:1000px; } とCSSファイルに記述することにより中央よせをしようとしています。 IE8以外のブラウザでは中央に寄るのですが、IE8では実現しません。 実はこのCSSの記述は私が以前作成したサイトからコピーしていて、そのサイトではすべてのブラウザで中央に寄っています。 今回作成したサイトではこのようなトラブルに陥りました。 で、苦し紛れでDOCTYPE宣言を <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> から <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> に変更したらIE8でも中央に寄りました。 なぜ、このようなことになったのでしょうか? 教えてください。 よろしくお願いします。(Apacheのバージョンとかがかかわっている?)

    • ベストアンサー
    • HTML
  • 携帯サイト用 XHTML doctype宣言

    今、携帯サイトでXHTMLを使用したサイトを作成すること考えています。 3つのキャリアを別々に作るのは趣味範囲では難しいため、3つのキャリアに対応しているサイトの作成を考えています。 そこでdoctype宣言についてご質問なのですが、3つのキャリアは別々の宣言があり、 Docomoなら <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/*.*) 1.0//EN" "i-xhtml_4ja_10.dtd"> SoftBankなら <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//J-PHONE//DTD XHTML Basic 1.0 Plus//EN" "xhtml-basic10-plus.dtd"> auなら <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML 1.0//EN" "http://www.openwave.com/DTD/xhtml-basic.dtd"> とあります。 これらの宣言を記述するとキャリアごとにサイトを作成しないといけないため、3キャリア共通の宣言をご教授いただけないでしょうか? また、ないのであればこれらをXMLファイルに書き込みhtmlファイル内の記述でXMLファイルを読み込むことは可能でしょうか? 可能なのであればその際の記述方法をご教授いただけないでしょうか? 宜しくお願い致します。