XML 元素
XML 元素
Section titled “XML 元素”一个 XML 文档是使用 XML 元素来构建结构的。
什么是 XML 元素?
Section titled “什么是 XML 元素?”一个 XML 元素由其开始标签到结束标签之间的所有内容组成,包括它们之间的内容。
一个元素可以包含:
- 文本内容
- 其他嵌套元素(子元素)
- 属性(关于元素的元数据)
- 以上几种的组合
- 没有任何内容(空元素)
一个包含各种元素的 XML 文档示例:
<?xml version="1.0" encoding="UTF-8"?><bookstore> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price currency="USD">29.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price currency="USD">39.95</price> </book></bookstore>在这个示例中:
<bookstore>是根元素(root element),包含两个<book>元素。- 每个
<book>元素都包含子元素(child elements):<title>、<author>、<year>和<price>。 <book>元素还有一个属性(attribute)category。<title>元素有一个属性lang。<price>元素有一个属性currency。<title>、<author>、<year>和<price>包含文本内容。
空 XML 元素
Section titled “空 XML 元素”没有内容的元素称为空元素(empty element)。空元素可以用两种方式表示:
- 使用开始标签后紧跟着结束标签:
<data></data>- 使用自闭合标签(更简洁):
<data/>这两种形式对于 XML 解析器是等效的。请注意,空元素仍然可以有属性:
<img src="logo.png" alt="Company Logo"/>XML 命名规则
Section titled “XML 命名规则”XML 元素和属性名称必须遵循以下规则:
- 名称区分大小写(例如,
<book>不同于<Book>)。 - 名称必须以字母(a-z, A-Z)或下划线(_)开头。
- 名称不能以序列
xml开头(或XML、Xml等)。 - 第一个字符后,名称可以包含字母、数字(0-9)、连字符(-)、下划线(_)和句点(.)。
- 名称不能包含空格。
- 冒号(:)保留用于命名空间(namespaces),不应用于常规名称。
几乎可以使用任何名称,只要它遵循这些规则。除了 xml 前缀限制外,没有保留关键字。
最佳命名实践
Section titled “最佳命名实践”虽然规则很灵活,但遵循最佳实践可以提高可读性和可维护性:
- 具有描述性: 使用清晰表明元素用途或内容的名称(例如,
<customerAddress>、<orderItem>)。 - 保持一致性: 选择一种命名约定,并在整个 XML 文档或项目中坚持使用。
- 避免歧义: 虽然允许使用连字符和句点,但请注意,如果将 XML 数据直接映射到代码对象,某些编程语言或工具可能会特殊解释它们。使用下划线(
first_name)或驼峰命名法(camelCase,如firstName)通常更安全,兼容性更广。 - 考虑可读性: 通常首选简短、有意义的名称,而不是非常长的名称(例如,
<bookTitle>而不是<theCompleteTitleOfTheBookInQuestion>)。 - 字符编码: 虽然名称中允许使用非 ASCII 字符(如 é, ö, å),但请确保您的 XML 文档声明了 UTF-8 编码(
<?xml version="1.0" encoding="UTF-8"?>),并且所有处理软件都能正确处理 UTF-8,以避免问题。
常见的命名风格
Section titled “常见的命名风格”XML 没有单一的官方命名风格,但一致性是关键。常见的风格包括:
| 风格 | 示例 | 描述 |
|---|---|---|
| 小写(lower case) | <firstname> | 所有字母都是小写。单词之间可能难以区分。 |
| 大写(UPPER CASE) | <FIRSTNAME> | 所有字母都是大写。有时用于常量或根元素。 |
| 蛇形命名法(snake_case) | <first_name> | 单词之间用下划线分隔。常见于数据库和某些编程语言。 |
| 帕斯卡命名法(PascalCase,大驼峰命名法) | <FirstName> | 每个单词都以大写字母开头。常见于面向对象编程。 |
| 驼峰命名法(camelCase,小驼峰命名法) | <firstName> | 第一个单词以小写字母开头,后续单词以大写字母开头。常见于 JavaScript 和 Java。 |
| 烤串命名法(kebab-case) | <first-name> | 单词之间用连字符分隔。常见于 HTML 自定义元素和 CSS。 |
选择一种适合您项目上下文的风格(例如,匹配数据库列名或编程语言约定),并始终如一地应用它。
XML 元素具有可扩展性
Section titled “XML 元素具有可扩展性”XML 的关键优势之一是其可扩展性。您可以添加新的元素或属性,而无需破坏处理该文档的现有应用程序。
考虑这个初始 XML 文档:
<?xml version="1.0" encoding="UTF-8"?><note> <to>Tove</to> <from>Jani</from> <body>Don't forget me this weekend!</body></note>一个应用程序可能被设计成只提取 <to>、<from> 和 <body> 元素来显示消息。
后来,XML 作者可能添加更多信息:
<?xml version="1.0" encoding="UTF-8"?><note importance="high"> <date>2023-10-27</date> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body></note>一个专门查找 <to>、<from> 和 <body> 的精心设计的应用程序仍然应该能够正常工作。它只会简单地忽略新的 <date>、<heading> 元素和 importance 属性。
这允许 XML 格式随时间演进。应用程序可以根据需要选择支持新的元素/属性,而旧的应用程序通常可以继续使用它们理解的数据。