DTD検証でエラーが出る理由とは?

このQ&Aのポイント
  • XMLをDTDで検証しようとした際にエラーが発生します。
  • エラーの原因は無効なコンテンツモデルです。
  • プログラムがエラーを出す理由がわかりません。
回答を見る
  • ベストアンサー

XMLをDTDで検証しようとしたらエラー、何が悪いのかさっぱり(--#;)

◎Thread.xml <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE Thread SYSTEM "mybbs.dtd"> <Thread> <Response> <Name>暇人</Name> <Mail>暇人</Mail> <WebSite>http://www.yahoo.co.jp</WebSite> <Content> <h1>テスト</h1> <p>テスト</p> </Content> </Response> <Response> <Name>暇人2003</Name> <Mail>tomoyukibug@yahoo.co.jp</Mail> <WebSite>http://www.yahoo.co.jp</WebSite> <Content> <h1>テスト2</h1> <p>テスト2</p> </Content> </Response> </Thread> ◎mybbs.dtd <!ENTITY % xhtml-math-svg SYSTEM "xhtml-math-svg.dtd"> %xhtml-math-svg; <!ELEMENT Thread (Response)+> <!ELEMENT Content %body.content;> <!ELEMENT Email "( #PCDATA )" > <!ELEMENT WebSite "( #PCDATA )" > <!ELEMENT Name "( #PCDATA )" > <!ELEMENT Response (Name,Email,WebSite,Content)> 率直に聞きます。 自分のプログラム(文字数制限に付き、ソース公開不可、するなら補足で)がエラーが出るんですが、何が間違っているんでしょう? エラー内容:これは無効なコンテンツモデルです

noname#20378
noname#20378

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

  • ベストアンサー
  • nanimania
  • ベストアンサー率36% (34/93)
回答No.1

DTDでMailの宣言がないのに、 XMLで使っているからじゃないでしょうか? ×Mail ○Email じゃないですかね?

noname#20378
質問者

お礼

テケトーにhogeってた(コピペってた)ら直っちゃいました(滝汗)。 ソースにぎこちないところがありますが そこは、hogeの影響ですが。 <![INCLUDE[ <!ENTITY % xhtml-math-svg.dtd PUBLIC "XHTML 1.1 plus MathML 2.0 plus SVG 1.1" "xhtml-math-svg.dtd" > %xhtml-math-svg.dtd;]]> <!ELEMENT Thread (Response)+> <!ELEMENT Content %body.content; > <![INCLUDE[ <!ENTITY % email.content "( #PCDATA )" > <!ELEMENT Email %email.content; > <!ENTITY % WebSite.content "( #PCDATA )" > <!ELEMENT WebSite %WebSite.content; > <!ENTITY % Name.content "( #PCDATA )" > <!ELEMENT Name %Name.content; > ]]> <!ELEMENT Response (Name,Email,WebSite,Content)>

noname#20378
質問者

補足

ごふっ、ごめんなさい。 検証の途中、Mailがどこかで宣言されているのかとおもってへんこうしてたのを忘れてました。 正しく修正してもなお、エラーが出ます

関連するQ&A

  • XMLのネームスペースの指定・変更・削除ができません。。

    Javascriptを使ってMathMLの<math></math>にタグを追加したいと考えています。 ファイル名:sample.xhtml ソース: <?xml version="1.0" encoding="Shift_JIS" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta http-equiv="content-type" content="text/html;charset=shift_jis" /> <meta http-equiv="content-script-type" content="text/javascript" /> </head> <body> <math id="math" xmlns="http://www.w3.org/1998/Math/MathML"> </math> <br /> <script> function moji(){ var info = document.getElementById("math"); var element = document.createElement("mi"); element.innerHTML= "x"; info.appendChild(element); } </script> <form> <input type = "button" value="x" onclick ="moji()" /> </form> </body> </html> これを実行し、ボタンを押すと"X"は表示されるんですが、 javascript: void window.open("","","").document.write("<textarea cols=80 rows=20>" + document.body.parentNode.innerHTML + "</textarea>") これを使ってテキストに結果を吐き出してみると <math id="math" xmlns="http://www.w3.org/1998/Math/MathML"> <mi xmlns="http://www.w3.org/1999/xhtml">x</mi> </math> このような感じで追加されてしまいます。 ネームスペースの問題だと思うんですが、解決方法がまったく分かりません。 element.removeAttributeNS(null,"xmlns");でネームスペースを削除しようと思いましたが、削除されませんでした。 こういった場合、どうしたらいいでしょうか。 よろしくおねがいします。

    • ベストアンサー
    • XML
  • SafariでPHPソースがそのまま表示される

    Safariでindex.phpを開くとソースコードがそのまま表示されてしまいます。 拡張子をphpとしているだけでソース内にはphpスクリプトは記述しておりません。 なぜでしょうか? ※ファイル名をindex.htmlに変えると正しく表示されます。 Windows 7 Home Premium 64bit Safari5.1.5 ソースコードのエンコーディング: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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="content-style-type" content="text/css" /> <meta http-equiv="content-script-type" content="text/javascript" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <title>テストtitle> </head> <body> <h1>テストページ</h1> </body> </html>

  • htmlの記載方法について

    ホームページを作成知る際にページの一番上に記載する内容は以下のとうりでよろしいのでしょうか? 何か追加する内容等御座いましたらご指導よろしくお願いします。 <?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"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>テストタイトル</title> <meta name="keywords" content="テスト,テスト1,テスト2,テスト3" /> <meta name="description" content="テスト的に作成したページです" /> <style type="text/css">

    • ベストアンサー
    • HTML
  • FirefoxでのXML外部実体参照について。

    FirefoxでのXML外部実体参照について。 XMLをイチから勉強しているのですが、外部実体参照のところで分からなくなってしまいました。 <!ENTITY [要素名] SYSTEM "[ファイルパス]"> で外部ファイルを読み込もうとしているのですが、これがIE8なら期待通りに(外部ファイルを読み込んで)動いてくれるのですが、Firefox3だと動いてくれません。 ソースは以下の通りです。 ----------------------------------------- [members.xml] <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE members SYSTEM "members.dtd" [ <!ENTITY member1 SYSTEM "member1.xml"> ]> <members> &member1; </members> ----------------------------------------- [members.dtd] <!ELEMENT members (member)*> <!ELEMENT member (name, sex)> <!ELEMENT name (#PCDATA)> <!ELEMENT sex (#PCDATA)> <!ATTLIST member id ID #REQUIRED> ----------------------------------------- [member1.xml] <?xml version="1.0" encoding="Shift_JIS"?> <member id="0001"> <name>Tarou.Nihon</name> <sex>Male</sex> </member> ----------------------------------------- FirefoxとIEの間に何か違いがあるのでしょうか。 あと、<!ELEMENT>ですが、 <!ELEMENT members (member)*> と書くのと、 <!ELEMENT members (member*)> と書くのでは何か違いがあるのでしょうか。 以上2点、詳しい方がいればお教え下さい。宜しくお願い致します。

    • ベストアンサー
    • XML
  • 前後の全角スペースを削除すると文字化けする

    PHP初心者です。 trimファンクションを使って前後の全角スペースを削除したいのですが $test = " 左右に全角スペースがある文字列 "; echo trim ( $test , " " ); だと問題なく表示されるのですが以下のようにテキストボックスに入力した文字の 前後の全角スペースを削除しようとすると最初の1文字目が文字化けします。 ●test_input.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=UTF-8"/> <title>前後の全角スペースを削除する</title> </head> <body> <form action="test.php" method="get"> <dl> <dt>文字を入力してください。</dt> <dd><input type="text" name="test" size="50" maxlength="50" id="test" /> </dd> </dl> <input type="submit" value="送信する" /> </form> </body> </html> ●test.php <!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=UTF-8"/> <title>前後の全角スペースを削除する</title> </head> <body> <p>入力文字</p> <?php $test = ($_REQUEST['test']); echo ($test); ?> <br /> <br /> <p>trim ( $test , " " )</p> <?php echo trim ( $test , " " ); ?> </body> </html> どこがいけないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • XHTML meta属性 文字化け

    XHTMLを勉強しています。 以下のように記述して表示すると タイトルの部分が文字化けします。 何故でしょうか <?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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title>ホームページの作り方</title> <meta name="description" content="初心者のためのホームページテスト" /> <meta name="keywords" content="ホームページ,作成,初心者" /> </head> <body> テスト </body> </html>

    • ベストアンサー
    • HTML
  • $error配列がUndefined indexに

    簡単な入力フォームを初心者用の本に沿って作成しているのですが、 入力フォームのチェックで$error配列を使う部分で、 nameがblankかどうか確認する部分で、なぜかnameがNotice: Undefined indexとなってしまいます。 お詳しい方、下記のコードを見て何か原因をお分かりになりますでしょうか? <?php session_start(); if(!empty($_POST)){ if($_POST['name']==''){ $error['name']='blank'; } } ?> <!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=UTF-8" /> <title>Upload</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <p>次のフォームに必要事項をご記入下さい。</p> <dl> <dt>ニックネーム<span class="required">必須</span></dt> <dd><input type="text" name="name" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'); ?>" /> <?php if ($error['name'] == 'blank'): ?> <p class="error">* ニックネームを入力してください</p> <?php endif; ?> </dd> </dl> </form> </body> </html>

    • 締切済み
    • PHP
  • xhtml,css cssの取り込み

    xhtml,cssの解説書を購入し、二段にインポートする方法で「css」の取り込みをしたのですが、初心者ゆえどうもうまくいきません。下記にそのコードを載せますので、間違いをご指摘ください。 『index.html』 <!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" /> <title>test</title> <link rel="stylesheet" type="text/css" href="a.css" media="all" /> <body> <h1>秋</h1> <p> test test test </p> </body> </html> 『a.css』 @charset "Shift_JIS; @import"b.css"; 『b.css』 @charset "Shift_JIS"; h1{ text-align: center; font-size: x-large; font-family: "MS P明朝",serif; }

  • xmlの宣言でエラーになってしまいます。

    xmlの宣言でエラーになってしまいます。 x-servletを導入して携帯サイトを構築しています。 携帯用のgoogle googleAnalyticsも導入するのにxml宣言を先頭に記述すると、 ↓エラーの内容↓ ━━━━━━━━━━━━━━━━━━━━━━━ XML ページを表示できません スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。 -------------------------------------------------------------------------------- システム エラー: -2146697210 リソース 'http://ドメイン/i-xhtml_4ja_10.dtd' の実行エラーです。 ━━━━━━━━━━━━━━━━━━━━━━━ というエラーのメッセージが出てしまいます。 先頭のxml宣言をコメントアウトで外すとエラーは表示されなくなります。 ちなみにブラウザはIE8でfirefoxではエラーも表示されません。 DOCTYPEの宣言が原因なのかと、いろいろ調べて試したりもしたのですが、解決できません。 何か良い対処法があれば、どなたかご教示いただけると大変助かります。 どなたかお願いします。 ヘッダのソースを参考までに貼り付けておきます。 ━━━━━━━━━━━━━━━━━━━━━━━ <?xml version="1.0" encoding="Shift_JIS"?> ←※コメントアウトするとエラーが出ない <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.0) 1.0//EN" "i-xhtml_4ja_10.dtd"> <?php // Copyright 2009 Google Inc. All Rights Reserved. $GA_ACCOUNT = "MO-16273642-1"; $GA_PIXEL = "/ga.php"; function googleAnalyticsGetImageUrl() { global $GA_ACCOUNT, $GA_PIXEL; $url = "○○○○"; $url .= $GA_PIXEL . "?"; $url .= "utmac=" . $GA_ACCOUNT; $url .= "&utmn=" . rand(0, 0x7fffffff); $referer = $_SERVER["HTTP_REFERER"]; $query = $_SERVER["QUERY_STRING"]; $path = $_SERVER["REQUEST_URI"]; if (empty($referer)) { $referer = "-"; } $url .= "&utmr=" . urlencode($referer); if (!empty($path)) { $url .= "&utmp=" . urlencode($path); } $url .= "&guid=ON"; return str_replace("&", "&amp;", $url); } ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" /> <title>○○○○</title> <meta name="description" content="○○○○" /> <meta name="keywords" content="○○○○" /> <x:raw> ←x-servletのコード <style type="text/css"> <!-- a:focus{ color:white;} a:link{ color:#335544;} a:visited{ color:#335544;} --> </style> </x:raw> </head>

    • ベストアンサー
    • HTML
  • Shift_JISのことろをすべてsjisに

    しても大丈夫でしょうか? たとえば以下のように書いて大丈夫でしょうか? 本来どのように書くべきでしょうか? <?xml version="1.0" encoding="sjis"?>のsjisと <meta http-equiv="content-type" content="application/xhtml+xml; charset=sjis"/> のsjisの2箇所です。 <?xml version="1.0" encoding="sjis"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta http-equiv="content-type" content="application/xhtml+xml; charset=sjis"/> <meta http-equiv="content-style-type" content="text/css"/> <meta http-equiv="content-script-type" content="text/javascript"/> <title>sjis</title> </head> <body> <p>これは文字化けのテストです</p> </body> </html>

    • ベストアンサー
    • HTML

専門家に質問してみよう