XML*_*Boy 91 xml character-encoding xml-encoding xml-declaration
我是XML的新手,我正在努力理解基础知识.我在"学习XML"中读到了以下这一行,但对我来说仍然不太清楚.有人能指出我的书或网站,清楚地解释这些基础知识吗?
从学习XML:
XML声明描述了文档的一些最常见的属性,告诉XML处理器它需要一个XML解析器来解释这个文档.
这是什么意思?
我理解这个xml version
部分 - doc的doc和user都应该在同一版本的XML中"讨论".但那encoding
部分呢?为什么这有必要?
rgh*_*ome 114
要理解"encoding"属性,您必须了解字节和字符之间的区别.
将字节视为0到255之间的数字,而字符则是"a","1"和"Ä"之类的字符.可用的所有字符集称为字符集.
每个字符都有一个或多个字节的序列,用于表示它; 但是,字节的确切数量和值取决于所使用的编码,并且有许多不同的编码.
大多数编码都基于一个旧的字符集和称为ASCII的编码,每个字符是一个字节(实际上只有7位),包含128个字符,包括美国英语中使用的许多常用字符.
例如,ASCII字符集中有6个字符,由值60到65表示.
Extract of ASCII Table 60-65
???????????????????????
? Byte ? Character ?
???????????????????????
? 60 ? < ?
? 61 ? = ?
? 62 ? > ?
? 63 ? ? ?
? 64 ? @ ?
? 65 ? A ?
???????????????????????
Run Code Online (Sandbox Code Playgroud)
在完整的ASCII集中,使用的最低值为零,最高值为127(这两个都是隐藏的控制字符).
但是,一旦开始需要比基本ASCII提供的字符更多的字符(例如,带有重音符号,货币符号,图形符号等的字母),ASCII不适合,您需要更广泛的内容.您需要更多字符(不同的字符集),并且您需要不同的编码,因为128个字符不足以容纳所有字符.有些编码提供一个字节(256个字符)或最多六个字节.
随着时间的推移,已经创建了许多编码.在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字符来说明编码是什么.在其他情况下,解析器必须尝试找出声明的编码.因为它知道声明开始,<?xml
所以这样做要容易得多.
最后,该version
属性指定了XML版本,目前有两个版本(参见Wikipedia XML版本.版本之间存在细微差别,因此XML解析器需要知道它处理的内容.在大多数情况下(英文版)无论如何,扬声器1.0版就足够了.
Pav*_*van 21
所有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>
Run Code Online (Sandbox Code Playgroud)
请参阅W3的XML标准.