In a DTD, attributes are declared with an ATTLIST
declaration.
Declaring Attributes
The ATTLIST declaration defines the element having a
attribute with attribute name , attribute type , and attribute
default value. An attribute declaration has the following syntax:
<!ATTLIST element-name attribute-name attribute-type default-value> |
DTD example:
| <!ATTLIST reciept type CDATA "check"> |
XML example:
| <reciept type="check" /> |
Attribute-type
The attribute-type can be one of the following:
| Type | Description |
|---|---|
|
CDATA |
The value is character data |
|
(en1|en2|..) |
The value must be one from an enumerated list |
|
ID |
The value is a unique id |
|
IDREF |
The value is the id of another element |
|
IDREFS |
The value is a list of other ids |
|
NMTOKEN |
The value is a valid XML name |
|
NMTOKENS |
The value is a list of valid XML names |
|
ENTITY |
The value is an entity |
|
ENTITIES |
The value is a list of entities |
|
NOTATION |
The value is a name of a notation |
|
xml: |
The value is a predefined xml value |
Default-value
The default-value can be one of the following:
| Value | Explanation |
|---|---|
|
value |
The default value of the attribute |
|
#REQUIRED |
The attribute is required |
|
#IMPLIED |
The attribute is not required |
|
#FIXED value |
The attribute value is fixed |
A Default Attribute Value
DTD Example:
<!ELEMENT Scale EMPTY> <!ATTLIST Scale length CDATA "0"> |
In the example above, the DTD defines a "Scale"
element to be empty with a "length " attribute of
type CDATA . If no length is specified, it has a default value of 0.
Valid XML:
| <Scale length ="100" /> |
REQUIRED
Syntax
<!ATTLIST element-name attribute_name attribute-type #REQUIRED> |
DTD Example
| <!ATTLIST person number CDATA #REQUIRED> |
Valid XML:
| <person id="5677" /> |
Invalid XML:
<person /> |
Use the #REQUIRED keyword if you don't have an option
for a default value, but still want to force the attribute to be present.
IMPLIED
Syntax
<!ATTLIST element-name attribute-name attribute-type #IMPLIED> |
DTD Example
| <!ATTLIST emergency no. CDATA #IMPLIED> |
Valid XML:
| <emergency no.="555-667788" /> |
Valid XML:
<emergency/> |
Use the #IMPLIED keyword if you don't want to force the
author to include an attribute, and you don't have an option for a default
value.
FIXED
Syntax
<!ATTLIST element-name attribute-name attribute-type #FIXED "value"> |
DTD Example
| <!ATTLIST Client CDATA #FIXED "RoseIndia"> |
Valid XML:
| <Client ="RoseIndia" /> |
Invalid XML:
<Client="LotusIndia" /> |
Use the #FIXED keyword when you want an attribute to
have a fixed value without allowing the author to change it. If an author
includes another value, the XML parser will return an error.
Enumerated Attribute Values
Syntax
<!ATTLIST element-name attribute-name (en1|en2|..) default-value> |
DTD Example
| <!ATTLIST reciept type (check|cash) "cash"> |
XML example:
<reciept type="check" /> or <reciept type="cash" /> |
Use enumerated attribute values when you want the
attribute value to be one of a fixed set of legal values.