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 0 |
Default-value
The default-value can be one of the following:
Value | Explanation |
---|---|
value 1 |
The default value of the attribute |
#REQUIRED |
The attribute is required 2 |
#IMPLIED |
The attribute is not required |
#FIXED value 3 |
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. 4
Valid XML:
<Scale length ="100" /> |
REQUIRED
Syntax 5
<!ATTLIST element-name attribute_name attribute-type #REQUIRED> |
DTD Example
<!ATTLIST person number CDATA #REQUIRED> |
Valid XML:
<person id="5677" /> |
Invalid XML: 6
<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 7
<!ATTLIST element-name attribute-name attribute-type #IMPLIED> |
DTD Example
<!ATTLIST emergency no. CDATA #IMPLIED> |
Valid XML:
<emergency no.="555-667788" /> |
Valid XML: 8
<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 9
<!ATTLIST element-name attribute-name attribute-type #FIXED "value"> |
DTD Example
<!ATTLIST Client CDATA #FIXED "RoseIndia"> |
Valid XML:
<Client ="RoseIndia" /> |
Invalid XML: 0
<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 1
<!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. 2