This is a really good read:
Philo's WebLog : Creating a web service for an InfoPath form in 25 easy steps
Philo shows how to start with InfoPath to design your schema for your form and then create a web service for consuming that exact schema. On the server end, you can do whatever you want to get it saved / act on it / etc etc.
Here's the important realization: do not design your schema in a vacuum. Start with designing your schema for the technology and the enivronment that it needs to work within.
XSD is... well, awful. It did not grow organically out of smart people solving a problem. It is the worse that committee design has to offer. As such, you can design some pretty broken constructs in XSD. Sure, sure, it's valid and legal.
But just try to get modern tools to accept it.
You need to work backwards according to what your tools and environment can effectively deal with. InfoPath is pretty powerful when it comes to schema, but it doesn't support everything. xsd.exe doesn't support everything. Look at the tools and find the relevant intersection and go from there.
And put in the occasional prayer that something better than XSD will one day ascend out of this noise...
email: Eric_Richards at ericri dot com
Lots More About Eric.
Disclaimer: The postings (and comments) here represent personal point of views and in no way represent the point of view or official opinions of my employer (Microsoft Corporation). The postings here are provided "AS IS" with no warranties, and confers no rights. And if you're reading this blog, you're not only incredibly discerning, you're also knee-weakening good looking.
More blogs about Eric Richards.