XMLの素朴な疑問と正しい書き方の原因

このQ&Aのポイント
  • XMLをはじめたばかりで、素朴な疑問が浮かんできました。質問内容は、XML文書の正しい書き方に関するもので、具体的な例を挙げています。
  • 質問内容は、XML文書の正しい書き方に関するもので、具体的な例を挙げています。実際にIE6で試してみた結果、DTDエラーが出たり、ファイルの先頭でエラーになったりします。
  • XMLをはじめたばかりで、素朴な疑問が浮かんできました。質問内容は、XML文書の正しい書き方に関するもので、具体的な例を挙げています。実際にIE6で試してみた結果、DTDエラーが出たり、ファイルの先頭でエラーになったりします。
回答を見る
  • ベストアンサー

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
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.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-transitional.dtd"> に変えたり、 DOCTYPE 自体を削除すると該当エラーはでなくなりますので。 Firefox では問題ないので、IEのバグなのかもしれません。

参考URL:
http://www.csl.sony.co.jp/cgi-bin/hyperrfc?RFC2376
cyokokichi
質問者

お礼

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

その他の回答 (1)

noname#16499
noname#16499
回答No.1

私の環境ではIE6で見ても両方ともエラーはでませんでした。 上のXMLは強いて言えば、タグが大文字で書かれているのが間違いでしょう。 下のXMLはencodingがShift-JISになっているのが間違いです。上のXMLのようにShift_JISとするのが正しいです。 XHTMLやHTMLのチェックで有名なlintのURLを紹介しておきます。 http://openlab.ring.gr.jp/k16/htmllint/htmllint.html

cyokokichi
質問者

お礼

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

関連するQ&A

  • サイトの文字化け防止

    サイトがたまに文字化けして  「?R???e???c?E???j???[」こんな感じになってしまいことがあります。 これを防止するにはHTMLの文字宣言をどう書けばいいのでしょうか? HTMLをちょっと忘れ気味なんですが、ヘッダーの前にこのように書きました。 <?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> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />

    • ベストアンサー
    • HTML
  • XHTML Basicで記述したページをMac IE5.1で見ると落ちる事がある

    タイトル通りですが、XHTML Basicで記述したページをMacのIE5.1で表示すると落ちることがあります。 何度表示しても落ちるので、諦めていたら、しばらくして表示すると問題なく表示されました。 原因はなんなんでしょう??? 表示させようとしたのは、基本形の物で、下記のようにしていたのですが・・・。 <?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> <head> <title>テスト</title> </head> <body> テスト </body> </html> 一度だけエラーメッセージが出て、http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtdを 開くことが出来ない、というようなことが書かれていたのですが、 このアドレスがビジーで繋がらなかったりすると、どうなるのでしょうか? (それが原因で落ちたのかな、と思ったもので・・・) よろしくお願いします。

  • 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
  • ie6で画像のpaddingを表示させたい

    seesaaブログユーザーです。 seesaaはxhtmlで記述しているようでソースの先頭は 1:<?xml version="1.0" encoding="Shift_JIS"?> 2:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> (1:は一行目, 2:は二行目であることを表しています) のようになっています。 これを 1:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> もしくは 1:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2:<?xml version="1.0" encoding="Shift_JIS"?> としても問題ないのでしょうか? と、質問させていただいた理由は 画像に枠をつけたいと思って、cssでimgにpaddingを指定したのですが ie6では表示されないのでこれを何とかしたいからです。 http://www.koikikukan.com/archives/2006/03/11-015552.php の記事を参照してわかったのですが、 この状態ですと画像のpaddingがie6では適用できないのですね。 そこで、記事にあるようにdoctype宣言を先頭に持っていくと ie6でも表示されるようになりました。 ということで、 「<?xml version="1.0" encoding="Shift_JIS"?>」 の扱いについて質問させていただきます。

    • ベストアンサー
    • XML
  • 文字コードについて

    <?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" lang="ja" xml:lang="ja" id="sixapart-standard"> <head> <meta http-equiv="Content-Type" content="text/html" charset="Shift_JIS" /> </head> というように文字コード指定をしているのですが、なぜか文字コードがUTFになり、shift jisにすると文字化けしてしまいます。 どなたかアドバイスお願いいたします。

    • ベストアンサー
    • HTML
  • 次のxhtml文

    <?xml version="1.0" encoding="EUC-JP"?> <!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=EUC-JP" /> <title></title> </head> <body> <address></address> </body> </html> において <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> を <html xmlns="http://www.w3.org/1999/xhtml" lang="ja"> とするのは正式には正しいことなのでしょうか?

    • ベストアンサー
    • XML
  • ドコモの背景について

    ドコモの公式サイトを見たら背景が三つにわかれていたりしているのですがあれは一体どうやったらできるのでしょうか?? 無料のHP作成で使えるタグなのでしょうか? またそのタグを是非教えてほしいです。 調べてもよくわからなかったので・・・。 ちなみに <?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 lang=”ja”> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”> <title>test</title> </head> <body> <div style=”background-color:red”> </div> <div style=”background-color:blue”> </div> <div style=”background-color:green”> </div> </body> </html> というのをそのまま試しに貼り付けてみてもできませんでした・・・・。 ?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 lang=”ja”> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”> の部分の事がわからないのが原因かと…。 誰か心優しい方教えて下さい・・・。

    • ベストアンサー
    • HTML
  • XHTMLのスペース

    XHTMLは誤作動を防ぐために <meta http-equiv="expires" content="0" /> このように最後はスペースを置くと聞いたのですが、DOCTYPE,XML宣言も<?xml version="1.0" encoding="Shift_JIS"? > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" > このようにスペースを置くべきなのでしょうか? ご回答おねがいします。

  • xhtml2.0をhtmlに変換したい

    xhtml2.0をhtmlに変換したいと考えています。 ---------------- [ 共通 essay.xsl ] <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" encoding="UTF-8" /> <xsl:template match="/"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title><xsl:value-of select="html/head/title" /></title> </head> <body> <xsl:value-of select="html/head/title" /> </body> </html> </xsl:template> 15 </xsl:stylesheet> ----------------- <例1> [偽物xhtml2.xml] <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="essay.xsl" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml2.dtd"> <html xml:lang="ja"> <head> <title>偽xhtml2.0</title> <meta property="keywords" xml:lang="ja">xhtml2.0</meta> <meta property="dc:dreated" content="2008-01-06" /> </head> <body> <h>テスト</h> <p>偽xhtml2.0</p> </body> </html> --------------------------- <結果> 「偽xhtml2.0」と表示される ------------------------ 上記のように、xmlns無しで書いた、偽物xml2.0は変換できるのですが、下記の ------------------------------ <正式xhtml2.xml> <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="essay.xsl" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml2.dtd"> <html xmlns="http://www.w3.org/2002/06/xhtml2/" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2002/06/xhtml2/ http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" > <head> <title>正式xhtml2.0</title> <meta property="keywords" xml:lang="ja">xhtml2.0</meta> <meta property="dc:dreated" content="2008-01-06" /> </head> <body> <h>テスト</h> <p>正式xhtml2.0</p> </body> </html> ------ 正式な形のxhtml2.0を共通xsltで変換しようとすると、うまくいきません。名前空間あたりが怪しいと思うのですが、どうすればうまく変換できるでしょうか?

    • 締切済み
    • XML
  • 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

専門家に質問してみよう