- From: Dean Hiller <dhiller@avaya.com>
- Date: Sat, 18 Oct 2003 13:38:32 -0600
- To: Dare Obasanjo <dareo@microsoft.com>
- Cc: xmlschema-dev@w3.org
- Message-ID: <3F9196B8.1050601@avaya.com>
Then take this scenario which is very very typical. Isn't this a big
problem???
For example, version 1 of a schema has element "RegisterDevice".
Company A had to extend version 1 with it's feature A(inside
RegisterDevice a field was added), and company B had to extend the same
schema with feature B(inside RegisterDevice a field was added). Now
Company C is a customer using the protocol, and they don't want to use
either of those proprietary features, but now they can't validate the
XML to make sure it is conformant to version 1. This is very very very
typical. Why would the standard not require this as part of the parsers
functionality?
I personally see this as a big thing. If XSD was object-oriented,
it would only care about the superclasses unless Company C had
companyB's xsd so they could validate the new feature too. If they
wanted to be agnostic, they could just make sure it meets the basics of
version 1 of the schema. I think XSD would be so much easier to go from
version to version of all the different protocols out there if XSD was
more object oriented. ie A program may use the superclasses and never
use the data in the subclasses until the next version comes out.
Meanwhile, companies can stick their competitive advantage new features
as subclasses until they can convince the standards board to include it
in the next version of the standard.
thanks,
dean
Dare Obasanjo wrote:
>It depends. Does the program perform schema validation? If it does then it'll error since the type xsd2:MyExtendedAddress cannot be located. On the other hand if it doesn;'t then you are fine but then again you don't need a schema to actually get this behavior.
>
>________________________________
>
>From: xmlschema-dev-request@w3.org on behalf of Dean Hiller
>Sent: Sat 10/18/2003 12:14 PM
>To: Dean Hiller
>Cc: xmlschema-dev@w3.org
>Subject: change the question slightly maybe...schemas, leveraging their object orientedness??
>
>
>
>
>This is a yes or no question. Just a little long on the xml explaining....
>
>XSD 1....
><complexType name="Address">
> <sequence><element name="name" type="string"/></sequence>
></complexType>
>
><element name="PurchaseOrder">
> <complexType><sequence><element name="shipTo"
>type="Address"/></sequence></complexType>
></element>
>
>XSD 2...
><complexType name="MyExtendedAddress">
> <complexContent>
> <extension base="XSD1:Address">
> <sequence>
> <element name="state" type="string"/>
> </sequence>
> </extension>
> </complexContent>
></complexType>
>
>XML 1
><PurchaseOrder>
> <shipTo xsi:type="xsd2:MyExtendedAddress">
> <name>Something</name>
> <state>CO</state>
> </shipTo>
></PurchaseOrder>
>
>A program that only has the old XSD1 should only get notified of the
>name, not the state when XML 1 comes in. Is that correct??? YES or NO
>
>thanks,
>dean
>
>
>
>Dean Hiller wrote:
>
>
>
>>Anybody? please??
>>thanks,
>>dean
>>
>>Dean Hiller wrote:
>>
>>
>>
>>>If I have some xml implementating schema A.xsd
>>>
>>><superclass>
>>> <someElement/>
>>></superclass>
>>>
>>>And then I write B.xsd which extends A.xsd and the xml looks
>>>something like this
>>><subclass xmnls="......A.xsd">
>>> <someElement/>
>>> <anAddedElement/>
>>></subclass>
>>>
>>>BUT, I must be missing something. There is now a program A which
>>>only knows about A.xsd. It should be able to receive the xml that
>>>adheres to B.xsd and just skip the unknown elements and only deal
>>>with the known ones(ie someElement). The problem is there seems to
>>>be nothing to tell the parser that subclass extends superclass unless
>>>you know of B.xsd.
>>>
>>>I thought the idea of extensions was object-orientedness. The
>>>subclass should be able to be read by program A as the superclass.
>>>(ie. program A knows about a car, and we created a Ford car, so
>>>program A can still see it as a car). I am afraid that a parser will
>>>puke at this since it does not adhere to A.xsd. There must be
>>>something else in the xml I am missing?????
>>>
>>>Also, how would I write the xsd and xml for this? I wish the
>>>tutorial explained more in this area. I would say this is by far the
>>>most important part of xsd's. Extension without breaking previous
>>>programs. Previous programs just ignore additional data.
>>>thanks,
>>>dean
>>>
>>>
>>>
>>
>>
>
>
>
>
>
>
Received on Saturday, 18 October 2003 15:38:35 UTC