【发布时间】:2010-12-21 09:00:09
【问题描述】:
您知道有什么工具可以从一组示例 XML 文件中导出 DTD(或其他 XML 结构规范格式)吗?
目前,我们对 xml 编码的 DSL 进行的唯一(自动)验证是用 Perl 编写的遗留解析器,但出于一致性原因,所有 perl 代码都必须移植到 C-sharp。
【问题讨论】:
您知道有什么工具可以从一组示例 XML 文件中导出 DTD(或其他 XML 结构规范格式)吗?
目前,我们对 xml 编码的 DSL 进行的唯一(自动)验证是用 Perl 编写的遗留解析器,但出于一致性原因,所有 perl 代码都必须移植到 C-sharp。
【问题讨论】:
您可以使用xsd.exe(Visual Studio 的一部分)为给定的 XML 文件生成 XML 架构。
【讨论】:
http://www.stylusstudio.com/dtd_generator.html 是实现 DTD 生成器的实际软件。
http://www.pmg.csail.mit.edu/~chmoh/pubs/wecwis.pdf 似乎是一篇关于您需要的东西的好论文,但到目前为止我在论文的任何地方都找不到(链接到)实际代码。
这是另一篇关于此的论文,同样,找不到代码:http://www.softnet.tuc.gr/~minos/Papers/debull03.pdf。
最后,我还建议您考虑使用 RELAX NG 或 Schematron 来验证您的 XML。这些语言更具表现力,使它们更易于阅读,并且在您可以验证的事物中更强大。 (一定要跳过被广泛认为是一团糟的 XML Schema。)
【讨论】:
您可以使用以下链接在线生成架构,只需提供 xml 数据。 http://www.xmlforasp.net/codebank/system_xml_schema/buildschema/buildxmlschema.aspx
【讨论】:
您可以免费下载 JetBrains IDEA 社区版。它具有用于生成 GTD 和模式的内置工具:
http://www.jetbrains.com/idea/webhelp/generating-dtd.html
也许并不完美,但它确实是。
【讨论】:
这是对我有用的程序DTDGenerator。您需要使用 Java 编译它,但它运行良好。对于一种已经存在了很长时间的语言缺乏免费软件,我感到很惊讶,但这个软件在 Mozilla Public License Version 1.0 下是免费的。
【讨论】:
Altova's XMLSpy 有一个 DTD/XML 模式生成器。
生成的 DTD/XML Schema 通常需要稍作调整。例如,当您“打算”允许它允许任何值时,该工具可能会枚举属性或元素的列表。你只是给它一个你的问题空间的样本,但是它必须从特定到一般。因此,当它无法读懂我的想法时,我不会太弯曲。
我认为生成的 dtd 或架构是一个起点。这比从零开始用手滚动要好。呃,如果你是从现有的 XML 文档开始,那就是。
即使您不打算使用生成的 dtd,这也是了解一组不熟悉的 XML 文档结构的好方法。
【讨论】:
XMLMax 编辑器将从 XML 文件创建 XSD。免费试用(无注册/小下载文件)将为您完成此操作。如果您想在代码中执行此操作,.NET 框架有一个 XmlSchemaInference 类,它会自动从 xml 文件创建 XSD。
【讨论】:
刚刚使用http://www.freeformatter.com/xsd-generator.html 从 xml 文件生成 xsd。 它还有很多其他的格式化可能性!
【讨论】:
您可能想试试Trang 或Instance to Schema Tool(XMLBeans 的一部分)。
我用 1GB XML 文件对它们进行了测试。结果如下:
max memory [kB] - 98,480
time [MM:SS] - 0:24
max memory [kB] - 5,993,240
time [MM:SS] - 7:36
【讨论】: