从 XML 文档逆向工程到扩展 DTD 图
1. 引言
可扩展标记语言(XML)凭借其开放性、自描述性和灵活性,已成为持久存储和通过互联网进行数据交换的标准。在处理不同结构的 XML 文档时,若能获取其文档类型定义(DTD)模式,将有助于研究文档内容,但这些模式格式往往难以阅读且不太友好。
XML 是软件应用程序甚至商业伙伴之间存储和传输数据的常见格式。例如,基于关系数据库中的数据生成 XML 文档是常见场景。为了更好地处理这些 XML 文档,可将 XML 元素实例视为独立实体,通过逆向工程确定不同 XML 元素类型之间的关系,构建如带有数据语义的扩展 DTD 图等概念模型,从而让用户更好地理解文档内容,并进行存储和查询等操作。
2. XML 文档的引用完整性
XML 本身支持一种引用完整性机制,即 ID/IDREF(S) 类型的属性链接。在每个 XML 文档中,ID 类型属性的值最多出现一次,IDREF(S) 属性的值必须引用一个 ID 类型属性的值。IDREF(S) 类型属性可以引用同一文档中的任何 XML 元素,每个 XML 元素最多可以定义一个 ID 类型属性。
基于常见 XML 文档结构,可观察到以下几种情况:
- 由于 XML 文档的嵌套结构,子元素隐式引用其父元素。
- 对于 IDREF 或 IDREFS 类型属性,定义元素通过引用值引用具有 ID 类型属性的元素,这种链接类似于关系数据库中的外键,属于显式链接。
- 由于 IDREFS 类型属性可以引用多个元素,因此存在从引用元素类型到被引用元素类型的一对多基数关系。
XML 文档的模式可以限制 XML 元素的顺序,这可能