含义 – <?xml version =“1.0”encoding =“utf-8”?>

我是XML新手,我想了解基础知识。 我在“学习XML”中阅读了下面的内容,但是我仍然不清楚。 有人可以指向我的书或网站,清楚地解释这些基本知识?

学习XML – XML声明描述了文档的一些最一般的属性,告诉XML处理器它需要一个XMLparsing器来解释这个文档。 这是什么意思 ?

我理解“xml版本部分” – 文档的doc和用户都应该在相同版本的XML中“交谈”。 但是编码部分呢? 为什么这是必要的?

要理解“编码”属性,你必须理解字节字符之间的区别。

将字节看作0到255之间的数字,而字符是诸如“a”,“1”和“Ä”之类的字符。 所有可用字符的集合称为字符集

每个字符都有一个或多个字节的序列用来表示它; 然而,字节的确切数量和值取决于使用的编码,并且有许多不同的编码。

大多数编码都是基于旧的字符集和编码称为ASCII,每个字符(实际上只有7位)是一个字节,包含128个字符,包括美国英语中使用的许多常用字符。

例如,这里是由ASCII值60到65表示的6个字符。

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

在完整的ASCII集中,使用的最低值是零,最高值是127(这两个都是隐藏的控制字符)。

但是,一旦你开始需要比基本的ASCII提供的字符更多的字符(例如,带有重音符号,货币符号,graphics符号等的字母),ASCII就不适用了,你需要更多的东西。 你需要更多的字符(一个不同的字符集),你需要一个不同的编码,128个字符是不足以适应所有的字符。一些编码提供一个字节(256个字符)或多达六个字节。

随着时间的推移,很多编码已经创build。 在Windows世界中,有CP1252或ISO-8859-1,而Linux用户倾向于支持UTF-8。 Java本身使用UTF-16。

一种编码中字符的一个字节值序列可能代表另一种编码中完全不同的字符,甚至可能是无效的。

例如,在ISO 8859-1中由值226的一个字节表示,而在UTF-8中则为两个字节: 195, 162 。 然而,在ISO 8859-1中195, 162将是两个字符, Ã,¢

将XML看作不是字符序列,而是字节序列。

想象一下,接收XML的系统看到字节195, 162 。 它如何知道这些是什么字符?

为了使系统将这些字节解释为实际字符(并将其显示或转换为其他编码),需要知道XML中使用的编码。

由于大多数常见的编码与ASCII兼容,就基本的字母字符和符号而言,在这些情况下,声明本身可以仅使用ASCII字符来说明编码是什么。 在其他情况下,parsing器必须尝试找出声明的编码。 既然它知道声明以<?xml开始,那么这样做要容易得多。

最后, version属性指定了XML版本,其中有两个版本 (请参阅Wikipedia XML版本),版本之间略有不同,所以XMLparsing器需要知道它处理的内容。不pipe怎么说英语的人),版本1.0就足够了。

所有XML文档中都不需要XML声明; 但强烈build议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> 

请参阅W3的XML标准 。

编码声明标识哪个编码用于表示文档中的字符。

更多关于这里的XML声明 : http : //msdn.microsoft.com/en-us/library/ms256048.aspx

这是XML 可选的序言。

  • version="1.0"表示这是该文件符合的XML标准
  • encoding="utf-8"表示文件使用UTF-8 Unicode编码进行编码

有人可以指向我的书或网站,清楚地解释这些基本知识?

你可以查看这个教程 。

但是编码部分呢? 为什么这是必要的?

W3C提供关于编码的解释 :

“XML和HTML 4.0的文档字符集是Unicode(又名ISO 10646),这意味着HTML浏览器和XML处理器应该像在内部使用Unicode一样工作,但这并不意味着文档必须以Unicode格式传输。只要客户端和服务器对编码达成一致,就可以使用任何可以转换为Unicode的编码。“

文档图中的XML声明包含以下内容:

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

这是强制性的。 虽然这个数字可能会在未来版本的XML中发生变化,但是1.0是最新的版本。

编码声明,

 encoding="UTF-8"? 

这是可选的。 如果使用,则编码声明必须紧跟在XML声明中的版本信息之后,并且必须包含表示现有字符编码的值。