【发布时间】:2012-09-20 03:15:42
【问题描述】:
我们有数百个没有预先定义 XML 模式 (XSD) 的 XML 文件。我能够使用工具(IntelliJ Idea)从其中一个文件生成 XSD,但它不够聪明,无法识别哪些元素和属性是可选的,哪些是必需的。
一种实现自动化的方法是使用以下启发式方法从多个 XML 文件中对 XSD 进行逆向工程:
一个属性/元素是可选的 (
use="optional"/minOccurs=0),如果在某些情况下会出现而在其他情况下不会。否则,它是必需的 (use="required"/minOccurs=1)。
显然,如果该 XML 具有足够的代表性,启发式方法也适用于单个 XML 文件。
例如,考虑到以下输入,aflightNumber 将被视为可选:
<list>
<carrier name="BA" flightNumber="213" />
<carrier name="CY" />
</list>
您知道任何生成 XSD 并识别属性/元素是否可选的工具吗?
【问题讨论】:
标签: xml xsd reverse-engineering