我们预先定义了数百个没有XML架构(XSD)的XML文件。我能够使用工具(IntelliJ Idea)从其中一个文件生成XSD,但它不够聪明,无法识别哪些元素和属性是可选的,哪些是必需的。
自动化的一种方法是使用以下启发式从多个XML文件中反向设计XSD:
属性/元素是可选(
use="optional"
/minOccurs=0
),如果在某些情况下它发生而在其他情况下不发生。否则,必需(use="required"
/minOccurs=1
)。
显然,如果这个XML具有足够的代表性,那么启发式算法也适用于单个XML文件。
例如,根据以下输入,flightNumber
将被视为可选项:
<list>
<carrier name="BA" flightNumber="213" />
<carrier name="CY" />
</list>
您是否知道生成XSD并识别属性/元素是否可选的任何工具?
答案 0 :(得分:1)
尝试QTAssistant(我与之相关)。在 工具 标签下
有一个 XSD from XMLs 命令。
您的XML文件应该全部在一个文件夹中。在对话框中,您必须选择要在生成XSD时考虑的那些。 XSD将在同一文件夹中生成并为您加载。
但是,我还没有尝试过数百个XML文件。如果您遇到任何麻烦,请通过我们网站上的支持地址告诉我。下载是免费试用,但需要注册。