[Home] [By Thread] [By Date] [Recent Entries]

  • From: "Paul Spencer" <xml-dev-list@b...>
  • To: "Amy Wong" <amy_wanes@y...>,<xml-dev@l...>
  • Date: Wed, 1 Nov 2006 11:05:08 -0000

Amy,
 
You do not give the definition of your "student" type.
 
Let me make a few assumptions:
 
1. Your "student" type is sufficiently complex that it is worth doing this as an extension, rather than just a separate definition (the easy way).
 
2. Your "student" already contains an address, and you want to replace this with the "grad_address".
 
You already have a reply from Jack Lindsey making different assumptions.
 
If my assumptions are correct, you have a slight problem as an extension cannot replace the "address" type with the "grad_address" type. I would create a new type and derive both "student" and "grad_student" from this. Let's call the abstract type "student_base", with a definition that is the same as student but without the address. Then "student" extends this by adding the "address" and "grad_student" extends it by adding the "grad_address" and the appropriate attributes.
 
Note that you can make it impossible to create an element based on the "student_base" type directly if you like, but this is not strictly necessary.
 
Regards
 
Paul Spencer
 
 
-----Original Message-----
From: Amy Wong [mailto:amy_wanes@y...]
Sent: 31 October 2006 19:59
To: xml-dev@l...
Subject: extend two elements?

Hi,

I have an element called "grad_student" which extends "student". Now I want to extend "grad_address" element too since "grad_student" element needs address related info. Unfortunately I cannot merge address info from "grad_address" element into "grad_student" element. I am wondering how I can
extend another element when this element already extends a base element?

regards,

    <xsd:complexType name="grad_student">
<xsd:complexContent>
<xsd:extension base="student">
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="grade" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="grad_student" type="xyz:grad_student"/>

<xsd:complexType name="grad_address">
<xsd:complexContent>
<xsd:extension base="address">
<xsd:attribute name="state" type="xsd:string" use="required"/>
<xsd:attribute name="zip_code" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="grad_address" type="xyz:grad_address"/>


Low, Low, Low Rates! Check out Yahoo! Messenger's cheap http://us.rd.yahoo.com/mail_us/taglines/postman8/*http://us.rd.yahoo.com/evt=39663/*http://voice.yahoo.com


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member