>
> That covers off a lot of simple XML cases, but doesn't handle well
> things like QName's as found in XSD's type element where you want to
> differentiate between a type specified in the XSD namespace (such as
> xs:string), a type specified in the local namespace or a type
> specified in a sister namespace. For example, I wouldn't want to have
> to keep doing:
>
> <element name='MyElement' type='com.w3.schema.string'/>
>
The problem with QNames-in-content is a failure to respect protocol
layering. I like to think of XML as being at layer 6 of the OSI stack,
and the application vocabulary at layer 7. It's fine for the layer 6
protocol to use shortcuts such as namespace prefixes that it understands
and knows about, and its fine for the layer 7 protocol to use its own
shortcuts and abbreviations. The problem with QNames-in-content is that
the prefixes are defined in layer 6 and then used in layer 7, which
means that information leaks between layers in a way that it shouldn't.
If you want abbreviations in your application vocabulary, define them
using your application vocabulary.
Michael Kay
Saxonica