Re: Inheritance

Henry,

>> Presumably to fix the required and value constraint properties, you'd
>> need to use the final attribute on the complex type definition itself?
>
> Yes, but then you couldn't change over1... either.

I was hoping that you'd show us a sneaky way of getting around that :)
What about using groups and attribute groups:

 <xs:complexType name="struct1" final="#all">
  <xs:group ref="struct1-content" />
  <xs:attribute name="final1" type="my:ft1"/>
  <xs:attribute name="final2" type="my:ft2"/>
  <xs:attribute name="final3" type="my:ft3"/>
  <xs:attributeGroup ref="struct1-attrs" />
 </xs:complexType>

 <xs:group name="struct1-content">
  <xs:sequence>
     ...
  </xs:sequence>
 </xs:group>
 
 <xs:attributeGroup name="struct1-attrs">
  <xs:attribute name="over1" type="xs:decimal"/>
  <xs:attribute name="over2" type="xs:string"/>
 </xs:attributeGroup>

Redefining the struct1-content group (using xs:redefine) would allow
people to change the content, and redefining the struct1-attrs
attribute group would allow people to change the over1/over2
attributes (or add new ones), but the final1-3 attributes wouldn't be
redefinable... that's if I'm correct that it's not possible to
redefine final complex types using xs:redefine?
 
Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/

Received on Monday, 22 October 2001 11:51:39 UTC