
Now relaxng can be transformed but the transformation isn't formal/unambiguous/two-way, or differently put if you transform from relaxng to xsd and back you are not guaranteed to end up with the same relaxng document.
I was not aware of this. I thought the RELAXNG -> XSD translation was unambiguous.
In case someone later wants to add XSD, perhaps it is useful to note this differences and perhaps even suggest how the translation should be done.
There are specific cases where the translation program that we were using at the time (Sun's MSV - I thought development stopped in 2007 but I now see some updates: https://msv.dev.java.net/) could not handle conversion properly. Specifically it is possible in RELAX to construct an 'or' type relationship between an attribute and a child element, ex: <parent type="something" /> vs <parent> <type>something</type> </parent> The subsequent XSD document produced by conversion was ambiguous to most syntax checkers, but a manual change made the syntax/structure made things correct and unambiguous. This is a tool problem, not a language problem. As for a conversion back to RELAX, I have never attempted to do this so Michael is probably more experienced in this area than I am. -jason