XML 语法
XML 语法规则
Section titled “XML 语法规则”XML (Extensible Markup Language,可扩展标记语言) 有一套简单的语法规则。这些规则确保 XML 文档结构一致,使人类和软件都能轻松读取和处理。
所有 XML 元素必须有结束标签
Section titled “所有 XML 元素必须有结束标签”与 HTML 不同的是,在 HTML 中某些标签可以不闭合(例如旧版本中的 <p> 或 <li>,或者空元素如 <br>、<img>),XML 要求每个元素都有对应的结束标签。不包含内容的元素称为空元素,可以使用自闭合标签。
正确的 XML:
<message> <text>This is a paragraph.</text> <line_break/> <!-- Self-closing tag for an empty element --></message>不正确的 XML(text 缺少结束标签):
<message> <text>This is a paragraph.</message>注意:通常在 XML 文件开头看到的 XML 声明(例如 <?xml version="1.0" encoding="UTF-8"?>)是一个处理指令,而不是一个元素。它没有结束标签,不被视为文档元素树的一部分。
XML 标签区分大小写
Section titled “XML 标签区分大小写”XML 标签区分大小写字母。开始标签 <Message> 不同于 <message>。开始标签和结束标签必须使用完全相同的大小写。
不正确(大小写不匹配):
<Message>This is incorrect</message>正确:
<message>This is correct</message>提示:一种常见约定是元素和属性名使用小写,但在您的项目或标准内部保持一致性是关键。
XML 元素必须正确嵌套
Section titled “XML 元素必须正确嵌套”元素必须按正确的顺序嵌套。如果一个元素在另一个元素内部开始,它也必须在该元素内部结束。可以把它们想象成正确匹配的括号或俄罗斯套娃。
不正确的嵌套(** 在 <i> 打开之后、但在 <i> 关闭之前关闭):
<outer>**<i>This text is bold and italic**</i></outer>正确的嵌套:
<outer>**<i>This text is bold and italic</i>**</outer>在正确的示例中,<i> 元素完全在 ** 元素的边界内部打开和关闭。
XML 文档必须有一个根元素
Section titled “XML 文档必须有一个根元素”每个有效的 XML 文档必须包含且仅包含一个顶级元素,称为根元素。所有其他元素都必须是这个单一根元素的后代。它充当整个文档内容的容器。
示例结构:
<root_element> <child_element> <subchild_element>...</subchild_element> </child_element> <another_child/></root_element>XML 属性值必须加引号
Section titled “XML 属性值必须加引号”属性提供有关元素的额外信息,并出现在开始标签内。它们的取值必须始终用单引号 (’) 或双引号 (”) 括起来。
不正确(属性值 important 未加引号):
<note priority=important> <to>Alice</to> <from>Bob</from></note>正确(使用双引号):
<note priority="important"> <to>Alice</to> <from>Bob</from></note>正确(使用单引号):
<note priority='important'> <to>Alice</to> <from>Bob</from></note>提示:选择一种引号样式(单引号或双引号)并始终使用它,以提高可读性。
特殊字符的实体引用
Section titled “特殊字符的实体引用”某些字符在 XML 中具有预定义的含义。例如,小于号 < 表示标签的开始。
如果您需要将这些特殊字符作为字面文本内容或包含在属性值中,则必须使用其对应的实体引用。
这将导致 XML 解析错误:
<condition>if x < 5 then proceed</condition>要解决此问题,将 < 替换为其实体引用 <:
<condition>if x < 5 then proceed</condition>XML 中有五个预定义的实体引用:
| 实体 | 字符 | 描述 |
|---|---|---|
| < | < | 小于 |
| > | > | 大于 |
| & | & | 和号 |
| ' | ' | 撇号(单引号) |
| " | " | 引号(双引号) |
注意:虽然在元素内容中严格要求转义的只有 < 和 &,但最好也转义 > (>)。在用双引号括起来的属性值中," 必须转义为 "。在用单引号括起来的属性值中,' 必须转义为 '。始终使用实体有助于提高清晰度并防止潜在问题。
XML 中的注释
Section titled “XML 中的注释”您可以在 XML 文档中添加注释用于文档说明或澄清。语法与 HTML 相同:
<!-- 这是一个注释。注释会被 XML 解析器忽略。 -->重要提示:注释不能出现在标签内部,并且注释本身内部不允许使用序列 --(双连字符)。
空白字符处理
Section titled “空白字符处理”默认情况下,XML 解析器会保留元素内容中的空白字符(空格、制表符、换行符)。这与 HTML 浏览器不同,HTML 浏览器通常会将多个空白字符折叠成一个空格。
示例:
<message>Hello World</message>在上面的示例中,“Hello”和“World”之间的多个空格被认为是重要的。
您可以使用 xml:space 属性(例如 xml:space="preserve" 或 xml:space="default")更明确地控制空白字符处理。
不同的操作系统使用不同的字符来表示行尾(例如,Windows 使用 CR+LF,Unix/Linux/macOS 使用 LF)。XML 解析器被要求在处理之前将所有行尾标准化为一个 LF 字符(换行符,\n)。
这确保了无论 XML 文档是在哪个平台上创建的,文本内容都能得到一致的处理。
格式良好的 XML
Section titled “格式良好的 XML”遵守上述所有语法规则的 XML 文档被称为“格式良好”文档。格式良好是 XML 文档能够被 XML 工具成功解析和处理的最低要求。
把它想象成句子中的语法正确性;如果格式不良好,就无法理解其含义(结构)。