我在网上找到了一些工具,它们为给定的XML数据实例生成XML Schema。像 - link text
之类的东西我也在考虑开发一个,但是我对生成的模式的评估感到困惑。
如何评估生成的模式,即生成的模式是否确认给定数据?是否有任何方法可以制定某种精确度量,表明生成的XML模式对于给定的XML数据是正确的80%或90%是正确的?
请帮我解决任何问题。
欢呼声
答案 0 :(得分:2)
我相信你要求的是不可能的。自动生成的模式(我使用Examplotron)永远不会完全准确,因为生成工具没有足够的信息。
例如,如果XML文档中存在元素<foobar>
,那么生成工具如何知道它是否是强制性的?如果接受多个值?在不知道原始模式的情况下,您无法说明生成的模式是否准确。 (Examplotron通过允许作者将结构化注释放入XML文件来解决问题,以指导程序。)
这是一个例子。使用此XML文件:
<data>
<foo>1</foo>
<bar>text</bar>
<baz/>
</data>
Examplotron生成了这个模式(有点编辑):
start =
element data {
element foo { xsd:integer },
element bar { text },
element baz { empty }
}
请注意元素xsd:integer
中的<foo>
。不错的推论但是,它准确吗?可能<foo>
应该是更常规的类型,例如xsd:any
...
答案 1 :(得分:-1)
从现有XML文档生成的模式只能与原始XML一样好。如果您的示例XML是将要使用的XML的完整示例,则生成的架构将起作用。如果它不完整或形成不良,则不会。