有可能以迭代的方式逼近语法吗?

时间:2013-12-20 13:54:01

标签: xml xsd grammar

许多工具可以从XML示例生成XSD语法。

通常情况下,必须手动调整此类工具的输出。

我的问题是,是否有可能以迭代的方式完成此过程。 我的意思是,不是给出一个XML示例,而是给出一堆示例,并且在每次迭代之后,XSD架构都会得到改进。

我不知道任何具有此功能的系统。

这可能吗?

谢谢!

编辑:我想我必须澄清一些观点。我知道XMLspy可以从一个例子中生成一个语法。我正在使用它。 (实际上在旧的SGML时间里,一个名为Fred的系统可以做到这一点)。通常这个语法非常原始,尽管XMLspy为您创建了所有选项。我有成千上万的机器生成的xml文件,它们都非常相似。也就是说,它们都具有相同的结构。如果你可以定义它们之间的“距离”是最小的。 我正在寻找一个系统,它生成一个独特的(最小)语法,接受我为其生成的每个文件。 我可以想象这样的系统可以采用第一个例子,生成语法,第二个,改进前面例子生成的语法,依此类推,直到最后一个XML输入文件。

2 个答案:

答案 0 :(得分:3)

QTAssistant(我与它相关联)能够接收多个XML文件,并从中生成XSD。

4.x版

enter image description here

V5.x中

enter image description here

注意事项:

  • 您需要注册才能下载免费评估。

  • 工具通过推理机制生成的XSD必然需要手动干预。对于大型XSD,我们通常至少重构类型定义和/或元素,具体取决于客户的偏好:创作样式(基于类型和基于元素),因为输出往往是嵌套的。

    < / LI>
  • 我对to give a bunch of examples and after each iteration the XSD schema is refined的含义有点不清楚;我将解释它是如何工作的,你从那里开始......在调用命令后,你会得到一个标准的打开文件对话框,你可以在其中选择一个或多个XML文件。选择后,系统将提示您输入将生成XSD文件(可能多个)的文件夹。结果是一组XSD文件,用于成功验证您提供的所有XML文件作为输入。

如果通过iteration,你的意思是在现有(模型)XSD中接受扩展/改变以符合所选XML的方法,基本上逐个或成组地提供XML文件,然后这个工具将无法工作;该工具仅根据选定的XML从头开始重新创建XSD。

答案 1 :(得分:2)

许多工具(包括XMLSpyoXygenPetru's优秀QTAssistant)可以从单个XML文档实例生成XSD,但我不知道任何给定多个XML文档实例的迭代优化XSD的工具。但是,是的,使用多个实例的知识来改进语法是可能且富有成效的。

在一个无法从单个实例中确定语法的区域中解决歧义会很有帮助。例如,给定多种有效文档样本,可以更好地近似以下各项:

  • Requiredness
  • 基数
  • 选择
  • 类型

为什么没有建造这样的工具?我怀疑需要一个覆盖单个XML文档实例的粗略XSD,这在用例中更为常见。它有助于开始编写XSD的第一个剪辑。它为代码生成器(如JAXB)提供了足够好的源代码。最后,即使通过基于多个XML文档实例的自动细化可以获得更好的近似,仍然很可能仍然需要实际操作。