XML技术全面解析:从基础到高级特性
立即解锁
发布时间: 2025-08-17 01:23:54 阅读量: 4 订阅数: 14 


XML编程宝典:从基础到实践的全面指南
# XML 技术全面解析:从基础到高级特性
## 1. 特殊字符与实体引用
在 XML 文档中,W3C XML 推荐标准支持对默认编码的补充。对于格式良好的 XML 文档中的特殊字符,可以通过声明的实体、Unicode 或十六进制字符引用进行引用。具体规则如下:
- 实体引用必须以与符号(&)开头。
- Unicode 字符引用以与符号和井号(&#)开头。
- 十六进制字符引用以与符号、井号和 x(&#x)开头。
- 所有实体、Unicode 和十六进制引用都以分号(;)结尾。
以下是一个简单的 XML 文档示例,展示了如何使用实体、Unicode 和十六进制引用生成版权符号((c))和注册商标符号((r)):
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rootelement SYSTEM "specialcharacters.dtd">
<rootelement>
<entityreferences>© ®</entityreferences>
<unicodereferences>© ®</unicodereferences>
<hexreferences>© ®</hexreferences>
</rootelement>
```
在这个示例中,`unicodereferences` 和 `hexreferences` 元素中的值分别是表示符号的 Unicode 和十六进制值,它们都遵循前面概述的字符引用规则。而 `entityreferences` 元素中的实体引用需要一个 DTD(文档类型定义)来支持,实体引用的值必须在 XML 文档外部定义。以下是 `specialcharacters.dtd` 文件的内容:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY copy "©">
<!ENTITY reg "®">
<!ELEMENT rootelement (entityreferences, unicodereferences, hexreferences)>
<!ELEMENT entityreferences (#PCDATA)>
<!ELEMENT hexreferences (#PCDATA)>
<!ELEMENT unicodereferences (#PCDATA)>
```
当这个 XML 文档在 Microsoft Internet Explorer 6 浏览器中渲染时,字符和实体引用会被解析,输出如下:
```xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE rootelement (View Source for full doctype...)>
<rootelement>
<entityreferences>(c) (r)</entityreferences>
<unicodereferences>(c) (r)</unicodereferences>
<hexreferences>(c) (r)</hexreferences>
</rootelement>
```
### 1.1 使用实体引用作为变量
实体引用还可以作为变量使用,并在 DTD 中与其他实体引用组合。这是一种标准化 XML 文档中某些声明和其他不可更改组件的便捷方法。例如,在 DTD 中可以创建一个名为 `copyline` 的实体引用:
```xml
<!ENTITY copy "©">
<!ENTITY copyline "© Benz Technologies, Inc, all rights reserved;">
```
当在 XML 文档中引用 `©line;` 实体时,输出将是:
```
(c) Benz Technologies, Inc, all rights reserved
```
使用这种技术可以确保 XML 文档验证对某些重要文本片段以及文档结构施加标准格式。
### 1.2 保留字符引用
由于前面定义的所有字符引用格式都包含与符号,那么如何在 XML 文档中表示与符号呢?为了处理与符号以及 XML 核心语法中的其他四个特殊字符,定义了特殊的保留字符引用。小于号和大于号(用于定义 XML 元素)以及引号(用于定义属性值)可以通过特殊的预定义字符替换来支持,无需任何实体、Unicode 或十六进制引用。引用以与符号(&)开头,以分号(;)结尾。以下是保留字符实体及其引用的表格:
| 实体引用 | 特殊字符 |
| ---- | ---- |
| & | 与符号(&) |
| ' | 撇号或单引号(‘) |
| > | 大于号(>) |
| < | 小于号(<) |
| " | 双引号(“) |
## 2. XML 1.1 特性
XML 1.1 是 W3C XML 推荐标准的增量发展版本,实际上分为两个重要的推荐标准:XML 1.1 和 XML 命名空间 1.1。大多数新特性是“幕后”增强,对大多数 XML 应用程序影响很小或没有影响。
### 2.1 新特性概述
XML 1.1 的新特性基于对不断发展的 Unicode 规范的新字符集支持。自 1998 年第一个 W3C XML 文档推荐标准发布以来,Unicode 已经扩展以容纳世界上更多的字母和字符。2000 年的 XML 推荐标准第二版在一定程度上解决了这个问题,但新的推荐标准超越了第二版,根据新的 Unicode 标准重新定义了格式良好的文档的概念。
### 2.2 定义 XML 1.1 文档
通过可选的 XML 声明中的版本号来定义 XML 1.1 文档,示例如下:
```xml
<?xml version="1.1">
```
任何未明确声明 XML 文档版本为 1.1 的文档都将被视为 XML 1.0 文档。XML 1.1 文档与 XML 1.0 文档向后兼容,但有一个例外:XML 1.1 处理器识别为格式良好的元素、属性和命名空间名称的一部分的一些新 Unicode 字符,不被 XML 1.0 文档语法规则接受。这些字符已经可以在 XML 1.0 的文本和属性值中使用,XML 1.1 正式将这些字符和字符集添加到 XML 文档的结构项中,如元素名称、属性名称和命名空间。
### 2.3 XML 1.1 字符集
XML 1.1 基于更具包容性的理念,这是对 Unicode 规范发展速度超过 XML 推荐标准更新的回应。与 XML 1.0 定义哪些字符不能包含在 XML 文档中,并将包含未定义字符的标记视为格式不佳的方法不同,XML 1.1 定义了哪些字符不能包含在格式良好的 XML 文档中,并将任何未定义的字符视为格式良好的 XML 的一部分。这使得更容易适应不断发展的 Unicode 规范,该规则适用于所有 XML 标记,包括元素、属性和命名空间。XML 1.0 文档将限于 Unicode 2.0 中定义的字符集,而 XML 1.1 文档理论上应该能够处理从 2.0 到当前的 3.2 及更高版本的任何 Unicode。
### 2.4 XML 1.1 行结束字符
XML 1.1 的另一个特性是能够处理 IBM 大型机文件格式中生成的行结束字符,这一直是在基于 ASCII 和 EBCDIC 的平台上生成和共享 XML 文档之间的一个长期问题。XML 1.1 解析器需要识别并接受 EBCDIC 行结束字符(#x85)和 Unicode 行分隔符(#x2028),并将这些值转换为 XML 1.0 的 ASCII 行结束字符之一:换行符(十进制 10,#xA)或回车符(十进制 13,#xD)。
以下是在 XML 1.0 和 XML 1.1 文档中硬编码行结束字符的示例:
- XML 1.0 文档:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<LineEndExample>An example of a hard coded
new line</LineEndExample>
```
解析后的结果:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<LineEndExample>An example of a hard coded
new line</LineEndExample>
```
- XML 1.1 文档:
```xml
<?xml version="1.1" encoding="UTF-8"?>
<LineEndExample>An example of a hard coded…IBM new line</LineEndExample>
```
解析后的结果:
```xml
<?xml version="1.1" encoding="UTF-8"?>
<LineEndExample>An example of a hard coded
IBM new line</LineEndExample>
```
### 2.5 XML 1.1 命名空间
XML 命名空间 1.0 和 1.1 推荐标准的本质区别在于能够“取消声明”先前定义的命名空间声明及其关联的前缀。这一变化主要影响 XML 解析器和开发工具的开发者,而不是普通的 XML 应用程序开发者。能够“取消声明”命名空间提供了一种更灵活和高效的方式来管理和重用命名空间及其前缀。命名空间适用于命名空间声明之上的任何嵌套元素,能够在大型 XML 文档的另一部分中删除前缀和/或重新声明它,对解析器性能有益,也为可能将相同命名空间前缀定义为不同命名空间的文档提供了解决方案。XML 1.0 文档使用 XML 命名空间 1.0 规则,而 XML 1.1 文档使用 XML 命名空间 1.1 推荐标准规则。
### 2.6 XML 1.1 参考资料
更多关于 XML 1.1 的信息可以在以下链接找到:
- XML
0
0
复制全文
相关推荐










