DTD-Attributes

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.