> I don't think it's quite that clear, though. An abstract type could be used
> as a mechanism for maintaining common definitions for subtypes, yet not
> actually be used directly in any element or attribute declarations.
Yes, the JAXB RI reports an error only when an abstract complex type is
referenced by an element declaration. It's OK as long as an abstract
complex type is simply used as a base type for other complex types.
> But... without a block attribute set to #all, you really couldn't be certain
> it won't be substituted for in a document, could you?
Yes. But what we found is that most people simply don't aware of the
implication of not having blockDefault="#all". So a lot of schemas that
we collected during the development simply didn't use this switch.
So we felt that rejecting a schema just because it doesn't have
blockDefault="#all" is too restrictive.
You are right that technically it's OK for the type substitution to be
used even if the schema doesn't contain any abstract complex type.
But in some sense there's no option but to risk this chance because of
the way schemas are written today.
regards,
--
Kohsuke KAWAGUCHI 408-276-7063 (x17063)
Sun Microsystems kohsuke.kawaguchi_at_sun.com