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.