Objectives of Inheritance
> First of all, I've been working with the January XML-Data DTD and > haven't had a chance to really get my mind around XSchema, so any XML > fragments in here will be XML-Data like instead of XSchema like. > > I've been building a fairly complex Schema using an XML-Data > definition converted to a DTD. I've been making extensive use of > inheritance, and have observed that I'm using inheritance to > accomplish three objectives. If XSchema provides or could provides > methods to readily accomplish these objectives, then we might be able > to sidestep poorly defined or difficult to implement constructs (For > example, I've avoided attempting to merge the child's content model > with the parent's content model) > > For the discussion, lets assume that I am building a Schema to contain > mathematical correlations. I have a generic CORRELATION element that > has CLASSID and CODE attributes to specify the COM or Java object that > implements the correlation, plus RANGE and PARAM elements that contain > the range that the correlation is valid and any parameters needed for > the implementation. I also want to define a POLYNOMIAL element that > is a specific type of CORRELATION that I anticipate that the > application would implement internally. > > Objective 1: Membership in a group > > The first objective is to define a group that contains CORRELATION and > any "derived" elements, so that I can use POLYNOMIAL anywhere that I > could use CORRELATION. This is roughly equivalent to being able to > cast a Polynomial class pointer down to a Correlation class pointer. > > Objective 2: Reusing content model > > The next objective is replicate all or part of the content model of > the parent. If CORRELATION allows a RANGE, then I would like it to be > natural for POLYNOMIAL to have a range. This (and the next) objective > are frequently accomplished in DTDs using parameter entities. > > Objective 3: Reusing attributes > > The next objective is replicate all or part of the attribute list of > the parent. If CORRELATION allows a NAME attribute, then I would like > it to be natural for POLYNOMIAL to have a NAME. > > Without really looking at what is in XSchema, it would seem that these > could be accomplished relatively simply. The following pseudo-XML > demonstrates what I was thinking. > > <SCHEMA> > <GROUP ID="CORR-DERIVED" NAME="CORRELATION and related elements"> > <ELEMENTTYPE ID="CORRELATION"> > <GROUP ID="CORR-CONTENT" OCCURS="OPTIONAL"> > <ELEMENTTYPE HREF="#RANGE" OCCURS="STAR"/> > <ELEMENTTYPE HREF="#PARAM" OCCURS="STAR"/> > </GROUP> > <!-- would be necessary to have some concept of > attribute group so you can replicate a whole > bunch of attributes --> > <ATTRIB-GROUP ID="CORR-ATTRIBS"> > <ATTRIBUTE ID="NAME"/> > <ATTRIBUTE ID="CLASSID"/> > <ATTRIBUTE ID="CODE"/> > <ATTRIBUTE ID="CODEBASE"/> > </ATTRIB-GROUP> > <ELEMENTTYPE> > > <ELEMENTTYPE ID="POLYNOMIAL"> > <!-- just borrow the content model of CORRELATION --> > <GROUP HREF="#CORR-CONTENT"/> > <!-- add a few new attributes to those defined by > CORRELATION --> > <ATTRIB-GROUP ID="POLY-ATTRIB"> > <ATTRIB-GROUP HREF="#CORR-ATTRIBS"/> > <ATTRIBUTE NAME="A"/> > <ATTRIBUTE NAME="B"/> > <ATTRIBUTE NAME="C"/> > </ATTRIB-GROUP> > </ELEMENTTYPE> > </GROUP> > > <ELEMENT ID="OTHER"> > <GROUP ID="OTHER-CONTENT"> > <GROUP HREF="#CORR-DERIVED"/> > </GROUP> > </ELEMENT> > </SCHEMA> > > Questions: > > Are there any objectives of inheritance that I overlooked? > > How readily does XSchema accomplish each of the objectives? > > Are there any minor enhancements to XSchema that would make these > objectives more achievable? xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@i... Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ To (un)subscribe, mailto:majordomo@i... the following message; (un)subscribe xml-dev To subscribe to the digests, mailto:majordomo@i... the following message; subscribe xml-dev-digest List coordinator, Henry Rzepa (mailto:rzepa@i...)
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format