- 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