Complex types - How to define a template to be derived?

Hello

I'm puzzled by the need to derive complex-type subelements selectively,
keeping unmodified the complex type itself!

The content model of the "book" complex type should be predefined (all the
elements it contains ("header") and their subelements ("title", "owner",
"keyset" and "extraInfo") should appear when instanced), but it should also
be unusable without being derived.
I say: the "book" complex type should be a template, some elements of whose
("keyset" and "extraInfo") should be derived coherently, while others
("header", "title" and "owner") should remain untouched. So, I could have a
"book" derived-type for poems (keyset subelements would be "date" and
"topic"; extraInfo subelements would be "pages" and "price"), another for
essays (keyset subelements would be "university", "year"; extraInfo
subelements would be "url", "authors" and "contributors") and so on...

Here are the examples (pseudo-schemas and instances):

PSEUDO-SCHEMA

- This is a rough representation of the TEMPLATE to be derived (note that
keyset and extraInfo have no subelements):
<?xml version="1.0"?>
<books generator="">
 <book type="" id="">
  <header>
   <title></title>
   <owner></owner>
   <keyset>
   </keyset>
   <extraInfo>
   </extraInfo>
  </header>
 </book>
</books>

- This is a rough representation of the POEM BOOK (derived from the book
complex-type template):
 <book type="poem" id="">
  <header>
   <title></title>
   <owner></owner>
   <keyset>
    <date></date>
    <topic></topic>
   </keyset>
   <extraInfo>
    <pages></pages>
    <price></price>
   </extraInfo>
  </header>
 </book>

- This is a rough representation of the ESSAY BOOK (derived from the book
complex-type template):
 <book type="essay" id="">
  <header>
   <title></title>
   <owner></owner>
   <keyset>
    <university></university>
    <year></year>
   </keyset>
   <extraInfo>
    <url></url>
    <authors></authors>
    <contributors></contributors>
   </extraInfo>
  </header>
 </book>

INSTANCES

- An instance of the poem book:
 <book type="poem" id="3289033934">
  <header>
   <title>Green Dale</title>
   <owner>Mario Rossi</owner>
   <keyset>
    <date>14/6/2003</date>
    <topic>Country ballad</topic>
   </keyset>
   <extraInfo>
    <pages>12</pages>
    <price>8</price>
   </extraInfo>
  </header>
 </book>

- An instance of the essay book:
 <book type="essay" id="64334432323">
  <header>
   <title>Black Holes</title>
   <owner>Jack L. Jackson</owner>
   <keyset>
    <university>MIT</university>
    <year>2001</year>
   </keyset>
   <extraInfo>
    <url>http://www.mySite.org/essays/blackHoles.htm</url>
    <authors>So many!!</authors>
    <contributors>Many more!!</contributors>
   </extraInfo>
  </header>
 </book>

How can I define a template and derive it?
Please, do you have any suggestion about this?

Thank you!

Stefano Chizzolini

Received on Friday, 3 October 2003 09:29:55 UTC