web-dev-qa-db-ja.com

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

私はXMLに不慣れで、基本を理解しようとしています。下記の "XMLの学習"の行を読んでいますが、私にはまだわかりません。誰かが私にこれらの基本を明確に説明している本やウェブサイトを指すことができますか?

From XMLの学習

XML宣言は、この文書を解釈するためにXMLパーサーが必要であることをXMLプロセッサに伝えて、文書の最も一般的な特性のいくつかを記述します。

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

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

88
XML Boy

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

バイトは0から255までの数字と考えてください。文字は "a"、 "1"、 "Ä"のようなものです。使用可能なすべての文字のセットは、文字セットと呼ばれます。

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

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

たとえば、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をネイティブに使用します。

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

たとえば、ISO 8859-1では、âは1バイトの値226で表されます。 UTF-8では2バイト、195, 162です。ただし、ISO 8859-1では、195, 162Ã、¢の2文字になります。

XMLは文字の並びではなくバイトの並びであると考えてください。

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

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

ほとんどの一般的なエンコーディングはASCIIと互換性があるので、基本的なアルファベット文字とシンボルがそうである限り、宣言自体はエンコーディングが何であるかを言うのにASCII文字だけを使用することをやめます。他の場合では、パーサーは宣言のエンコーディングを試してみる必要があります。宣言が<?xmlで始まることがわかっているので、これを行う方がはるかに簡単です。

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

111
rghome

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標準 を参照してください。

20
Pavan

これがXML オプションの前文です。

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

エンコード宣言は、文書内の文字を表すのに使用されているエンコードを識別します。

XML宣言の詳細はこちら: http://msdn.Microsoft.com/ja-jp/library/ms256048.aspx =

3
robasta

誰かが私にこれらの基本を明確に説明している本やウェブサイトを指すことができますか?

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

しかし、エンコード部分はどうでしょうか。なぜそれが必要なのでしょうか。

W3Cはエンコーディングについて 説明 を提供します。

「XMLおよびHTML 4.0のドキュメント文字セットはUnicodeです(ISO 10646とも呼ばれます)。つまり、HTMLブラウザとXMLプロセッサは内部でUnicodeを使用しているかのように動作するはずです。クライアントとサーバーがエンコーディングについて合意している限り、Unicodeに変換できるエンコーディングを使用できます。」

2
O.Badr