Therefore, we can increase the "type safety" of the XSD by restricting the category of child elements that can be placed in the class element. However, I don't know how to do this in XSD - any pointers?
Assuming you know all the possible elements up front, this is done with a <xs:choice> and/or <xs:sequence>. However, I suspect what you are saying is that there could be elements that aren't known at the time the XSD is generated.
-Dan