- From: Jan Pridal <jan.pridal@gmail.com>
- Date: Wed, 26 Aug 2009 09:22:53 +0200
- To: xmlschema-dev@w3.org
OK, so let's say we get rid off this repeating of content model declaration using named model group, see below. There's still one place I'd like to fix - the enumeration of all attributes from 'attributes' attributeGroup inside the 'parentWithReqLabelAttr' type declaration. <xsd:attributeGroup name="attributes"> <xsd:attribute name="label" type="xsd:string" /> ... </xsd:attributeGroup> <xsd:group name="commonElements"> <xsd:sequence> ... </xsd:sequence> </xsd:group> <xsd:complexType name="parent"> <xsd:group ref="commonElements"/> <xsd:attributeGroup ref="attributes"/> </xsd:complexType> <xsd:complexType name="parentWithReqLabelAttr"> <xsd:complexContent> <xsd:restriction base="parent"> <xsd:group ref="commonElements"/> <xsd:attribute name="label" type="xsd:string" use="required"/> ... list all remaining attributes from 'attributes' group!!! </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="derivedWithOptLabelAttr"> <xsd:complexContent> <xsd:extension base="parent"> <xsd:sequence> <xsd:element ref="style"/> </xsd:sequence> <xsd:attribute name="icon" type="xsd:string" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="derivedWithReqLabelAttr"> <xsd:complexContent> <xsd:extension base="parentWithReqLabelAttr"> <xsd:sequence> <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> I'd like to have there something like a restriction of attributeGroup, either local or a global inside the type 'parentWithReqLabelAttr': <xsd:attributeGroup name="attributesWithReqLabelAttr"> <xsd:attributeGroup ref="attributes"> <xsd:attribute ref="label" use="required"/> </xsd:attributeGroup> </xsd:attributeGroup> If this can be achieved then I would be able to add a new attribute to the 'attributes' attributeGroup without changing the 'parentWithReqLabelAttr' type. However as far as I know there's no such mechanism. Jan Pridal 2009/8/17 Michael Kay <mike@saxonica.com>: >> But it is then more than a little bit awkward - as I have to >> add a new complexType that restricts the complexType 'parent' >> and then within it I have to repeat all the stuff declared >> the 'parent' and its parent types (by extension) etc. > > Yes, that's a particularly nasty feature of derivation by restriction. > > If you're only restricting the attributes, and not the content model, you > can get around it by having both the base type and the derived type > reference the same named model group. > > Regards, > > Michael Kay > http://www.saxonica.com/ > http://twitter.com/michaelhkay > >
Received on Wednesday, 26 August 2009 07:23:34 UTC