OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: XML Schemas: Best Practices



Martin Bryan wrote:
> 
> what about;
> 
>      <complexType name="BookType">
>         <all>
>             <element name="Title" type="string"/>
>             <element name="Author" type="string"/>
>             <element name="Date" type="year"/>
>             <element name="ISBN" type="string"/>
>             <element name="Publisher" type="string"/>
>         </all>
>     </complexType>
> 
>    <complexType name="BookTypePlusReviewerType">
>        <complexContent>
>             <extension base="c:BookType" >
>                 <element name="Reviewer" type="string"/>
>             </extension>
>       </complexContent>
>   </complexType>

That is a most clever idea Martin!  Unfortunately, that will
not work.  Extension always appends to the end, even if the
base type is an unordered set.  With your definition of
BookTypePlusReviewerType you are creating the following sequence
of elements:
( {Title, Author, Date, ISBN, Publisher}, (Reviewer) )

That is, there is a sequence of a set followed by a single
element, Reviewer.  Within the set the order of the elements
is irrelevant.  

There is no way to avoid the Location Restricted Extensibility
problem when using the type substitutability mechanism.  The only
option is to use the <any> element if you want to enable extensibility
at the beginning of a content model, or in the middle, etc.  /Roger

P.S. Sorry for the brief replies.  I am on the road with limited
Internet access.