Xsd to rnc (or rng) conversion (unix command line) Xsd to rnc (or rng) conversion (unix command line) xml xml

Xsd to rnc (or rng) conversion (unix command line)


Converting XSD is a very hard task; the XSD specification is a bit of a nightmare and extremely complex. From some quick research, it seems that it is easy to go from RelaxNG to XSD, but that the reverse may not be true or even possible (which explains your question about Trang).

I don't understand your question about editors - if you are asking if most people end up converting between XSD and RNG by hand, then yes, I expect so.

The best advice may be to avoid XSD if possible, or at least use RNG as the definitive document and generate the XSD from that. You might also want to take a look at schematron.


True, trang does not accept xsd on the input side. Trang can however take a set of xml files which should meet the spec and generate a rnc or rng schema which they would all be valid against.

Downsides:

  • It requires many compliant xml files (I'd imagine the more the better)
  • Resulting schema could probably still use some tweaking.

Sample Case:

If my compliant xml files are stashed in 1.xml 2.xml 3.xml 4.xml 5.xml

the following command would tell trang to output a rnc schema that would be valid for all of them:

java -jar trang.jar -I xml -O rnc 1.xml 2.xml 3.xml 4.xml 5.xml foo.rnc

Conclusion

If you have a nice test set of xml files which meet your schema (or you can easily create them) this may be the best option available.

I wish you the best of luck.


There is an online converter (XSD -> RNG) added to the list at http://relaxng.org/#conversion. I have tried to convert maven-v4_0_0.xsd for validation of pom.xml files in emacs, without any luck though. The site also contains the XSL stylesheet that you could use with xsltproc, can't vouch for the quality of the outcome...