【问题标题】:How to generate DTD from XML?如何从 XML 生成 DTD?
【发布时间】:2015-04-19 03:34:53
【问题描述】:

能否使用 Python 从 XML 文件生成 DTD?

【问题讨论】:

  • 您认为这甚至可能吗?您可以找到与给定 XML 匹配的 DTD,但您无法保证其他 XML 将与生成的 DTD 匹配。请更具体地说明您的输入是什么以及您将接受什么作为 DTD。
  • 如果这可能是可能的,那么您的 XML 必须涵盖所请求 DTD 的所有可能性,而这在实践中通常不会发生。
  • 理论上,您可以从一组 XML 文档中合成一个 DTD,但它实际上不太可能有用。 DTD 的目的是作为 XML 的规范,而不是相反。
  • 看看Saxon's DTDGenerator。它是 java,不是 python。

标签: python xml dtd


【解决方案1】:

对您提出的问题的简单回答是“是的,可以使用 Python 从 XML 文档生成 DTD”。

Python 是图灵完备的语言,并且有一些算法可以从任意 XML 或 SGML 集合生成 DTD。我相信标准参考书是 Rick Kazman,“Structuring the text of the Oxford English Dictionary through 有限状态转导,”新牛津英语中心 字典技术。报告 OED-86-20,大学。滑铁卢(1986 年 6 月),117 页。

在 1980 年代后期,图书馆联盟 OCLC 开发了一个名为 Fred 的工具,它为 SGML 文档的主体引入了 DTD;我非正式地听到了很多关于它的信息,但不记得曾经看过关于它的算法的公开描述。但是,在 Web 上快速搜索“OCLC Fred SGML DTD”会生成指向Keith E. Shafer, Fred: the SGML Grammar Builder (1996) 的指针。 (快速浏览显示了大量材料,但我没有看到任何明确提及对所用算法的高级描述。)

还有一篇 1994 年的挪威论文:Sunniva M. K. Solstrand,“Automatisk generationering av DTD fra SGML-kodet materiale”,Hovedfagsoppgave i informasjonsvitenskap,Universitetet i Bergen 1994)。

可以看出,有几位计算机科学家不同意那些告诉您您的问题毫无意义或错误的评论者的观点。当然,通过自动语法归纳获得的文档语法质量往往低于人工文档分析员和 DTD 编写者获得的文档语法质量。

我怀疑,如果生成的 DTD 仅限于 Fabio Vitali 及其在博洛尼亚的合作者在多篇文章中描述的内容模型模式,那么它会更合理。我相信,最初的论文是Fabio Vitali, Angelo Di Iorio, and Daniele Gubellini, "Design patterns for descriptive document substructures",Extreme Markup Languages 2005,后来的论文详细阐述并描述了应用程序。 Francesco Poggi 在博洛尼亚的新作品(尚未出版)扩展并深化了分析。对“XML 设计模式”的 Web 搜索可能会提供对类似语法模式集的其他尝试。从语法归纳的角度来看,这种模式的效果是通过针对更简单的语法来降低归纳问题的复杂性。


如果您想问一个完全不同的问题“谁能推荐一个基于 Python 的工具来从 XML 文档生成 DTD?”,那么我无能为力(而且有很多 Stack Overflow 版主会立即关闭问题,因为要求工具推荐的问题不受欢迎)。

【讨论】:

    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 2010-09-06
    • 2010-09-06
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多