- substitution groups
- don't name schema, use namespaces
- detect ill-formed recursion (e.g. between attribute groups)
- redefine



Compilation  Schema->CDuce.


type t ===> fun parse_t (Any -> [t])



All (A,B,C) ==>

  (A|B|C,A|B|C,A|B|C)