- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Tue, 17 Jun 2003 16:05:15 +0100
- To: "Hugh Wallis" <hugh_wallis@hyperion.com>
- CC: xmlschema-dev@w3.org
Hi Hugh,
> Can anyone explain to me how <attribute> and <attributeGroup> work
> when they appear inside a <restriction> in a type defintion please?
>
> Are they used to restrict the permissible content of an attribute,
> the attributes in an attribute group?
Yes. For example, the "num" attribute could be restricted from being
any xs:integer to being an integer between 1 and 10.
> In particular can it be used to prohibit a specific attribute that
> was formerly permitted before the restriction was imposed (actually
> I hope this is NOT a possible use - the examples given in the primer
> seem to indicate I am right by virtue of the fact that they don't
> address this possibility)?
Yes, you can prohibit an attribute that was allowed in the base type
definition. You do this using the use="prohibited" attribute. For
example:
<xs:complexType name="person">
<xs:attribute name="name" type="xs:token" />
<xs:attribute name="age" type="xs:integer" />
</xs:complexType>
<xs:complexType name="ageless-person">
<xs:complexContent>
<xs:restriction base="person">
<xs:attribute name="age" use="prohibited" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
Note that you can only prohibit optional attributes.
Other things that you can do on restriction are to make an attribute
required rather than optional, add a default value for the attribute,
or fix the attribute's value to the default value from the base type
definition.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
Received on Tuesday, 17 June 2003 11:05:29 UTC