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

max*_*zig 6 xsd converter relaxng

RELAX NG主页列出了Sun RELAX NG转换器,它显然是能够将XSD文件转换为relaxng一个-但链接是死的,一个关于二次源博客条目似乎是过时的为好.

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

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

C. *_*een 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提供的信息).


max*_*zig 5

旧的 Sun RELAX NG Converter 现在与 (Sun) 'Multi-Schema Validator' - msv捆绑在一起。使用该术语,您可以在您的分发包存储库中进行搜索。

例如 Fedora(例如 17)包括它。

在 Fedora 上安装

# yum install msv-rngconv msv-manual
Run Code Online (Sandbox Code Playgroud)

在 Fedora 上的使用

$ rngconv my.xsd > my.rng
Run Code Online (Sandbox Code Playgroud)

测试结果:

$ xmllint --relaxng my.rng --noout some.xml
Run Code Online (Sandbox Code Playgroud)

转换为紧凑语法:

$ trang -I rng -O rnc my.rng my.rnc
Run Code Online (Sandbox Code Playgroud)

(trang 也可以通过主要的 Fedora 软件包存储库获得)

另一种方式(也许在向紧凑语法文件中添加内容之后):

$ trang -I rnc -O rng my.rnc my.rng
Run Code Online (Sandbox Code Playgroud)

Msv 似乎非常强大 - 我用一个相当大的 xsd 文件对其进行了测试,该文件使用继承、广泛的模式并包含另一个 xsd 文件。