DTD-Attributes

In a DTD, attributes are declared with an ATTLIST declaration.

DTD-Attributes

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