我们有数百个没有预先定义 XML 模式 (XSD) 的 XML 文件。我能够使用工具(IntelliJ Idea)从其中一个文件生成 XSD,但它不够聪明,无法识别哪些元素和属性是可选的,哪些是必需的。
一种自动化的方法是使用以下启发式从多个 XML 文件中对 XSD 进行逆向工程:
如果在某些情况下出现而在其他情况下不出现,则属性/元素是可选的(
use="optional"
/ )。minOccurs=0
否则,它是必需的(use="required"
/minOccurs=1
)。
显然,如果该 XML 具有足够的代表性,则启发式方法也适用于单个 XML 文件。
例如,flightNumber
给定以下输入, a 将被视为可选:
<list>
<carrier name="BA" flightNumber="213" />
<carrier name="CY" />
</list>
您是否知道任何生成 XSD 并识别属性/元素是否可选的工具?