XML 元素
XML 文档包含 XML 元素。
什么是 XML 元素?
XML 元素是从(包括)元素的开始标签到(包括)元素的结束标签之间的所有内容。
<price>29.99</price>
元素可以包含
- text
- attributes
- 其他元素
- 或上述内容的混合
<bookstore>
<book category="children">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
在上面的例子中
<title>、<author>、<year> 和 <price> 具有文本内容,因为它们包含文本(如 29.99)。
<bookstore> 和 <book> 具有元素内容,因为它们包含元素。
<book> 具有一个属性 (category="children")。
空 XML 元素
没有内容(content)的元素称为空元素。
在 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> | 所有字母大写 |
Snake case (蛇形命名法) | <first_name> | 下划线分隔单词(在 SQL 数据库中常用) |
Pascal case (帕斯卡命名法) | <FirstName> | 每个单词的首字母大写(C 程序员常用) |
Camel case (驼峰命名法) | <firstName> | 除了第一个单词外,每个单词的首字母大写(JavaScript 中常用) |
提示! 选择您的命名风格,并保持一致!
XML 文档通常有相应的数据库。一种常见的做法是为 XML 元素使用数据库的命名规则。
XML 元素是可扩展的
XML 元素可以扩展以携带更多信息。
查看以下 XML 示例
<note>
<to>Tove</to>
<from>Jani</from>
<body>Don't forget me this weekend!</body>
</note>
让我们设想我们创建了一个应用程序,它从 XML 文档中提取 <to>、<from> 和 <body> 元素来生成以下输出
To: Tove
From: Jani
这个周末别忘了我!
假设 XML 文档的作者向其中添加了一些额外信息
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
应用程序应该会中断或崩溃吗?
不。应用程序仍然应该能够找到 XML 文档中的 <to>、<from> 和 <body> 元素,并产生相同的输出。
这是 XML 的优点之一。它可以在不破坏应用程序的情况下进行扩展。