XML作为结构化数据存储和交换的常用格式,实体引用、注释、命名规则是编写合规XML文档的基础,这些规则直接关系到文档能否被正确解析。

XML实体引用
XML文档中,部分特殊字符有特定语法含义,如果直接在文档中使用会导致解析错误,此时需要使用实体引用来表示这些字符。常见的预定义实体引用如下:
| 特殊字符 | 实体引用 | 说明 |
|---|---|---|
| < | < | 表示小于号,避免被解析为标签开始 |
| > | > | 表示大于号,避免被解析为标签结束 |
| & | & | 表示与号,避免被解析为实体引用开始 |
| ' | ' | 表示单引号,用于属性值包含单引号时 |
| " | " | 表示双引号,用于属性值包含双引号时 |
除了预定义实体,还可以自定义实体引用,自定义实体需要在XML文档的<!DOCTYPE>声明中定义,示例如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE note [ <!ENTITY author "张三"> <!ENTITY content "这是自定义实体示例"> ]> <note> <to>李四</to> <from>&author;</from> <body>&content;</body> </note>
XML注释
XML注释用于给文档添加说明信息,不会参与文档的解析和数据处理,语法格式为<!-- 注释内容 -->。使用注释时需要注意以下规则:
- 注释不能嵌套,不能在注释内部再写<!-- -->结构,否则会导致解析错误。
- 注释不能放在XML声明之前,XML声明必须是文档的第一行内容。
- 注释不能放在标签内部,比如不能在<book<!-- 注释 -->id="1">这样的位置写注释。
- 注释内容中不能出现两个连续的连字符--,否则会被解析器误认为是注释结束标记。
注释的使用示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是学生信息列表的根节点 -->
<students>
<student>
<name>小明</name>
<age>18</age>
</student>
</students>XML命名规则
XML的标签名、属性名都需要遵循统一的命名规则,不符合规则的命名会导致文档解析失败,具体规则如下:
- 名称可以包含字母、数字、下划线_、连字符-、点号.,不能包含空格。
- 名称不能以数字或者标点符号开头,必须以字母或者下划线开头。
- 名称不能以xml(包括XML、Xml等大小写组合)开头,这是XML规范保留的前缀。
- 名称不能包含冒号:,冒号在XML中用于命名空间分隔,普通名称不建议使用。
- 名称尽量有意义,避免使用无意义的字符组合,方便后续维护和理解。
符合命名规则的标签和属性示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<user_info>
<user-name>小红</user-name>
<user.age>20</user.age>
<user id="1001" reg_date="2024-01-01">
<email>test@ipipp.com</email>
</user>
</user_info>只要严格遵循上述实体引用、注释、命名规则,就能编写出符合XML规范、可被各类解析器正常处理的XML文档,减少开发过程中的格式错误问题。