XML 元素

XML 文档包含 XML 元素。

什么是 XML 元素?

XML 元素指的是从(包括)元素的开始标签到(包括)元素的结束标记的所有内容。

<price>29.99</price>

一个元素可以包含:

  • 文本
  • 属性
  • 其他元素
  • 或以上的混合
<bookstore>
<book category="美食">
  <title lang="zh">雅舍谈吃</title>
  <author>梁实秋</author>
  <press>江苏文艺出版社</press>
  <year>2013</year>
  <price>35</price>
  <ISBN>9787539962771</ISBN>
</book>

<book category="儿童">
  <title lang="zh">了不起的狐狸爸爸</title>
  <author>罗尔德·达尔</author>
  <translator>代维</translator>
  <press>明天出版社</press>
  <year>2009</year>
  <price>10</price>
  <ISBN>9787533259563</ISBN>
</book>
</bookstore>

在上面的例子中:

<title>、<author>、<year> 和 <price> 等元素拥有文本内容,因为它们包含文本(如 29.99)。

<bookstore> 和 <book> 拥有元素内容,因为它们包含元素。

<book> 有一个属性 (例如:category="儿童")。

空 XML 元素

没有内容的元素被称为空元素。

在 XML 中,您可以像这样指示空元素:

<element></element>

您还可以使用所谓的自关闭标签:

<element />

这两种形式在 XML 软件(阅读器、解析器、浏览器)中产生相同的结果。

提示:空元素也可以有属性。

XML 命名规则

XML 元素必须遵循以下命名规则:

  • 元素名称区分大小写
  • 元素名称必须以字母或下划线开头
  • 元素名称不能以字母 xml(或 XML、Xml 等)开头
  • 元素名称可以包含字母、数字、连字符、下划线和句点
  • 元素名称不能包含空格

可使用任何名称,没有保留字。(xml 除外)。

最佳命名实践

名称应该有描述性,比如:<person>、<firstname>、<lastname>。

名称应该简短,比如:<book_title>,而不是这样:<the_title_of_the_book>。

避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为您想要从 "first" 中减去 "name"。

避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。

避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。

非英语的字母比如 éòá 也是合法的 XML 元素名,不过需要留意当软件开发商不支持这些字符时可能出现的问题。

命名约定

XML 元素的一些常用命名约定:

样式 例子 描述
小写 <firstname> 所有字母小写
大写 <FIRSTNAME> 所有字母大写
蛇形 <first_name> 下划线分隔单词(常用于 SQL 数据库)
帕斯卡 <FirstName> 每个单词的第一个字母大写(C 程序员常用)
驼峰 <firstName> 除第一个之外的每个单词的首字母大写(常用于 JavaScript)

提示:选定您的命名风格,并保持一致!

XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。

有一个实用的经验:使用数据库的名称规则来命名 XML 文档中的元素。

XML 元素是可扩展的

XML 元素是可扩展的,以携带更多的信息。

请看下面这个 XML 例子:

<note>
  <to>George</to>
  <from>John</from>
  <body>Don't forget the meeting!</body>
</note>

让我们设想一下,我们创建了一个应用程序,可将 <to>、<from> 以及 <body> 元素提取出来,并产生以下的输出:

MESSAGE
To: George
From: John

Don't forget the meeting!

想象一下,之后这个 XML 文档作者又向这个文档添加了一些额外的信息:

<note>
  <date>2008-01-10</date>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

那么这个应用程序会中断或崩溃吗?

不会。这个应用程序仍然可以找到 XML 文档中的 <to>、<from> 以及 <body> 元素,并产生同样的输出。

XML 的优势之一,就是可以经常在不中断应用程序的情况进行扩展。