簡単に検索すると、xsd (XML スキーマ) から rng (RelaxNG) または rnc (コンパクトな RelaxNG) に変換するすべての利用可能な (uUnix コマンド ライン) ツールには、何らかの問題があることがわかります。
まず、rngconv を使用する場合:
$ wget https://msv.dev.java.net/files/documents/61/31333/rngconv.20060319.zip
$ unzip rngconv.20060319.zip
$ cd rngconv-20060319/
$ java -jar rngconv.jar my.xsd > my.rng
要素を非正規化する方法がないため、すべてが代替の開始要素になります (少しバグがあるようにも見えます)。
Trang は代替手段ですが、出力のみの入力で xsd ファイルをサポートしていません (なぜですか?)。ただし、DTD はサポートしています。DTD への変換が最初に思い浮かびますが、しっかりした xsd2dtd も見つけるのが困難です。以下のもの:
$ xsltproc http://crism.maden.org/consulting/pub/xsl/xsd2dtd.xsl in.xsd > out.dtd
バギーらしい。
これはすべて非常に驚くべきことです。XML が何年にもわたって (乱用され) 使用されてきたにもかかわらず、これらの些細な基本タスクに適したコマンド ライン ツールはありませんか? 人々はエディターだけを使用していますか? それらは機能しますか?特にこれらのタスクを自動化したいので、私はコマンドラインを好みます。
これに関する啓発的なコメントはありますか?