こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

XHTMLの正しい書き方について質問です。

WordPressにてHPを作成しています。
出力されたページをAnother HTML-lintでチェックしたところ、XHTML 1.0 Transitionalとして記述しているはずなのですが「HTML4.01 Transitional としてチェックしました。」となり、かなりの数のエラーが検出されてしまいました。

HP作成に関してかなりの初心者でして、何が悪いのかが分かりません。なにとぞご教授下さい。


/* ------------------------------------------------------------
ページソース最初の3行
------------------------------------------------------------ */
<?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" lang="ja" xml:lang="ja">

/* ------------------------------------------------------------
最初の3行に対するエラー内容
------------------------------------------------------------ */
8: line 1: 最初の記述が DOCTYPE宣言ではありません。
4: line 1: ここに <HTML> が省略されているようです。省略しないようにしましょう。
4: line 1: ここに <HEAD> が省略されているようです。省略しないようにしましょう。
2: line 1: ここに </HEAD> が省略されているとみなします。
9: line 1: <HEAD>~</HEAD> 内には <TITLE> が必要です。
1: line 1: <HEAD> と </HEAD> の間が空です。
4: line 1: <HEAD>~</HEAD> 内に <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="~"> が含まれていません。
4: line 1: ここに <BODY> が省略されているようです。省略しないようにしましょう。
5: line 1: メタ文字 `<` は `&lt;` と書かなければなりません。
5: line 1: メタ文字 `>` は `&gt;` と書かなければなりません。
9: line 2: DOCTYPE宣言は文書の先頭でなければなりません。
2: line 3: <HTML> の前に </BODY> が省略されているとみなします。
9: line 3: <HTML> を 1行目の <HTML>~</HTML> 内に書くことはできません。
5: line 3: <HTML> に他のHTML用の属性 `XMLNS` が指定されています。
5: line 3: <HTML> に他のHTML用の属性 `XML:LANG` が指定されています。

投稿日時 - 2011-03-26 12:55:23

QNo.6621865

困ってます

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

どのテキストエディタを使われているかわかりませんが、テキストエディタで作成したUnicodeで保存すると、それがUnicodeであることを示すBOM(Byte Order Mark)が追加されます。
 保存時に、BOMをつけないようにして保存してみてください。

UTF-8の場合、BOMは不要です。

投稿日時 - 2011-03-28 00:03:28

お礼

有り難うございます!解決することが出来ました

投稿日時 - 2011-03-28 11:17:54

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.6

???が入り込んでいます。

???<?xml version="1.0" encoding="UTF-8" ?>

コピペしてみて下さい。

投稿日時 - 2011-03-26 20:01:53

補足

確認したところ、確かに不明な3文字分の何かが存在していました。ただ、その3文字分の原因がさっぱり分かりません

header.phpの先頭に↓と書いていますが、

<?php
$ua = $_SERVER['HTTP_USER_AGENT'];if (!(ereg("Windows",$ua) && ereg("MSIE 6",$ua))) {
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
}
?>

これに原因があるのでしょうか?
“サイトを訪れたユーザーのブラウザがIE6だったらXML宣言を挿入せず、それ以外のブラウザだったら挿入するということをここでやっています。”との事らしいのですが

投稿日時 - 2011-03-27 11:42:24

お礼

有り難うございます

投稿日時 - 2011-03-27 11:41:33

ANo.5

再現できませんでした。
http://codepad.org/RdI6B3ZBhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.html の [DATA] に入力して、[チェック] しています。

投稿日時 - 2011-03-26 19:42:01

ANo.4

度々すいません…
何となく思ったんですが、それだけしか書いて無くないですか…??
ちゃんとからでも<HEAD><BODY><HTML>は書いて下さいね?
何となくそれらが全部検出されていないというのが気になったもので…
UTF-8のあとのスペースが気になります。
それ以外はちゃんとした記述と思いますよ。
そのタグだけ見る分には。

投稿日時 - 2011-03-26 17:51:44

ANo.3

過去に趣味でWEBページを作成た経験がある者です。
えっとXHTMLとHTML4.01ですと多少タグの使い方、
記述の使い方が違います。
それに対応したソフトでしょうか?
あとWEB作成ソフトって結構記述順番が、ぐちゃぐちゃだったり
するんですがその点はどうですか?
XHTMLは正しい記述という観点が強いですので、
そういうところで引っかかっているのでは無いでしょうか??
ここまで書いてきましたが、記述がぐちゃぐちゃだろうが、何だろうが、
ページとしては普通に表示されますし、エラーもないです。
当然XHTML参考書を見ながらおこなっていますよね??
その参考書でチェックしてゆくしかないです。
まずはそのソフトではじかれたところを…
それが終わったら次は正しいXHTMLであるかのチェック…

実際、趣味で作ってる、普通の企業サイトでも記述がぐちゃぐちゃですから
そんなに気にする事も無いとは思いますよ。
私はそこらへんが頑固なんでこだわっちゃう方ですが…
すっきり綺麗なサイトソースは見た事無いですし、
まぁみんな作成ソフトで作ってるのでしょうがないですが…
タグで作るのってめんどいですからね…
私も作ってる時に色々質問した事もありますが、
結構作りこんでる人ですと、ソフトで作るけど、結局上手くない記述があるから
最後に絶対手直し(タグ修正)するらしいですよ。
それでは頑張って下さい。
タグうち慣れると、自分で打ったってさほどめんどくないですよ。
手直し、追加も自分で打つと内容把握してるのでし易いですし。

投稿日時 - 2011-03-26 17:33:33

ANo.2

>↑は質問の中での区切りで入れただけですのでページソースは
><?xml version="1.0" encoding="UTF-8" ?>
>が最初の行です

そうであればお書きのエラーには絶対になりません。
先頭に何か見えない文字が含まれているとか?ファイルの先頭文字は、<?xml の < ですか?
試しに、先頭に全角空白を入れて見ると、お書きのようなメッセージが出ますね。

投稿日時 - 2011-03-26 14:05:20

ANo.1

エラーメッセージ通りだと思いますけど。

最初の行が、
/* ------------------------------------------------------------

になっているのでは?そのせいで、以降のチェックがむちゃくちゃになっています。

最初の行は、<?xml ~ か、<!DOCTYPE ~ でなければなりません。

投稿日時 - 2011-03-26 13:12:57

補足

早速の回答有り難うございます。

わかりにくくてすみません。
/* ------------------------------------------------------------
ページソース最初の3行
------------------------------------------------------------ */
↑は質問の中での区切りで入れただけですのでページソースは
<?xml version="1.0" encoding="UTF-8" ?>
が最初の行です

投稿日時 - 2011-03-26 13:40:24