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



Jeff Rafter wrote:
> 
> Eddie,
> 
> > I may be on thin ice here but I don't think this is correct. If you use
> > derivation using the above syntax you're not reordering the elements.
> Instead
> > you are extending the type to allow for all the elements in the base type
> 
> I believe you are right.  I think that Martin's intent was to use a
> restriction element instead of an extension element (correct me if I am
> wrong).  This would make his example:
> 
>      <complexType name="BookTypePlusReviewer">
>         <complexContent>
>              <restriction base="c:BookType" >
>                  <sequence>
>                      <element name="Reviewer" type="string"/>
>                      <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"/>
>                </sequence>
>             </restriction>
>         </complexContent>
>     </complexType>

Great discussions!  

No, using <restriction> does not allow me to put a Reviewer element at
the top of Book's content model.  The <restriction> functionality only
allows me to 

- restrict the range of values, or 
- restrict the number of occurrences of an element

It does not allow me to add (extend) a content model.  The only way to
add (extend) a content model is with <extension>, and the extension is
always at the end of the content model.
 
> using:
> 
> <any namespace="##any" minOccurs="0" maxOccurs="2"/>
> 
> at the top of the sequence seems to be a good idea until you consider
> multiple layers of inheritance-- then you realize that a more extensive (no
> pun intended) solution is needed.  

I don't know what you mean by "multiple layers of inheritance".  Could
you expand upon this please?  Thanks!  /Roger