XML指南 | AI生成和翻译
好的,让我们深入了解关于 XML(可扩展标记语言)的全面指南,涵盖其规范、<sequence> 元素的工作原理以及 minOccurs 和 maxOccurs 的含义。
XML 完整指南
什么是 XML?
XML 是一种用于承载数据的标记语言。它既是人类可读的,也是机器可读的。其主要目的是对数据进行结构化、存储和传输。与旨在显示数据的 HTML 不同,XML 侧重于描述数据本身。
XML 的主要特性:
- 可扩展: 您可以定义自己的标签来描述数据。
- 自描述性: 使用的标签描述了数据的含义。
- 层次结构: XML 文档具有树状结构,包含单个根元素。
- 平台无关: 任何理解 XML 格式的系统都可以处理 XML。
- 基于文本: XML 文档是纯文本文件,易于创建、读取和编辑。
- 格式良好: XML 文档必须遵守严格的语法规则才能被视为格式良好。
核心 XML 概念:
- 元素: XML 文档的基本构建块。它们由开始和结束标签定义(例如
<book>、</book>)。元素可以包含文本内容、其他元素或两者的混合。 - 属性: 提供有关元素的附加信息。它们出现在开始标签内,由名称-值对组成(例如
<book genre="fiction">)。 - 标签: 括在尖括号 (
<>) 中的关键字。开始标签标记元素的开始,结束标签(带正斜杠)标记元素的结束。 - 根元素: 每个 XML 文档必须有一个单一的顶级元素,包含所有其他元素。
- 嵌套元素: 元素可以嵌套在其他元素内,以创建层次结构。
- 空元素: 没有内容的元素可以用单个标签表示(例如
<br />),也可以用开始和结束标签表示,中间没有任何内容(<br></br>)。 - XML 声明(可选但推荐): XML 文档的第一行可以是 XML 声明,用于指定 XML 版本和编码(例如
<?xml version="1.0" encoding="UTF-8"?>)。 - 注释: 用于在 XML 文档中添加解释性说明。它们包含在 `` 中。
- 实体: 表示特殊字符或可重用的文本块。预定义实体包括
<(<)、>(>)、&(&)、'(‘) 和"(“)。
XML 规范:
万维网联盟 (W3C) 维护 XML 及相关技术的规范。一些关键的 XML 规范包括:
- XML 1.0(和 XML 1.1): 定义 XML 文档语法和结构的核心规范。XML 1.0 是最广泛采用的版本。
- XML 模式 (XSD): 一种用于定义 XML 文档结构和数据类型的语言。它提供了比文档类型定义 (DTD) 更强大、更具表现力的 XML 验证方式。
- 文档类型定义 (DTD): 一种较旧的模式语言,用于定义 XML 文档的结构。虽然有时仍会遇到,但通常更推荐使用具有高级功能的 XSD。
- XPath: 一种用于查询和选择 XML 文档中节点的语言。
- XSLT(可扩展样式表语言转换): 一种用于将 XML 文档转换为其他格式(例如 HTML、纯文本、其他 XML 格式)的语言。
- XML 命名空间: 提供了一种在组合来自不同来源的 XML 文档时避免命名冲突的方法。
XML 模式 (XSD) 与结构定义:
XML 模式对于定义 XML 文档的有效结构和内容至关重要。它允许您指定:
- 文档中可以出现的元素。
- 元素可以具有的属性。
- 父元素内子元素的顺序和数量。
- 元素和属性的数据类型。
- 对元素和属性值的约束。
XML 模式中的 <sequence>:
<sequence> 元素是 XML 模式中复杂类型定义内使用的组合器。它表示其中的子元素必须按照指定的顺序出现。
语法:
<xs:complexType name="TypeName">
<xs:sequence>
<xs:element name="element1" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="element2" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="element3" type="xs:date" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
在此示例中,任何符合 TypeName 复杂类型的 XML 元素必须具有:
- 一个
<element1>元素(字符串类型),恰好出现一次。 - 零个或多个
<element2>元素(整数类型),在<element1>之后按顺序出现。 - 一个
<element3>元素(日期类型),在所有<element2>元素之后恰好出现一次。
minOccurs 和 maxOccurs 属性:
minOccurs 和 maxOccurs 属性用于 XML 模式中的元素声明内(通常在 <sequence>、<choice> 或 <all> 组合器内),以指定元素可以出现的最小和最大次数。
minOccurs:- 指定元素必须出现的最小次数。
- 默认值为
1。 - 值为
0表示该元素是可选的。 - 一个正整数表示所需的最小出现次数。
maxOccurs:- 指定元素可以出现的最大次数。
- 默认值为
1。 - 一个正整数表示允许的最大出现次数。
- 值
unbounded表示该元素可以出现任意次数(如果minOccurs为 0,则为零次或多次;如果minOccurs为 1,则为一次或多次,等等)。
Sequence 如何与 minOccurs 和 maxOccurs 协同工作:
当元素位于 <sequence> 内时,每个单独元素上的 minOccurs 和 maxOccurs 属性定义了在序列中该特定位置该特定元素允许的出现次数。XML 实例文档中必须保持 <sequence> 中定义的元素的顺序。
示例:
考虑以下 XML 模式片段:
<xs:complexType name="OrderType">
<xs:sequence>
<xs:element name="orderId" type="xs:ID" minOccurs="1" maxOccurs="1"/>
<xs:element name="customer" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="item" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="orderDate" type="xs:date" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
符合此模式的 XML 文档将具有以下结构:
- 恰好一个
<orderId>元素。 - 恰好一个
<customer>元素,紧接在<orderId>之后出现。 - 零个或多个
<item>元素,在<customer>之后按顺序出现。 - 恰好一个
<orderDate>元素,在所有<item>元素之后出现。
有效的 XML 实例:
<order>
<orderId>ORD123</orderId>
<customer>John Doe</customer>
<item>Product A</item>
<item>Product B</item>
<orderDate>2025-03-29</orderDate>
</order>
另一个有效的 XML 实例:
<order>
<orderId>ORD456</orderId>
<customer>Jane Smith</customer>
<orderDate>2025-03-28</orderDate>
</order>
无效的 XML 实例(顺序错误):
<order>
<customer>John Doe</customer>
<orderId>ORD123</orderId>
<orderDate>2025-03-29</orderDate>
</order>
无效的 XML 实例(缺少 orderId):
<order>
<customer>John Doe</customer>
<item>Product A</item>
<orderDate>2025-03-29</orderDate>
</order>
总结:
- XML 是一种用于结构化和传输数据的通用标记语言。
- 它依赖于明确定义的语法和层次结构。
- XML 模式 (XSD) 提供了一种强大的方式来定义 XML 文档的结构和内容。
- XSD 中的
<sequence>组合器强制子元素遵循特定顺序。 minOccurs和maxOccurs属性指定了元素在其定义的上下文(通常在<sequence>内)中可以出现的最小和最大次数。
本指南为理解 XML 及其核心概念提供了坚实的基础,特别是使用 XML 模式定义 XML 文档结构时 <sequence>、minOccurs 和 maxOccurs 的作用。请记住,查阅官方的 W3C 规范以获取最详细和最新的信息。