【问题标题】:How to generate XSD from elements of XML如何从 XML 元素生成 XSD
【发布时间】:2013-05-01 11:27:17
【问题描述】:

我有一个 XML 输入

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

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

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

【问题讨论】:

    标签: java xml xsd


    【解决方案1】:

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

    没有人比您更了解架构的特殊性,例如存在哪些有效值(例如,是否需要 &lt;maxlength&gt; 元素?truefalse&lt;required&gt; 的唯一有效值?)。

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

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

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

    您可以找到usage example of Trang here

    【讨论】:

    • 有没有办法查看 trang 的所有输出选项?
    • 他们似乎在Trang's official manual有很好的记录。
    • 我的 xsd 不使用 'ref' 标签或导入。我试过 -o disable-abstract-element,但这不起作用!
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您可以编写一个 XSLT 来完成某事。但问题是,仅单个文档不足以生成模式。这些元素中的任何一个都是可选的吗?该文档中是否缺少任何可能出现在其他情况下的内容?一个特定的元素可以有多少个?他们必须按这个顺序吗?有很多东西可以在模式中表达,从符合该模式的文档的一个实例中不会立即显而易见。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          试试 xmlbeans,它有一些工具,其中之一是 ins2xsd,您可以在此处找到详细信息: http://xmlbeans.apache.org/docs/2.0.0/guide/tools.html 祝你好运

          【讨论】:

          • 欢迎来到 SO!即使您帖子中的链接提供了答案,您也必须在链接中提供内容。稍后链接可能无效。
          猜你喜欢
          • 1970-01-01
          • 2015-12-24
          • 2011-08-28
          • 1970-01-01
          • 2014-07-03
          • 2011-08-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多