• 締切済み

XHTMLのIEでの表示

PHPを使ってXHTMLを出力しています。 下記のようなソースを使った場合、IE系ブラウザでXMLツリーが表示されてしまいます。IE8beta2、IE7、IE5で確認しています。 Google Chrome、Opera、FireFox 3ではこのような問題は起きていません。 どのようにすれば解決できるでしょうか。XML宣言を除けば一応表示はされたのですが。後方互換モードのことなどもIE7で改善されたとのことなので、混乱しています。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title></title> <body> </body> </html>

みんなの回答

回答No.3

content-typeヘッダはtext/htmlになっていますか? または、IEのインターネットオプションで、「拡張子ではなく内容によって開く」設定になっていますか? Opera、Firefox、Safariなどはapplication/xmlやapplication/xml+xhtmlなどにも対応していますが、 (細かなところではそれぞれ違う動作をします。) IE7以上では、インターネットオプションの セキュリティータブ -> その他 -> 拡張子では内容によってファイルを開く が無効になっていると、 拡張子phpはIEに登録されていないため、content-typeヘッダで判断してXMLファイルとして表示するかもしれません。 これが有効になっていると、拡張子を隠蔽したウイルスなどが実行されてしまう可能性があります。 IE5以前(おそらくIE6以前)はapplication/xml、application/xml+xhtmlのHTMLデータに対応していないと思います。(XMLとして表示します)

noname#83877
noname#83877
回答No.2

utf-8の場合はxml宣言を省略できます。 さらにIE6でも標準準拠で解釈してくれます。 なので、xml宣言をはずすのが一番簡単な解決策だと思いますが・・・ 詳しいことはわからないのですが http://openlab.ring.gr.jp/k16/htmllint/htmllint.html でチェックしてみると ​ という隙間の無い空白がところどころにあるみたいです。 これがもしかしたら原因かもしれません。 あと</head>がありません。

回答No.1

こんばんわ。 XHTMLを Strict で宣言しているので、厳密に解釈(?)されてしまってIE系ブラウザで表示できないのではないでしょうか。 次のように、 Transitional で宣言してはいかがでしょうか。 FireFox系のブラウザはXHTMLを忠実に解釈しますが、IE系ブラウザでは都合のよい解釈がされていたりしますので、その辺が引っかかっているのかと思いますが。 <?xml version="1.0" encoding="UTF-8"?> <!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">