如何从XML元素生成XSD

时间:2013-05-07 13:24:58

标签: java xml xsd

我有一个XML输入

<field>
  <name>id</name>
  <dataType>string</dataType>
  <maxlength>42</maxlength>
  <required>false</required>
</field>

我正在寻找一个库或工具,它将获取XML实例文档并输出相应的XSD架构。

我正在寻找一些可以为上述XML结构生成XSD的java库

5 个答案:

答案 0 :(得分:12)

如果您想要的只是一个XSD,以便您提供的XML符合它,那么您自己制作它而不是使用工具会更好。

没有人比你更了解架构的特殊性,例如哪些有效值(例如,所需的<maxlength>元素?是truefalse唯一<required>的有效值?)。

如果你真的想使用一个工具(如果你没有设计XML并且真的无法获得真正的XSD,我只会建议使用它 - 或者如果你设计了它,请仔细检查生成的XSD),你可以试试Trang。它可以从许多示例XML中推断出XSD Schema。

如果XML样本不够具有代表性,您必须考虑到XSD工具可以推断您可能不完整或不准确。

java -jar trang.jar sampleXML.xml inferredXSD.xsd

您可以找到usage example of Trang here

答案 1 :(得分:5)

您可以尝试使用名为XMLGrid的在线工具:http://xmlgrid.net/xml2xsd.html

答案 2 :(得分:1)

您可以编写一个XSLT来执行某事。但问题是,单独的单个文档不足以生成模式。这些元素是否可选?该文档中是否有任何遗漏,可能出现在其他情况中?有多少特定元素可以存在?他们必须按顺序吗?在模式中可以表达大量的东西,这些东西在符合该模式的文档的一个实例中并不是立即显而易见的。

答案 3 :(得分:1)

对于真正希望将其包含在Java代码中以生成XSD并了解危险的人,请查看Generate XSD from XML programatically in Java

答案 4 :(得分:0)

尝试xmlbeans它有一些工具,其中一个是ins2xsd,你可以在这里找到具体信息: http://xmlbeans.apache.org/docs/2.0.0/guide/tools.html 祝你好运