• ベストアンサー

妥当なXML(Valid XML)のチェックについて

妥当な文書にするためにチェックを行っているのですが http://validator.w3.org/ ここれでやるとThis page is not Valid (no Doctype found)!といわれ omitted tag minimization parameter can be omitted only if OMITTAG NO is specified. などとエラーがでてしまいます。 しかし、http://www.stg.brown.edu/service/xmlvalid/でやるときちんとValidになります。 先生からはhttp://validator.w3.org/でチェックをするときいたのですがどうしてもエラーがでるので やはりhttp://validator.w3.org/はXHTMLだけでXMLのチェックというものはできないのでしょうか? XMLのValidかどうかのチェックはhttp://www.stg.brown.edu/service/xmlvalid/でやればいいのでしょうか?

  • XML
  • 回答数5
  • ありがとう数5

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

  • ベストアンサー
回答No.4

>ファイルをアップロードしてチェックした場合だとSorry! This document can not be checked. 再現した(笑) [原因] どうやらファイルアップロードはXML宣言にShift_JISって書いてあっても us-ascii扱いになってしまうようだ。 で、そのために「ごめんね、マルチバイトの文字は読めないの」って謝られるの。 [回避策] Extended File Upload Interfaceって奴にアクセスすると 色々指定できる。チェックする時にアップロードして Encoding:の欄を(detect automatically) [自動的に検出する→us-asciiと検出される]からshift_jisを明示してあげると検証が行われる。 俺は大抵BOM付UTF-8で文書を作ってきちんと自動認識されていたと思う。(BOMなしだとus-asciiとかその他のエンコードだと思われかねないから) ======================= >This page is not Valid (no Doctype found)! [原因] テキスト入力だと「DOCTYPE宣言書け」って書いてあるくせに、 内部サブセットだとDOCTYPE宣言だと認識できず 要素型宣言等をタグだと思い込みやがるらしい。 (当然終了タグに該当するものがないので「きちんと閉じやがれ」って言ってる) [回避策] なし。多分仕様。

mogmet
質問者

補足

ファイルアップロードでShift_Jis指定したら Missing "charset" attribute for "text/xml" document. The HTTP Content-Type header (text/xml) sent by your web browser (Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1) Sleipnir/2.5.12) did not contain a "charset" parameter, but the Content-Type was one of the XML text/* sub-types. The relevant specification (RFC 3023) specifies a strong default of "us-ascii" for such documents so we will use this value regardless of any encoding you may have indicated elsewhere. If you would like to use a different encoding, you should arrange to have your browser send this new encoding information. Character Encoding Override in effect! The detected character encoding "us-ascii" has been suppressed and "shift_jis" used instead. Note: The Validator XML support has some limitations. と真っ赤な文字が出ていましたがそのしたのほうにはThis Page Is Tentatively Valid XMLとうまくいってるようでした。 しかしテキスト入力ではやはりできないので、やはりhttp://validator.w3.org/でXMLのチェックはむいてないということなんでしょうか? 他のサイトのほうがいいんでしょうか? うーむ、よくわからないですね@@;

その他の回答 (4)

回答No.5

>と真っ赤な文字が出ていましたが まぁ、とりあえず解らなければ飛ばしてもいいかな。 気にするほどのことは書いてないから。 >しかしテキスト入力ではやはりできないので、やはりhttp://validator.w3.org/でXMLのチェックはむいてないということなんでしょうか?他のサイトのほうがいいんでしょうか? テキスト入力でやろうとするなら向かないんだろうね。 ま、URL版やアップロード版使うか、他のサービスを使うかは 別にどれだっていいと思う。好みの問題だし、お好きにどうぞ。 (特に質問なければ締め切りで)

mogmet
質問者

お礼

なるほど! いろいろとありがとうございました^^

回答No.3

>どうやれば後者で正しく認識されてくれるのだろう? UTF-8N(BOMなしUTF-8)で 外部サブセット、内部サブセット共に 正しく検証されました。(汗 ということで再現できないので こちらでの実験のためにソースを掲示してほしいのは相変わらずです。

回答No.2

FirefoxやIEには「整合性(well-formedness)検証」機能しかありません。 Operaはopera:config見るとXML Validateという項目があって出来そうな気がするのですが、当方環境では再現できませんでした。 ================== 以下のサンプルソースはBOM付きのUTF-8、改行コードCRLFとして作成してある XMLEDITOR.NET http://www.xmleditor.jp/ を用いて「妥当性(validity)検証」を済ませた。 話によると.NETでDOMを用いているので ファイルが大きくなると反応が遅くなるらしい。 ============Q3160421-1.dtd=============== <!ELEMENT hoge (#PCDATA|fuga)*> <!ELEMENT fuga (#PCDATA)*> ==========Q3160421-1.xml (SYSTEM識別子を用いた妥当なXML)================ <?xml version="1.0"?> <!DOCTYPE hoge SYSTEM "Q3160421-1.dtd"> <hoge> <fuga></fuga> </hoge> ==========Q3160421-1.xml (SYSTEM識別子を用いた妥当でないXML)================ <?xml version="1.0"?> <!DOCTYPE hoge SYSTEM "Q3160421-1.dtd"> <hoge> <fuga><hoge></hoge></fuga> </hoge> ==========Q3160421-3.xml (内部サブセットにDTDを記述した妥当なXML)================ <?xml version="1.0"?> <!DOCTYPE hoge [ <!ELEMENT hoge (#PCDATA|fuga)*> <!ELEMENT fuga (#PCDATA)*> ] > <hoge> <fuga></fuga> </hoge> ==========Q3160421-4.xml (内部サブセットにDTDを記述した妥当でないXML)================ <?xml version="1.0"?> <!DOCTYPE hoge [ <!ELEMENT hoge (#PCDATA|fuga)*> <!ELEMENT fuga (#PCDATA)*> ] > <hoge> <fuga><hoge></hoge></fuga> </hoge> ========== SYSTEM識別子を利用したXML、及び使われているDTDについて ファイルアップロードや直接記述では対応できないため、 自分で立てたWebサーバ(ANHTTPD)を利用した。 ========== 結果、 W3C Markup Validatorを用いたものは SYSTEM識別子を利用したものは、W3C Markup Validatorでは検証できない、と英語で言われてしまった。 尚、サンプルには出さないが、http://www.geocities.co.jp/Hollywood-Studio/8691/ に見られるように 独自のPUBLIC識別子を記述してみても無駄であった。 一方、内部サブセットにDTDを記述した利用したXMLは 正しく検証が行われて、Valid XML, Not Valid XMLを正しく判別してくれた。 しかし、 http://www.stg.brown.edu/service/xmlvalid/ ではどちらのXMLに関しても error (1104): document body starts with CharData: といわれてしまった。 どうやれば後者で正しく認識されてくれるのだろう? ========== >これでやるとThis page is not Valid (no Doctype found)!といわれ omitted tag minimization parameter can be omitted only if OMITTAG NO is specified エラーが出たXMLのソースを見せて欲しい。

mogmet
質問者

補足

Operaではもしかしたらできるかもですか、、、 以下判定したソースです。 <?xml version="1.0" encoding="shift_jis"?> <?xml-stylesheet type="text/xsl" href="report4.xsl"?> <!DOCTYPE uta[ <!ELEMENT uta (poem*)> <!ELEMENT poem (kami*,simo*)> <!ELEMENT kami (#PCDATA)> <!ELEMENT simo (#PCDATA)> <!ATTLIST poem sex CDATA #REQUIRED name CDATA #REQUIRED syoku CDATA #REQUIRED> ]> <uta> <poem sex="man" name="天智天皇" syoku="天皇"> <kami>秋の田の かりほの庵の 苫をあらみ</kami> <simo> わが衣手は 露にぬれつつ</simo> </poem> <poem sex="man" name="柿本人麻呂" syoku="一般人"> <kami>あしびきの 山鳥の尾の しだり尾の</kami> <simo> ながながし夜を ひとりかも寝む</simo> </poem> <poem sex="woman" name="持統天皇" syoku="天皇"> <kami>春すぎて 夏来にけらし 白妙の</kami> <simo> 衣ほすてふ 天の香具山</simo> </poem> <poem sex="woman" name="小野小町" syoku="一般人"> <kami>花の色は 移りにけりな いたづらに</kami> <simo> 我身世にふる ながめせしまに</simo> </poem> </uta> http://validator.w3.org/で、テキスト欄にいれてチェックしたばあいはThis page is not Valid (no Doctype found)!とえらーがでて、ファイルをアップロードしてチェックした場合だとSorry! This document can not be checked.とでてきて結果がちがうのですが、やはりXMLは対応してないということなんでしょうか?

noname#39970
noname#39970
回答No.1

dtdに対してっていうならちょっと判らないけどXMLの書式としてだけチェックしたいならgecko系のブラウザに放り込むと簡単にだけどチェックできるよ。 具体的にはfirefox辺り。

mogmet
質問者

補足

ご解答ありがとうございます。 firefoxに書式チェックの機能がついてるのでしょうか? ひととおりみたかんじではみあたらないのですが。。 また、DTDでチェックするにはどうしたらいいのでしょうか

関連するQ&A

  • XMLの素朴な疑問です。

    今日から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.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>aa</title> </head> <body><p>XML文書</p></body> </html> ========================================= 実際にIE6で見てみると上はDTDでエラーが出て下はこのファイルの先頭でエラーになります。 この原因を教えていただけませんでしょうか。

    • ベストアンサー
    • XML
  • IEでXMLとDOCTYPEの関係

    PukiWikiのスキンをカスタマイズしていて、困っております。。 PukiWikiでは、HTMLの先頭に、以下のような3行が入るのですが・・・ <?xml version="1.0" encoding="UTF-8" ?> <!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"> IEでは、DOCTYPEが1行目にないと有効にならないようなのです。。 先頭の「<?xml・・・」は、必ずないといけないのでしょうか?「<?xml・・・」と「<!DOCTYPE・・・>」を入れ替えたりしては、不都合があるのでしょうか?

    • ベストアンサー
    • HTML
  • VB.netでXMLファイルの妥当性チェック

    下記のようなXMLファイルを読み込み、 スキーマファイルで妥当性の検証を行っているのですが、 'http://www.w3.org/2001/XMLSchemainstance:schemaLocation' 属性が宣言されていません。 というエラーになってしまいます。 schemaLocationはxsdにも宣言しないとまずいのでしょうか?どなたかご存知のかた教えてください。 ------------------------------------------------ <?xml version="1.0" encoding="UTF-8"?> <rfd:rdmxmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xmlns:rfd="file://XML\Samples\TEST" xsi:schemaLocation="file://XML\Samples\TEST C:\XML\Samples\Person.xsd"> <Person> <Date>2003-12-03T13:20:00+08:00</Date> <Name>H.HIGASHINO</Name> </Person> </rfd:rdm> -------------------------------------------------

  • HTMLの文法チェック

    HTMLの文法をチェックしたら以下のエラーが出たのですが、どう直したらいいのか初心者なのでわかわかりません、できましたら具体的に何を足して何を削ればいいのか教えてください。 <HTML xmlns="http://www.w3.org/1999/xhtml xml:lang="jp"> <HTML> に XHTML1.0 または XHTML1.1 用の属性 `XML:LANG` が指定されています。 <HTML> に XHTML1.0、XHTML1.1 または iMode XHTML 用の属性 `XMLNS` が指定されています。 <script language="JavaScript" src="http://analyzer2.fc2.com/analyzer.js?uid=856988/script <SCRIPT> には TYPE 属性が必要です。

  • 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
  • W3Cのバリデータで there is no attribute "target".

    W3Cのバリデータでチェックすると <a href="http://○○○.com/" target="_blank"> の行のところで 「there is no attribute "target".」というエラーがでてしまいます。 これは何がいけないのでしょうか? エラーはこれ一つだけす。 おわかりになりましたらご教授お願い致します。 DOCTYPEは↓です。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    • ベストアンサー
    • HTML
  • w3c Validator で Not Valid でも 「This Page Is Valid * * *!」画像を表示させる理由とは?

    http://validator.w3.org/ 上記サイトで文法のチェックを行うことができ、勉強・取引のための調査を兼ねてさまざまなwebサイト作成業者の自社ページを見ているのですが、検証結果が「Not Valid」であるにもかかわらず、「This Page Is Valid * * *!」画像を表示させている業者がいます。 また、自覚しているか否かは不明ですが、画像のみを表示し、ダイレクトには検証できないようにしている業者もいます。 ※「画像」とは、以下のURIにあるものを指しています。 http://www.w3.org/QA/Tools/Icons このような行為は、どのような意図に基づくものなのでしょうか? 推測でも構いませんので、ご意見を頂ければと思います。 以上、宜しくお願い致します。

    • ベストアンサー
    • HTML
  • Dreamweaverでバリデートをかけてソースをチェックしたところ、

    Dreamweaverでバリデートをかけてソースをチェックしたところ、 タグ"html"には、現在アクティブなバージョンでは属性"xmlns:spry"がありません。 [XHTML 1.0 Transitional] タグ"div"には、現在アクティブなバージョンでは属性"spry:region"がありません。 [XHTML 1.0 Transitional] タグ"div"には、現在アクティブなバージョンでは属性"spry:repeat"がありません。 [XHTML 1.0 Transitional] というエラーがでてしまいました。 現在のDOCTYPE宣言は、 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> です。 html要素は、 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" xmlns:spry="http://ns.adobe.com/spry"> です。 DOCTYPEに問題があると思い、XHTML1.0のStrict DVDやFrameset DVDなどに変更してみましたが、エラーは[XHTML 1.0 Transitional]の部分がそれぞれのDTDに変わるだけで、エラーは減りませんでした。 ちなみにHTML 4.01に変更したらエラーがとても増えました。 ※一番上のエラーですが、 htm要素中のxmlns:spry="http://ns.adobe.com/spry"を削除したら、エラーがなくなりました。 残りは2つです。 助けてください。

    • ベストアンサー
    • 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