The Revised DTD
Based on this information about the components of the !ELEMENT and !ATTLIST statements, we can rewrite our original DTD as follows:
<!ELEMENT html (head, body)>
<!ELEMENT head (title, base?)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT base EMPTY>
<!ATTLIST base target CDATA #REQUIRED>
<!ELEMENT body (basefont?, a?, table)>
<!ATTLIST body alink CDATA #IMPLIED
text CDATA #IMPLIED
bgcolor CDATA #IMPLIED
link CDATA #IMPLIED
vlink CDATA #IMPLIED>
<!ELEMENT basefont EMPTY>
<!ATTLIST basefont size CDATA #REQUIRED>
<!ELEMENT a (#PCDATA)>
<!ATTLIST a linkid ID #IMPLIED
href CDATA #IMPLIED
name CDATA #IMPLIED
target CDATA #IMPLIED>
<!ELEMENT table (tr+)>
<!ATTLIST table width CDATA #IMPLIED
rules CDATA #IMPLIED
frame CDATA #IMPLIED
align CDATA 'Center'
cellpadding CDATA '0'
border CDATA '0'
cellspacing CDATA '0'>
<!ELEMENT tr (td+)>
<!ATTLIST tr bgcolor (Cyan | Lime | Black | White | Maroon) 'White'
valign (Top | Middle | Bottom) 'Middle'
align (Left | Right | Center) 'Center'>
<!ELEMENT td (CellContent)>
<!ATTLIST td bgcolor (Cyan | Lime | Black | White | Maroon) 'White'
valign (Top | Middle | Bottom) 'Middle'
align (Left | Right | Center) 'Center'
rowspan CDATA #IMPLIED
colspan CDATA #IMPLIED>
<!ELEMENT CellContent (h1?| p?)+>
<!ATTLIST CellContent cellname CDATA #REQUIRED>
<!ELEMENT h1 (#PCDATA)>
<!ATTLIST h1 align CDATA #IMPLIED>
<!ELEMENT ImageLink (img, br?)>
<!ELEMENT p (#PCDATA | font | ImageLink | a | ul | ol)+>
<!ATTLIST p align CDATA #IMPLIED>
<!ELEMENT font (#PCDATA | b)*>
<!ATTLIST font color (Cyan | Lime | Black | White | Maroon) 'Black'
face ('Times New Roman '| Arial) #REQUIRED
size (2 | 3 | 4 | 5 | 6) '3'>
<!ELEMENT b (#PCDATA)>
<!ELEMENT img EMPTY>
<!ATTLIST img width CDATA #IMPLIED
height CDATA #IMPLIED
hspace CDATA #IMPLIED
vspace CDATA #IMPLIED
src CDATA #IMPLIED
alt CDATA #IMPLIED
align CDATA #IMPLIED
border CDATA #IMPLIED
lowsrc CDATA #IMPLIED>
<!ELEMENT br EMPTY>
<!ATTLIST br clear CDATA #REQUIRED>
<!ELEMENT ul (font?, li+)>
<!ATTLIST ul type CDATA #IMPLIED>
<!ELEMENT li (font?| a?)+>
<!ELEMENT ol (font?, li+)>
<!ATTLIST ol type CDATA #REQUIRED
start CDATA #REQUIRED>
|
The body element contains two optional child elements, basefont and a, and one required element, table. For this example, because you are using a table to format the page and all information will go into the table, the table element is required. The a element is used to create an anchor to the top of the page, and the basefont element specifies the default font size for the text in the document. Because all of the attributes associated with the body element are optional, they include the keyword #IMPLIED.
In the base element, the target attribute is required. It would make no sense to include a base element without specifying the target attribute, as the specification of this attribute is the reason you would use the base element. Therefore, the target attribute is #REQUIRED.
In the font element, the color and size attributes have enumerated data types and are assigned default values (Black and 3). The face attribute remains unchanged.