XML 文档类型
XML 文档验证:格式良好(Well-Formed) vs 有效(Valid)
Section titled “XML 文档验证:格式良好(Well-Formed) vs 有效(Valid)”理解“格式良好”(Well-Formed)的 XML 文档与“有效”(Valid)的 XML 文档之间的区别至关重要。
一个 格式良好(Well-Formed) 的文档仅遵循基本的 XML 语法规则。
一个 有效(Valid) 的文档不仅格式良好,还符合在单独的模式(Schema)或定义文件(Definition File)中定义的一组特定的结构和内容规则。
回顾格式良好的 XML 文档
Section titled “回顾格式良好的 XML 文档”如前所述,格式良好的 XML 文档遵循以下基本语法规则:
- 必须有且只有一个根元素(Root Element)。
- 所有元素必须有闭合标签(Closing Tag)或为自闭合(Self-Closing)。
- 标签区分大小写(Case-Sensitive)。
- 元素必须正确嵌套(Properly Nested)。
- 属性值(Attribute Values)必须用引号(单引号或双引号)括起来。
格式良好文档的示例:
<?xml version="1.0" encoding="UTF-8"?><note date="2023-10-27"> <to>Alice</to> <from>Bob</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body></note>该文档遵循所有语法规则,因此它是格式良好的。但是,我们尚不清楚它是否根据任何特定规则集是 有效 的。
有效的 XML 文档
Section titled “有效的 XML 文档”有效性增加了一层约束。一个有效的 XML 文档首先必须是格式良好的。此外,它还必须遵守由 文档类型定义(DTD - Document Type Definition) 或 XML Schema(XSD - XML Schema Definition) 定义的结构规则。
这些定义指定了以下内容:
- 文档中允许出现哪些元素。
- 哪些元素可以出现在其他元素内部(父子关系 Parent-Child Relationships)。
- 子元素可以出现的顺序和次数。
- 每个元素允许或必需的属性(Attribute)。
- 元素内容和属性值允许的数据类型(Data Types)(XSD 处理能力更强)。
定义这些规则的两种主要机制是:
- DTD(Document Type Definition): 最初的方法,使用非 XML 语法。
- XML Schema(XSD - XML Schema Definition): 现代的、更强大、更灵活的方法,它本身使用 XML 语法。
建议: 对于新项目,由于其更丰富的功能集,包括数据类型和命名空间支持,请使用 XML Schema(XSD)。
何时使用验证(XSD/DTD)?
Section titled “何时使用验证(XSD/DTD)?”使用模式(如 XSD)来验证 XML 文档在以下情况下会很有益:
- 数据完整性至关重要(Data Integrity is Critical): 确保数据在处理前符合预期的格式。
- 需要互操作性(Interoperability is Required): 定义不同系统或组织之间数据交换的清晰约定。
- 自动化处理(Automated Processing): 保证 XML 数据结构符合下游应用的期望。
- 复杂结构(Complex Structures): 管理和执行复杂 XML 词汇表(Vocabularies)的规则。
- 工具优势(Tooling Benefits): 利用支持模式的编辑器、代码生成器或数据绑定框架。
本质上,验证提供了一种正式的方式来保证 XML 数据的结构和质量。
何时验证可能是可选的?
Section titled “何时验证可能是可选的?”虽然通常很有益,但定义和使用模式并不总是必要的:
- 简单或内部使用(Simple or Internal Use): 对于非常简单的 XML 结构或仅在单一受控应用内部使用的数据,其开销可能不值得。
- 实验/原型设计(Experimentation/Prototyping): 在早期开发阶段,可能只需关注格式良好性直到结构稳定下来。
- 松散结构化数据(Loosely Structured Data): 如果 XML 结构有意地灵活或不可预测,严格验证可能适得其反(尽管 XSD 提供了像
xs:any这样的特性来实现受控的灵活性)。
即使没有针对模式进行正式验证,确保您的 XML 是格式良好的始终是必不可少的。
提示:现代 IDE(集成开发环境)和 XML 编辑器通常提供内置的 XML 验证工具,可以检查格式良好性以及根据指定的 DTD 或 XSD 进行验证。