我是XML的新手,我试图了解基础知识。我在“学习XML”中阅读了下面的行,但是对我来说仍然不清楚。有人可以指向我清楚说明这些基础的书或网站吗?
通过学习XML:
XML声明描述了文档的一些最常规属性,告诉XML处理器它需要XML解析器来解释该文档。
这是什么意思?
我了解这一xml version
部分-文档和文档用户都应该在相同版本的XML中“交谈”。但是那encoding
部分呢?为什么有必要?
我是XML的新手,我试图了解基础知识。我在“学习XML”中阅读了下面的行,但是对我来说仍然不清楚。有人可以指向我清楚说明这些基础的书或网站吗?
通过学习XML:
XML声明描述了文档的一些最常规属性,告诉XML处理器它需要XML解析器来解释该文档。
这是什么意思?
我了解这一xml version
部分-文档和文档用户都应该在相同版本的XML中“交谈”。但是那encoding
部分呢?为什么有必要?
Answers:
要了解“ encoding”属性,您必须了解字节和字符之间的区别。
可以将字节视为介于0到255之间的数字,而字符是诸如“ a”,“ 1”和“Ä”之类的字符。可用的所有字符集称为字符集。
每个字符都有一个或多个用于表示它的字节序列。但是,字节的确切数量和值取决于所使用的编码,并且有许多不同的编码。
大多数编码基于旧字符集和称为ASCII的编码,ASCII是每个字符一个字节(实际上只有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个字符不足以容纳所有字符。某些编码提供一个字节(256个字符)或最多六个字节。
随着时间的流逝,已经创建了许多编码。在Windows世界中,有CP1252或ISO-8859-1,而Linux用户则倾向于使用UTF-8。Java本机使用UTF-16。
一种编码中字符的一个字节值序列可能代表另一种编码中的完全不同的字符,甚至可能无效。
例如,在ISO 8859-1中,â由一个字节的value表示226
,而在UTF-8中则由两个字节表示:195, 162
。但是,在ISO 8859-1中,195, 162
将是两个字符Ã,¢。
将XML视为不是字符序列而是字节序列。
想象一下,接收XML的系统看到了字节195, 162
。它怎么知道这些是什么字符?
为了使系统将这些字节解释为实际字符(并显示它们或将它们转换为另一种编码),它需要知道XML中使用的编码。
由于大多数常见的编码都与ASCII兼容,因此就基本字母字符和符号而言,在这种情况下,仅使用ASCII字符来说明编码是什么,声明本身就可以避免。在其他情况下,解析器必须尝试找出声明的编码。因为它知道声明以<?xml
它开头,所以这样做要容易得多。
最后,该version
属性指定XML版本,目前有两个版本(请参阅Wikipedia XML版本。版本之间存在细微差异,因此XML解析器需要知道它要处理的内容。在大多数情况下(英语)扬声器),那么1.0版就足够了。
并非所有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>
请参考W3 XML标准。
编码声明标识使用哪种编码来表示文档中的字符。
有关XML声明的更多信息,请访问:http : //msdn.microsoft.com/zh-cn/library/ms256048.aspx