• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:xmlの宣言でエラーになってしまいます。)

XML宣言でエラーが発生する問題の対処法

このQ&Aのポイント
  • xmlの宣言でエラーになってしまいます。xmlの宣言でエラーになってしまいます。x-servletを導入して携帯サイトを構築しています。携帯用のgoogle googleAnalyticsも導入するのにxml宣言を先頭に記述すると、
  • システムエラーが発生しました。エラーメッセージによると、xmlns属性で指定したDTDの実行エラーが原因のようです。
  • エラーが表示されている原因は、DOCTYPE宣言とXML宣言の相互作用です。DOCTYPE宣言はXML宣言の前に配置する必要があります。そのため、DOCTYPE宣言を先頭に移動することでエラーを解消できる可能性があります。

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

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.3

#2です。 「XML宣言のエラー」と「DOCTYPE宣言のエラー」は分けて考えてください。 ・IE8- は application/xhtml+xml をサポートしていません。(IE9はわかりません) ・IE8- は text/html をHTML文書として扱います。 ・IE8- は application/xml, text/xml をXML文書として扱います。 > XML ページを表示できません > スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。 IE8- はこの文書を「XML文書」として扱っています。 > システム エラー: -2146697210 リソース 'http://ドメイン/i-xhtml_4ja_10.dtd' の実行エラーです。 IE8- は適切なDTDを見付けられていません。 文書型宣言の意味 -- ごく簡単なHTMLの説明 http://www.kanzaki.com/docs/html/doctype.html#systemid > <?xml version="1.0" encoding="Shift_JIS"?> ←※コメントアウトするとエラーが出ない おそらく、IE8- はXML宣言を入れると XML文書 として扱い、XML宣言を外すとHTML文書と扱っています。 解決法は2つあると思います。 ■IEにHTML文書として解釈させる PHPか .htaccess で正しいContent-Typeヘッダを出力してください。 // IE以外 Content-Type: application/xhtml+xml; charset=Shift_JIS; // IE Content-Type: text/html; charset=Shift_JIS; HTML 5 を application/xhtml+xml で配信すれば Fx2, Fx3 でも問題なく解析される | ヨモツネット http://www.yomotsu.net/wp/?p=531 ■XML文書として解釈させる まず、DTDは自分で作成して適当なURIに置きます。 そして、IE向けに適当なContent-Typeヘッダを出力します。 // IE以外 Content-Type: application/xhtml+xml; charset=Shift_JIS; // IE Content-Type: application/xml; charset=Shift_JIS; 最後にトリックを使って、IEにXML文書として扱わせます。(XHTML5でも使えるそうです) XHTML Frequently Answered Questions(私的日本語訳) - Software Linkage http://past.openvista.jp/blog/documents/W3C/XHTML_FAQ/#ie

shingorin
質問者

お礼

dtdを作成する事も考えましたが、とりあえずIEでのプレビューができればいい(厳密に携帯ブラウザでの見え方とは違っていても)ので、 今回はIEで表示する際にはxmlとして解釈させないようにしました。 ただ、xmlの宣言は外せないのでそれ以外の場合は宣言文を挿入するようにしました。 大変細かい説明で助かりました。今回の件でブラウザ間での解釈の違いやdtdについて改めて勉強になりました。 躓きはしましたがいい経験になりました。ご丁寧にご教示くださったみなさんありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

> <?xml version="1.0" encoding="Shift_JIS"?> ←※コメントアウトするとエラーが出ない PHPの宣言ブロックと判断されていませんか? <?php echo('<?xml version="1.0" encoding="Shift_JIS"?>') ?> と書く必要があるともうのですが…。 XML宣言とDOCTYPE宣言を記載 http://css.uka-p.com/xhtml/declare.html > システム エラー: -2146697210 リソース 'http://ドメイン/i-xhtml_4ja_10.dtd' の実行エラーです。 そもそも、正式なDTDが存在するのでしょうか? iモード対応XHTMLのバージョン http://www.nttdocomo.co.jp/service/imode/make/content/browser/xhtml/about/ ドコモ iモードサイト作成時のHTML DOCTYPEまとめ 携帯サイトを作ろう! -ちょっと詳しいモバイルサイトの作り方- http://dspt.blog59.fc2.com/blog-entry-37.html nttdocomo.co.jp でさえ、システム識別子にURIを指定していない記述です。 docomo的には、「必要なら自前でDTDを書いてください」とか「IEには別のDTDを宣言してください」って事なのかなあ…。

shingorin
質問者

補足

>そもそも、正式なDTDが存在するのでしょうか? xmlを宣言してdtdの識別子が確認できない事でIEではエラーが出てしまうという事でしょうか? もし正式なdtdが存在しない場合IEのブラウザ上でプレビューを確認する事はできないのでしょうか? 別でdtdを作成して設置してそのフルパスを書いておけば認識はしてくれるのでしょうか? 質問ばかりで申し訳ありません。いろいろ自分なりに調べてはいるのですがそれらしい答えには辿りつけず。是非ご教示お願いします。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

DTDのシステム識別子はURIなので,示されたURIにDTDファイルが存在しなければいけません。 # XHTML 1.0で同じ罠がありました。 IEは該当文書をXMLとして解釈したため,きっちりとDTDによる妥当性の検証を行おうとして,DTDが見つからずにエラーとなっています。 DTDのシステム識別子を本来のURIにするか,該当DTDを同じディレクトリに置くことで,IEでも見られるはずです。 # XML扱いされそうな気はしますが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 基本的なことですがXML宣言について教えてください。

    XHTMLでホームページを作成しようと、 <?xml version="1.0" encoding="Shift_JIS"?> <!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=Shift_JIS" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> から書き始めているのですが、画面上では文字化けしないものの、メールフォームなどに受け渡しをするとどうしても文字化けがおこり、直りません。 ホームページのトップページにフォームを設置して、そこまで普通に文字化けもせずに表示されますが、確認ボタンを押すと画面全てが文字化けします。 CGIを考慮してShift-Jisで作成をしていますが、どうしてでしょうか? 他に宣言される場所とかあるのでしょうか? 何かいいアドバイスがあればご教授下さい。 宜しくお願いします。

    • 締切済み
    • XML
  • 携帯サイトを作成しているのですが、DOCTYPE宣言で

    携帯サイトを作成しているのですが、DOCTYPE宣言で <!DOCTYPE HTML PUBLIC \"-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.3) 1.0//EN\" \"i-xhtml_4ja_10.dtd\"> (ドコモ使用時) だけがページに表示されてしまいます。書き方に間違いがあるのでしょうか? 又、これは受け入れられてないのでしょうか? どなたかわかる方アドバイスよろしくおねがいします。 ↓プログラム添付 <?php $agent=$_SERVER['HTTP_USER_AGENT']; if(preg_match("/DoCoMo/", $agent)) { print("<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n"); print ("<!DOCTYPE HTML PUBLIC \"-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.3) 1.0//EN\" \"i-xhtml_4ja_10.dtd\">\n"); print ("<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"ja\" xml:lang=\"ja\">\n"); print ("<head>\n"); print ("<meta http-equiv=\"Content-Type\" content=\"application/xhtml+xml; charset=Shift_JIS\" />"); } elseif・・・・

    • ベストアンサー
    • PHP
  • XML宣言について

    htmllintでエラーチェックをしたら、 <!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"> にはXML宣言をいれろとでたので <?xml version="1.0" encoding="Shift_JIS"?>を入れました。 しかし、下記cssの設定でセンター揃えの設定をしていたのに 左よりになってしまいました。 XML宣言を取ると元のセンター揃えに戻りましたがXML宣言はいれない 方がよいのでしょうか?入れてもセンター揃えになりますか? css---------------ーーーーーーーーーーー * {1 margin: 0; padding: 0; } body { margin: 0px; padding: 0px; background-color:#f0fbff; height:100%; font-size: 13px; } html{ height:100%; } #wrapper { background-color:#fff; margin:0px auto; padding:0px; width:848px; height:100%; min-height:100%; border-left:1px solid #b8b8b8; border-right:1px solid #b8b8b8; } body > #wrapper { height:auto; }

    • ベストアンサー
    • HTML
  • GoogleChromeでxml宣言が消える?

    GoogleChromeでソース表示を行うと1行目に表示されるはずのxml宣言が表示されません。 例えばIE7で神奈川県のサイト(http://www.pref.kanagawa.jp/)をソース表示すると <?xml version="1.0" encoding="Shift_JIS"?> <!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"> となりますが、同じサイトをGoogleChromeでソース表示すると <!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"> と1行目にあるはずのxml宣言が消えて2行目の空行から始まっています。 だからなんだと言われると困るのですが・・・IE6対策でphpの条件分岐でIE6以外の場合のみ表示としているはずが、あれ?と言う状況です。 ソースや表示そのものがおかしくなるわけではないと思いますが、最初は条件分岐が間違っているのかと悩みました。 これはきちんと表示させる方法があるのか、もしくはそういう仕様なのか、実は他のソースもちゃっかり修正されちゃってたりしないのか、どんなもんでしょう。

    • ベストアンサー
    • HTML
  • 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
  • xmlの宣言?ドコモで反転表示がうまくいかない。

    質問の内容がレス違いの場合はご了承ください。 PHPを使用して携帯向けのサイトを作成していますが、ドコモの文字反転がうまく行かなくて困っています。 説明が複雑になりますが、xmlの宣言でつまずいているのか.htaccessの設定とサーバーの設定がうまくいって無いのかほからないので、現状を書きますので、わかるようでしたらアドバイスしてください。 使用サーバー さくらのレンタルサーバー PHPのバージョン PHP 4.4.8(変更の予定はありません) 状況 .htaccessの内容 AddType application/xhtml+xml .xhtml 実行ソースabc.xthmlの内容 <?xml version="1.0" encoding="Shift_JIS"?> <!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"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" /> <title>テスト表示</title> </head> <body> <div style="background-color:#ff0000;">テスト表示</div> </body> </html> ------------------------------------------------------------- この状態でドコモ端末よりアクセスすると反転表示されます。 これではPHPが使えないので、xhtmlでPHPを使えるようにしてみました。 参考にしたサイト http://help.sakura.ne.jp/forumup/c/2006/09/60.html http://faq.sakuratan.com/wiki/wiki.cgi?cgi%25a4%25c8php#i23 .htaccess変更後の内容 AddType application/xhtml+xml .xhtml DirectoryIndex index.html index.php .ht Action myphp-script /inc/php.cgi AddHandler myphp-script .php .html .xhtml 実行ソースabc.xthml変更後の内容 <? echo '<?xml version="1.0" encoding="Shift_JIS"?>'."\n" ?> <!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"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" /> <title>テスト表示</title> </head> <body> <? echo "これで表示されれはOK"."<br>"; ?> <div style="background-color:#ff0000;">テスト表示</div> </body> </html> ------------------------------------------------------------- PHPは動作しているのですが、反転されないようになりました。 IE等でソース確認してみましたが、ソースにはxmlの宣言文は書かれています。 ですが、ドコモ端末で反転されないのです。 表示されていたのが表示されなくなったので、その間にやった処理を見直したのですが、xhtml上でPHPを動作させたいので、その方法がわかりません。 ちょっと説明がヘタで申し訳ないのですが、良きアドバイスお願いします。

    • ベストアンサー
    • PHP
  • 文字化けするページとしないページ(宣言などは同じなんですが・・・)

    はじめまして。 現在、PHPによる更新管理を入れたページを作っています。 なんとか更新、反映はされたのですが、 ページによって文字化けするページとしないページがあります。 宣言?(1行目から<body>までは)はまったく同じなんですが、なぜか文字化けするページとしないページに分かれています。 しかも文字化けする個所としないページは同じテキストの内容です。 にもかかわらず原因不明の文字化けが起きています。 以下、宣言?以下の部分です。 どうかよろしくお願致します。 <!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="text/html; charset=euc-jp"> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="imagetoolbar" content="no"> <meta name="Keywords" content="" /> <meta name="Description" content="" /> <meta name="ROBOTS" content="ALL" />

    • ベストアンサー
    • HTML
  • xml宣言をしたら・・・

    XHTML+CSSを勉強中なのですが、下記のソースを見てください。 <?xml version="1.0" encoding="Shift_JIS"?> <!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> -----------省略------------- </head> <body> <div id="container"> -----------省略------------- </div> </body> </html> xml宣言をするまでは画面中央に表示されていたのですが、宣言の行を追加したら左側に寄ってしまいました。 CSS部分は以下のようになっています。 body { font-size: 100%; font-family: sans-serif; color: #333333; margin: 0; padding: 0; background-color: #F0F0F0; } #container { width: 800px; position: relative; margin: 0 auto; background-color: #FFFFFF; } marginの設定の仕方が悪いのかなとか考えたんですが、わかりませんでした。 用は<table align="center">のようなことがしたいんです。 どなたかご教授よろしくお願いします。

    • ベストアンサー
    • XML
  • 携帯サイト用 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ファイルを読み込むことは可能でしょうか? 可能なのであればその際の記述方法をご教授いただけないでしょうか? 宜しくお願い致します。

  • 「ページでエラーが発生しました」というエラー

    movabletype3.3を利用しております 最近ページエラーが発生します エラーの詳細は ライン:2 文字:8 エラー:'​www'​は宣言されていません コード:0 という物です このブログのメインページテンプレートの上部には 以下のような記述があります <?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"​ id="sixapart-standard"> <head> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Type" content="text/html; charset=<$MTPublishCharset$>" /> <meta http-equiv="Content-Style-Type" content="text/css" /> どうすればこのエラーを解除できるのでしょうか? よろしくお願いします