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


Help: OASIS Mailing Lists Help | MarkMail Help



   Re: [xml-dev] Inheritance in XML

[ Lists Home | Date Index | Thread Index ]

Chiusano Joseph wrote:

>Elliotte Rusty Harold wrote:
>>At 12:14 AM +0200 6/18/04, Mohammad Ghazal wrote:
>>>Dear Sir,
>>>      I would like to know the relation between XML and the
>>>Inheritance/Subtype concepts, I have read from several books and I
>>It's roughly the same as the relationship between a grapefruit and a
>>bicycle. That is, there isn't one. :-)

>I would add that W3C Schema has some features that one can say involve
>inheritance, such as derivation by extension. But the bottom line is
>that it's all about how one chooses to use XML.

There was a quite controversial panel at ECOOP 2004 which talked about 
XML and objects. http://www.ifi.uio.no/ecoop2004/

For Eric Meijer, XML was just a way to serialize (XEN or C-omega) 
objects - hence, I guess, you could say there is a relation, because 
objects have subtyping and inheritance, so you can somewhere use XML to 
model it.

My take was this: With XML you can, among other things, represent data, 
such as the *state* of an object.

The derivation by extension then comes close to inheritance, because 
your derived type has all the data of the type you derived it from.

A derived type is a bit like a subtype - you can, in principle, use it 
everywhere where the original type (like the supertype) is expected.
However, you have to annotate the enclosing element using the xsi:type 

BUT this is all very far away from the kind of inheritance and subtyping 
in OOP because inheriting the behaviour of objects (the methods) 
interacts with other things like overloading, overriding, refining.

For instance, some languages (not Java) would allow you to have classes
class Author;
class BookAuthor extends Author;
class Publication { val author:Author }
class Book{ override val author: BookAuthor } extends Publication

I do not think specialising the type of author (say, the first element 
in XML element content) can be done with XML Schema 
derivation-by-restriction, because restriction (and in general all 
schema types) speak about structure (restriction means regular language 
inclusion, it is not covariant, if you will).

So in essence, you seem to get a form of inheritance for *state* with 
derivation-by-extension. To do subtyping etc. you do need much more than 
that, e.g. build a data binding framework that makes your classes 
correspond to W3C XML Schema derived types + something more.

hope this helps. cheers,


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS