Konwersja Xsd na rnc (lub rng) (linia poleceń unix)

Krótkie wyszukiwanie pokazuje, że wszystkie dostępne narzędzia (wiersz poleceń uUnix), które konwertują z xsd (XML Schema) na rng (RelaxNG) lub rnc (compact RelaxNG) mają jakieś problemy.

Po pierwsze, jeśli używam 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

Nie ma sposobu na zdenormalizowanie elementów, więc wszystkie są alternatywnymi elementami początkowymi (wydaje się też, że jest trochę błędne).

Trang jest alternatywą, ale nie obsługuje plików xsd na wejściu tylko na wyjściu (dlaczego?). Jednak obsługuje DTD. Najpierw przychodzi na myśl konwersja do DTD, ale ciężko znaleźć również solidny xsd2dtd. Ten poniżej:

 $ xsltproc http://crism.maden.org/consulting/pub/xsl/xsd2dtd.xsl in.xsd > out.dtd

Wydaje się być buggy.

Wszystko to jest bardzo zaskakujące. Przez te wszystkie lata używania XML (ab) nie ma przyzwoitych narzędzi wiersza poleceń dla tych trywialnych podstawowych zadań? Czy ludzie używają tylko edytorów? Czy to działa? Wolę wiersz poleceń, szczególnie dlatego, że chciałbym zautomatyzować te zadania.

Jakieś pouczające komentarze na ten temat?

questionAnswers(5)

yourAnswerToTheQuestion