xs:any vs. xs:element ref for including external schemas

I've been chatting to someone on a separate list, and they want to include 
whole XHTML documents with their instances (e.g. start with <xhtml>...).

The choices seem to be:

<xs:any namespace="http://www.w3.org/1999/xhtml"/>

but this allows any global element from the XHTML namespace.

Or you can do:

<xs:element xmlns:xhtml="http://www.w3.org/1999/xhtml" ref="xhtml:xthml"/>

This only allows the <xhtml> node.

The downside of the latter is that it implies to me that the XHTML is very 
much a part of the containing schema, whereas the xs:any method implies to 
me that the containing schema is more of an envelope (e.g. there is some 
layering going on).

Am I alone in inferring this, or do others read this sort of thing into 
their schemas?

Is this why XSD 1.1 currently does not allow:

<xs:any xmlns:xhtml="http://www.w3.org/1999/xhtml" QName="xhtml:xhtml 
xthml:strong"/>

(i.e. a list of desired QNames)

because you would achieve the result by using the following schema snippet:

<xs:choice xmlns:xhtml="http://www.w3.org/1999/xhtml">
    <xs:element ref="xhtml:xthml"/>
    <xs:element ref="xhtml:strong"/>
</xs:choice>

(although it doesn't capture whether the intent is an envelope for something 
as opposed a component part.)

Any opinions?

Thanks,

Pete.
--
=============================================
Pete Cordell
Codalogic Ltd    (formerly Tech-Know-Ware Ltd)
for XML Schema to C++ data binding visit
 http://www.codalogic.com/lmx/
=============================================

Received on Thursday, 7 June 2007 19:48:01 UTC