の意味-<?xml version =“ 1.0” encoding =“ utf-8”?>


102

私はXMLを初めて使用し、基本を理解しようとしています。以下の「XMLの学習」の行を読みましたが、それでもはっきりしません。これらの基本を明確に説明している本やウェブサイトを誰かに教えてもらえますか?

学習XMLから:

XML宣言は、ドキュメントの最も一般的なプロパティのいくつかを説明し、このドキュメントを解釈するにはXMLパーサーが必要であることをXMLプロセッサに伝えます。

これは何を意味するのでしょうか?

私はそのxml version部分を理解しています-docとdocのユーザーの両方が同じバージョンのXMLで「話す」必要があります。しかし、そのencoding部分はどうですか?なぜそれが必要なのですか?



回答:


125

「エンコーディング」属性を理解するには、バイト文字の違いを理解する必要があります

バイトは0〜255の数値と考えてください。一方、文字は「a」、「1」、「Ä」のようなものです。使用可能なすべての文字のセットは、文字セットと呼ばます。

各文字には、それを表すために使用される1バイト以上のシーケンスがあります。ただし、バイトの正確な数と値は、使用するエンコードによって異なり、さまざまなエンコードが存在します。

ほとんどのエンコーディングは、ASCIIと呼ばれる古い文字セットとエンコーディングに基づいています。ASCIIは、文字ごとに1バイト(実際は7ビットのみ)で、米国英語で使用される多くの一般的な文字を含む128文字を含みます。

たとえば、ASCII文字セットの6文字は、60〜65の値で表されます。

Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║  Character   ║
╠══════╬══════════════║
║  60  ║      <       ║
║  61  ║      =       ║
║  62  ║      >       ║
║  63  ║      ?       ║
║  64  ║      @       ║
║  65  ║      A       ║
╚══════╩══════════════╝

フルASCIIセットでは、使用される最小値はゼロであり、最大値は127です(これらは両方とも非表示の制御文字です)。

ただし、基本的なASCIIが提供するよりも多くの文字(たとえば、アクセント付きの文字、通貨記号、グラフィックシンボルなど)が必要になると、ASCIIは適さなくなり、より広範なものが必要になります。さらに多くの文字(別の文字セット)が必要であり、128文字ではすべての文字を収めるには不十分であるため、別のエンコーディングが必要です。一部のエンコーディングは、1バイト(256文字)または最大6バイトを提供します。

時間の経過とともに、多くのエンコーディングが作成されました。Windowsの世界にはCP1252、つまりISO-8859-1がありますが、LinuxユーザーはUTF-8を好む傾向があります。JavaはUTF-16をネイティブで使用します。

あるエンコーディングの文字のバイト値のシーケンスは、別のエンコーディングの完全に異なる文字を表す場合もあれば、無効な場合もあります。

たとえば、ISO 8859-1では、âは1バイトの値226で表されますが、UTF-8では2バイトです195, 162。しかし、中にISO 8859-1195, 1622つの文字、だろう、â

XMLを一連の文字ではなく一連のバイトと考えてください。

XMLを受信するシステムがバイトを見ると想像してください195, 162。これらの文字がどのようにしてわかるのですか?

システムがそれらのバイトを実際の文字として解釈する(そしてそれらを表示するか、別のエンコーディングに変換する)ためには、XMLで使用されているエンコーディングを知っている必要があります。

ほとんどの一般的なエンコーディングはASCIIと互換性があるため、基本的なアルファベット文字と記号に関する限り、これらの場合、宣言自体は、ASCII文字のみを使用してエンコーディングとは何かを回避できます。他の場合では、パーサーは宣言のエンコーディングを理解する必要があります。それは宣言が始まることを知っているので、<?xmlこれを行うのはずっと簡単です。

最後に、version属性はXMLバージョンを指定します。現時点では2つありますWikipediaのXMLバージョンを参照してください。バージョン間にわずかな違いがあるため、XMLパーサーは何を処理しているかを知る必要があります。ほとんどの場合(英語の場合)とにかくスピーカー)、バージョン1.0で十分です。


9
「ヘッダー自体はASCIIエンコーディングを使用しています」:XML宣言を参照していると思います。残りのドキュメントと同様にエンコードされます。UTF-16など。XMLプロセッサーは、エンコード仕様を読み取ることができるまで、いくつかの試行を行うことができます。
Tom Blodget 2014

1
プリアンブル/プロローグはUTF-8でエンコードされ、残りのバイト(実際のXMLドキュメント)を正しいエンコードに変換する方法をパーサーに指示するという印象を受けました。また違う!:-)
ケリービアード

5
ここで提案読書です:joelonsoftware.com/2003/10/08/...
Sudipバンダリ

26

すべてのXMLドキュメントでXML宣言が必要なわけではありません。ただし、XHTMLドキュメントの作成者は、すべてのドキュメントでXML宣言を使用することを強くお勧めします。このような宣言は、ドキュメントの文字エンコーディングがデフォルトのUTF-8またはUTF-16以外であり、エンコーディングが上位レベルのプロトコルによって決定されなかった場合に必要です。XHTMLドキュメントの例を次に示します。この例では、XML宣言が含まれています。

<?xml version="1.0" encoding="UTF-8"?>
 <!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="en" lang="en">
  <head>
    <title>Virtual Library</title>
  </head>
  <body>
    <p>Moved to <a href="http://example.org/">example.org</a>.</p>
 </body>
</html>

XMLについては、W3標準を参照してください。


4
そのxmlはxhtmlにリンクしています。xml w3.org/TR/xmlにリンクするつもりですか、それともリンクにxhtmlという名前を付けるつもりですか?
jrwren 2013年

xhtmlはxmlドキュメントを参照します。整形式のxmlの場合、ドキュメントタイプ宣言は必要ありません。
xvan 2016年

「XMLのW3標準を参照してください。」IOW、長いドキュメントであるfaqing faqを読んでください。なぜ人々は「何」を単に説明できないのですか?あり、なぜそれがあるのですか?
Blessed Geek

3

これは、XML オプションのプリアンブルです。

  • version="1.0" これは、このファイルが準拠するXML標準であることを意味します
  • encoding="utf-8" ファイルがUTF-8 Unicodeエンコーディングを使用してエンコードされていることを意味します


2

これらの基本を明確に説明している本やウェブサイトを誰かに教えてもらえますか?

このXMLチュートリアルを例で確認できます

しかし、エンコーディング部分はどうですか?なぜそれが必要なのですか?

W3Cはエンコーディングに関する説明を提供します:

「XMLおよびHTML 4.0のドキュメント文字セットはUnicode(別名ISO 10646)です。これは、HTMLブラウザーとXMLプロセッサーが内部でUnicodeを使用するかのように動作する必要があることを意味します。ただし、ドキュメントをUnicodeで送信する必要があるわけではありません。クライアントとサーバーがエンコーディングに同意している限り、Unicodeに変換できる任意のエンコーディングを使用できます... "


-1

見出しマップのXML宣言は、次のもので構成されています。

The version number, ?xml version="1.0"?. 

これは必須です。XMLの将来のバージョンでは数が変わる可能性がありますが、1.0が現在のバージョンです。

エンコーディング宣言、

encoding="UTF-8"?

これはオプションです。使用する場合、エンコード宣言は、XML宣言のバージョン情報の直後に配置する必要があり、既存の文字エンコードを表す値を含める必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.