XML指南——XML语法
XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,其核心优势在于结构清晰、可读性强,且支持自定义标签。掌握XML的语法规则是正确使用XML的基础,本文将详细介绍XML的核心语法要求。
XML文档的基本结构
一个标准的XML文档由声明、元素、属性、注释等部分组成,其中文档声明是可选但推荐添加的部分,用于说明XML的版本和编码方式。以下是一个简单的XML文档示例:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是一个学生信息记录的XML文档 -->
<students>
<student id="1001">
<name>张三</name>
<age>20</age>
<major>计算机科学</major>
</student>
<student id="1002">
<name>李四</name>
<age>21</age>
<major>软件工程</major>
</student>
</students>上述示例中,第一行是XML声明,指定了版本为1.0,编码为UTF-8;第二行是注释内容,用于说明文档用途;<students>是根元素,所有其他元素都必须包含在根元素内部;<student>是子元素,通过id属性区分不同的学生记录,每个<student>元素下又包含<name>、<age>、<major>三个子元素存储具体信息。
XML语法核心规则
1. 标签必须正确闭合
XML要求所有标签都必须成对出现,即有开始标签就必须有对应的结束标签。开始标签格式为<标签名>,结束标签格式为</标签名>。如果标签没有内容,也可以使用自闭合形式<标签名/>,例如<img src="test.jpg"/>。
错误示例:<name>张三(缺少结束标签)
正确示例:<name>张三</name> 或 <name/>
2. 标签必须正确嵌套
XML标签的嵌套必须遵循顺序,不能交叉嵌套。也就是说,内层标签必须完全在外层标签内部闭合,不能出现外层标签未闭合就先闭合内层标签的情况。
错误示例:<student><name>张三</student></name>(标签交叉嵌套)
正确示例:<student><name>张三</name></student>
3. 根元素唯一
一个XML文档必须有且仅有一个根元素,所有其他元素都必须是根元素的后代,不能直接出现在根元素之外。上述示例中的<students>就是根元素,两个<student>元素都包含在它内部。
4. 属性值必须用引号包裹
XML元素的属性用于提供元素的额外信息,属性值必须使用单引号或双引号包裹,不能省略引号。属性通常写在开始标签中,格式为<标签名 属性名="属性值">。
错误示例:<student id=1001>(属性值未加引号)
正确示例:<student id="1001"> 或 <student id='1001'>
5. 大小写敏感
XML是大小写敏感的语言,也就是说<Name>和<name>是两个不同的标签,不能混用。建议在编写XML时保持标签大小写统一,避免混淆。
6. 特殊字符处理
XML中有五个预定义的实体引用,用于处理特殊字符,避免这些字符被解析器误认为是标签的一部分:
| 特殊字符 | 实体引用 | 说明 |
|---|---|---|
| < | < | 小于号,用于转义标签开始符号 |
| > | > | 大于号,用于转义标签结束符号 |
| & | & | 和号,用于转义实体引用开始符号 |
| ' | ' | 单引号 |
| " | " | 双引号 |
例如,如果要在XML元素中存储内容<20>,不能直接写<age><20></age>,而需要转义为<age><20></age>,否则解析器会把<20>当成标签处理导致语法错误。
7. 注释规则
XML的注释格式为<!-- 注释内容 -->,注释内容不能包含--,也不能嵌套注释。注释可以出现在XML文档的任何位置,除了文档声明之前。
错误示例:<!-- 这是--注释 -->(包含--)
正确示例:<!-- 这是学生信息注释 -->
XML命名规则
XML标签和属性的命名需要遵循以下规则:
- 名称可以包含字母、数字、下划线、连字符和点号
- 名称不能以数字或标点符号开头
- 名称不能以xml(或XML、Xml等大小写组合)开头,这是XML的保留前缀
- 名称不能包含空格
符合规则的标签名示例:<student_name>、<student-age>、<student.id>
不符合规则的标签名示例:<1student>(以数字开头)、<xml-data>(以xml开头)、<student name>(包含空格)
XML与HTML的语法差异
很多开发者容易混淆XML和HTML的语法,两者的核心差异如下:
- HTML的标签是预定义的,XML的标签可以自定义
- HTML不要求标签严格闭合(部分标签可以省略结束标签),XML要求所有标签必须正确闭合
- HTML对大小写不敏感,XML大小写敏感
- HTML用于展示数据,XML用于存储和传输数据
掌握上述XML语法规则后,就可以编写出结构规范、可被解析器正确解析的XML文档,为后续的数据存储、传输和解析工作打下基础。