dポイントプレゼントキャンペーン実施中!

今日からXMLをはじめたもので、右も左も解らない状態なんですが、いろいろ見ていて素朴な疑問が沸いてしまいましたので、質問させてください。
例えば下のように書いたxml文書は正しいのでしょうか?

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>XML</TITLE>
</HEAD>
<BODY>
<P>XML</P>
</BODY>
</HTML>
===========================================
<?xml version="1.0" encoding="Shift-JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.d …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<title>aa</title>
</head>
<body><p>XML文書</p></body>
</html>
=========================================
実際にIE6で見てみると上はDTDでエラーが出て下はこのファイルの先頭でエラーになります。
この原因を教えていただけませんでしょうか。

A 回答 (2件)

>ContentTypeと申しましょうか、それをtext/xmlとした場合です。


参考URL(RFC2376)で
MIMEタイプ
text/xml の場合
 charset パラメータが有る場合、
  encoding 宣言は無視され、charset で指定された文字コードが使用される
 charset パラメータが無い場合、
  encoding 宣言は無視され、charset のデフォルトであるus-asciiが使用される
text/xml の場合
 charset パラメータが有る場合、
  encoding 宣言は無視され、charset で指定された文字コードが使用される
 charset パラメータが無い場合、
  encoding 宣言は無視され、charset のデフォルトであるus-asciiが使用される
application/xml の場合
 charset パラメータが有る場合、
  encoding 宣言は無視され、charset で指定された文字コードが使用される
 charset パラメータが無い場合、
  encoding 宣言の文字コードが使用される

という違いがあります。

>ファイルの先頭でエラーになります。
<?xml …の部分のエラーというより
DOCTYPE のエラーだと思います。
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
に変えたり、
DOCTYPE 自体を削除すると該当エラーはでなくなりますので。

Firefox では問題ないので、IEのバグなのかもしれません。

参考URL:http://www.csl.sony.co.jp/cgi-bin/hyperrfc?RFC2376
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
IEのバグですか。
わかりました。

お礼日時:2006/03/12 05:29

私の環境ではIE6で見ても両方ともエラーはでませんでした。



上のXMLは強いて言えば、タグが大文字で書かれているのが間違いでしょう。
下のXMLはencodingがShift-JISになっているのが間違いです。上のXMLのようにShift_JISとするのが正しいです。

XHTMLやHTMLのチェックで有名なlintのURLを紹介しておきます。
http://openlab.ring.gr.jp/k16/htmllint/htmllint. …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
大変申し訳ありません。
書き忘れたことがありました。
MIMEタイプと言いましょうか、ContentTypeと申しましょうか、それをtext/xmlとした場合です。
実際には、私が使っているサーバーは拡張子をxmlとするとContentTypeがtext/xmlになるように設定されているようです。
application/xmlでも試してみたいと思ったのですがサーバーの都合で出来ていません。
その状態で質問したxml文書は正しいのか教えていただきたいと思っております。
仮にXHTMLがXML文書であるならば下のものは正しいのではないかと思い、xml文書がxml宣言で始まりDOCTYPE宣言がありルート要素が1つで要素が完全に入れ子になっていればxml文書とするならば上も正しいxml文書なんだと思いまして詳しい方の判断をお聞きしたいと思いました。

お礼日時:2006/03/11 09:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!