Relax NG 主页列出了 Sun RELAX NG 转换器,它显然能够将 XSD 文件转换为松弛文件 - 但链接已失效,有关二级来源的博客条目似乎也已过时。
我对基于 Web 的转换器不感兴趣。
顺便说一句,我要转换的 XML 模式使用继承。
Relax NG 主页列出了 Sun RELAX NG 转换器,它显然能够将 XSD 文件转换为松弛文件 - 但链接已失效,有关二级来源的博客条目似乎也已过时。
我对基于 Web 的转换器不感兴趣。
顺便说一句,我要转换的 XML 模式使用继承。
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 提供的信息)。
旧的 Sun RELAX NG 转换器现在与 (Sun) 'Multi-Schema Validator' - msv 捆绑在一起。使用该术语,您可以在您的分发包存储库中进行搜索。
例如 Fedora (eg 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 文件。
你试过董里吗?(我不知道它如何处理继承)
有关将 XSD 转换为 RELAXNG 的一般讨论,另请参见xsd 到 rnc(或 rng)转换(unix 命令行) 。看起来 Sun RELAX NG 转换器的名称为 rngconv,并且仍然隐藏在某些地方:http ://rpm.pbone.net/index.php3?stat=3&search=msv-rngconv&srodzaj=3