Relax NG homepage列出了Sun RELAX NG转换器,它显然能够将XSD文件转换为一个松弛的文件 - 但链接已经死了,blog entry about secondary sources似乎也已经过时了。
我对基于网络的转换器不感兴趣。
顺便说一下,我要转换的XML模式使用继承。
答案 0 :(得分:5)
Kohsuke Kawaguchi的Relax NG转换器(又名Sun Relax NG转换器)目前可在http://java.net/projects/msv和http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22net.java.dev.msv%22获得(感谢KK提供的信息)。
答案 1 :(得分:4)
旧的Sun RELAX NG转换器现在捆绑了(Sun)'Multi-Schema Validator' - msv。使用该术语,您可以在分发包存储库中进行搜索。
例如Fedora(例如17)包括它。
# yum install msv-rngconv msv-manual
$ rngconv my.xsd > my.rng
测试结果:
$ xmllint --relaxng my.rng --noout some.xml
转换为紧凑语法:
$ trang -I rng -O rnc my.rng my.rnc
(trang也可以通过主Fedora包存储库获得)
另一种方式(可能在向紧凑语法文件添加内容之后):
$ trang -I rnc -O rng my.rnc my.rng
Msv似乎非常强大 - 我使用相当大的xsd文件测试它,该文件使用继承,广泛的模式并包含另一个xsd文件。
答案 2 :(得分:0)
你试过Trang吗? (我不知道它如何处理继承)
有关将XSD转换为RELAXNG的一般性讨论,另请参阅xsd to rnc (or rng) conversion (unix command line)。看起来Sun RELAX NG转换器的名称是rngconv,并且仍然隐藏在某些地方:http://rpm.pbone.net/index.php3?stat=3&search=msv-rngconv&srodzaj=3