如何将XML架构(XSD)转换为Relax NG?

时间:2013-02-10 22:52:20

标签: xsd converter relaxng

Relax NG homepage列出了Sun RELAX NG转换器,它显然能够将XSD文件转换为一个松弛的文件 - 但链接已经死了,blog entry about secondary sources似乎也已经过时了。

我对基于网络的转换器不感兴趣。

顺便说一下,我要转换的XML模式使用继承。

3 个答案:

答案 0 :(得分:5)

Kohsuke Kawaguchi的Relax NG转换器(又名Sun Relax NG转换器)目前可在http://java.net/projects/msvhttp://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)包括它。

在Fedora上安装

# yum install msv-rngconv msv-manual

Fedora上的用法

$ 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