[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: Issue: overriding attributes
I have been looking at translating W3C XML Schema into RELAX NG. Almost everything seems to translate quite straightfowardly. However, there's one capability that W3C XML Schema has which we don't have. If you define a complex type with some attributes and then derive a new complex type, the derived type by default picks up the attributes from the base type, but the derived type can have additional attribute declarations and these override any attribute declarations of the same name in the base type. So for example if you have some complex type that defines 20 attributes, and you want to make a new type that prohibits one of those attributes or changes the type from being optional to required, then you can do it very conveniently. XML 1.0 provides a similar capability, in that you can have multiple ATTLIST declarations for an element declaring the same attribute, and the first one wins. One could imagine ways to provide this capability in RELAX NG. For example, by analogy with <define> in <include>, you could allow <ref name="foo"> <attribute name="bar"/> </ref> The effect would be the same as <group> <ref name="foo"/> <attribute name="bar"/> </group> except that any occurrences of <attribute name="bar"/> in foo would be changed to <notAllowed/> (and appropriate <except/> clauses would be added to occurrences of nsName and anyName in foo). Is this a capability we need for RELAX 1.0? James
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC