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 的优势之一,就是可以经常在不中断应用程序的情况进行扩展。