XML(可扩展标记语言)具有一套严格的语法规则,确保 XML 文档能够正确解析、传输和存储数据。理解这些语法规则是学习和使用 XML 的基础。以下是 XML 的基本语法规则:


1. XML 文档结构

每个 XML 文档都必须符合以下基本结构:

  • 声明(Optional):XML 文档的开头可以包含一个可选的 XML 声明,指明版本号和编码格式。例如:<?xml version="1.0" encoding="UTF-8"?>
  • 根元素:XML 文档必须有一个根元素,所有其他元素都应该是根元素的子元素。根元素包含了 XML 文档的所有内容。
  • 嵌套元素:XML 文档是层次化的,元素可以包含其他元素(子元素)。

示例:

<?xml version="1.0" encoding="UTF-8"?>
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>


2. 元素的开始与结束标签

每个 XML 元素必须有一个开始标签和一个结束标签。标签名称区分大小写。

示例:

<greeting>Hello, world!</greeting>

在这个例子中,<greeting> 是开始标签,</greeting> 是结束标签,元素内容是 Hello, world!

  • 自闭合元素:某些元素不包含内容,且不需要结束标签。这些元素可以通过自闭合的方式表示,使用一个 / 在开始标签内。

示例:

<linebreak />

此元素在开始标签中自闭合,因此不需要结束标签。


3. XML 标签名称规则

  • 标签名称必须以字母(a-z 或 A-Z)或下划线(_)开始,可以包含字母、数字、下划线(_)、连字符(-)和点号(.)。
  • 标签名称区分大小写,例如 <name> 和 <Name> 是不同的标签。
  • 标签名称不能包含空格或其他特殊字符,如 &<> 等。

4. 属性

元素可以包含属性,属性为元素提供额外的描述信息。属性在开始标签中定义,格式为 name="value"

示例:

<person age="30" gender="male">
    <name>John Doe</name>
</person>

  • 属性的值必须用引号(单引号 ' 或双引号 ")括起来。
  • 属性值区分大小写。
  • 属性名称不能包含空格。

5. 文本内容

XML 元素的文本内容是元素的实际数据,通常位于开始标签和结束标签之间。文本内容可以是普通文本,也可以包含子元素。

示例:

<message>Hello, world!</message>

在这个例子中,Hello, world! 是 message 元素的文本内容。


6. 注释

XML 允许在文档中添加注释,注释不能包含 --(两个连续的减号)。注释用 <!-- 开始,用 --> 结束。

示例:

<!-- This is a comment -->
<greeting>Hello, world!</greeting>


7. 空元素(空标签)

当一个元素没有内容时,可以使用自闭合标签来表示它。自闭合标签在开始标签中包含一个 /

示例:

<br />
<linebreak />

这两个标签都没有内容,采用自闭合形式。


8. 字符转义

某些字符在 XML 中具有特殊意义,如 <>&" 和 '。这些字符不能直接在文本内容中使用,否则会导致 XML 解析错误。需要使用字符实体进行转义。

转义字符:

  • & 转义为 &amp;
  • < 转义为 &lt;
  • > 转义为 &gt;
  • " 转义为 &quot;
  • ' 转义为 &apos;

示例:

<greeting>5 &gt; 3</greeting>

在这个例子中,> 被转义为 &gt;,避免了与 XML 标签的结束符冲突。


9. 空白字符

空格、制表符(Tab)和换行符(\n)在 XML 中都是有效的,但它们通常用于格式化和缩进。除非空白字符在元素内明确作为文本内容的一部分,否则它们通常被忽略。

示例:

<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

在此示例中,所有的空白字符(如换行符和缩进)在解析过程中会被忽略。


10. 嵌套与层次结构

XML 文档的结构是树形的,每个元素都可以包含子元素。每个子元素也可以包含其他子元素,这种嵌套关系可以表示复杂的数据结构。

示例:

<company>
    <employee>
        <name>John Doe</name>
        <position>Developer</position>
    </employee>
    <employee>
        <name>Jane Smith</name>
        <position>Manager</position>
    </employee>
</company>

在此例中,<company> 是根元素,包含了多个 <employee> 元素,每个 <employee> 元素包含了 <name> 和 <position> 子元素。


总结

XML 的语法规则确保了文档的结构清晰、可读,并且可以被各种系统和工具解析和处理。遵守这些规则,尤其是元素的正确嵌套、属性的使用和转义字符的处理,对于避免解析错误至关重要。掌握 XML 的语法规则有助于构建规范、有效的 XML 文档。