XML全称为可扩展标记语言,它的设计目标是传输和存储数据,而不是显示数据,和HTML有着不同的应用场景。XML的语法有严格的规范要求,只有符合规范的文档才能被解析器正确识别和处理。
XML文档声明
一个标准的XML文档开头通常需要包含文档声明,用来说明XML的版本和编码信息。文档声明需要放在文档的第一行,前面不能有其他内容。
文档声明的基本格式如下:
<?xml version="1.0" encoding="UTF-8"?>
其中version属性是必填的,目前主流版本是1.0;encoding属性用来指定文档的字符编码,常用的是UTF-8,避免中文出现乱码问题。
XML标签规则
XML的标签是自定义命名的,但是需要遵循以下规则:
- 标签必须成对出现,有开始标签就要有对应的结束标签,比如<user>是开始标签,</user>是结束标签
- 标签名区分大小写,<User>和<user>是两个不同的标签
- 标签名不能以数字或标点符号开头,不能包含空格
- 如果没有内容,可以使用自闭合标签,比如<br/>
下面是一个包含嵌套标签的XML示例:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="1">
<name>张三</name>
<age>20</age>
<score>95</score>
</student>
<student id="2">
<name>李四</name>
<age>21</age>
<score>88</score>
</student>
</students>
XML属性使用
XML标签可以包含属性,属性用来提供标签的额外信息,属性值必须用引号包裹,单引号或者双引号都可以,但是要统一。
比如上面的示例中,student标签的id就是属性,用来唯一标识每个学生。属性不能重复出现在同一个标签中,也不能包含多个值。
XML注释写法
XML的注释语法和HTML类似,注释内容不会被解析器处理,用来给开发者添加说明。
注释的格式如下:
<!-- 这是XML注释,用来说明学生信息列表 -->
需要注意注释不能嵌套,也不能放在文档声明的前面。
XML实体引用
XML中有一些特殊字符不能直接出现在内容中,需要使用实体引用来表示,常见的实体引用如下:
| 特殊字符 | 实体引用 | 说明 |
|---|---|---|
| < | < | 小于号 |
| > | > | 大于号 |
| & | & | 和号 |
| ' | ' | 单引号 |
| " | " | 双引号 |
比如如果内容中要写a < b,就需要写成a < b,否则解析器会把<当成标签的开始,导致语法错误。
XML命名空间
当XML文档中使用了多个不同来源的标签,可能会出现标签名冲突的问题,这时候可以使用命名空间来区分。
命名空间通过xmlns属性来定义,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:stu="http://ipipp.com/student" xmlns:course="http://ipipp.com/course">
<stu:student>
<stu:name>张三</stu:name>
</stu:student>
<course:info>
<course:name>数学</course:name>
</course:info>
</root>
这里stu和course是命名空间的前缀,对应不同的命名空间地址,这样即使两个命名空间下都有name标签,也不会产生冲突。