2013-05-07 14 views
7

元素XSD我有一个XML输入如何生成XML

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

我要寻找一个库或工具,它会采取一个XML实例文档和输出相应的XSD架构。

我要寻找一些Java库,我可以生成一个XSD为上述XML结构

回答

1

你可以写一个XSLT做东西就是这样。但问题是,单单一个文档就没有足够的信息来生成模式。这些元素是否可选?该文件中是否有任何遗漏,可能出现在其他情况下?可以有多少个特定元素?他们必须按照这个顺序吗?在模式中可以表达很多东西,这些东西不能立即从符合该模式的文档实例中明显看出。

9

如果你想要的只是一个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

+0

有没有办法查看所有trang的输出选项? – 2017-04-03 10:16:01

+0

他们似乎在[Trang的官方手册](http://www.thaiopensource.com/relaxng/trang-manual.html#output-modules)中有详细记录。 – 2017-04-03 12:34:16

+0

我不知道我的xsd使用'ref'标签或导入。我尝试了-o禁用抽象元素,但这不起作用! – 2017-04-03 13:25:49

0

尝试的XMLBeans有一些工具,其中之一就是ins2xsd你可以在这里找到细节: http://xmlbeans.apache.org/docs/2.0.0/guide/tools.html 好运

+1

欢迎来到SO!即使您帖子中的链接提供了答案,您也必须在链接中提供相关内容。之后链接可能无效。 – 2013-09-20 07:45:36