Listing A



<!-- @(#)ltr_editor.dtd    1.5 03/28/02 -->
<!--
  - Root element types
  -->
<!ELEMENT letter     ANY>
<!ELEMENT form       ANY>
<!ATTLIST form
       dest          CDATA #IMPLIED>
       top           CDATA "0"
       bottom CDATA "0"
       left          CDATA "0"
       right         CDATA "0">
       logo_x CDATA "0"
       logo_y CDATA "0">
       orient ( land | port ) "port">
 
<!--  Simple Formatting  -->
<!ELEMENT br  EMPTY>
<!ELEMENT pg  EMPTY>
<!ELEMENT sig EMPTY>
<!ELEMENT i          ANY>
<!ELEMENT b          ANY>
<!ELEMENT tt  ANY>
 
<!--  Conditional Inclusion  -->
<!ELEMENT if         ANY>
<!ATTLIST if
       span          (yes | no) #IMPLIED
       sat           (yes | no) #IMPLIED
       office        CDATA #IMPLIED>
 
<!--  Repeatable content  -->
<!ELEMENT table      ANY>
<!ATTLIST table
       maxlength     CDATA "5"
       label         CDATA #IMPLIED>
 
<!--
  - Input element types
  -->
<!ELEMENT text             EMPTY>
<!ATTLIST text
       name          ID #IMPLIED
       valid         ( none | alpha | numeric | duration | alphanumeric |
                      date | issue | money   | percent  | zip |
                     acct_nbr | telephone | time ) "none"
       label         CDATA #REQUIRED
       value         CDATA #IMPLIED
       maxlength     CDATA #IMPLIED
       align         ( left | right | pack ) #IMPLIED
       opt           ( yes | no ) "no">
 
<!ELEMENT freetext   EMPTY>
<!ATTLIST freetext
       name          ID #IMPLIED
       label         CDATA #REQUIRED
       maxlength     CDATA "600"
       value         CDATA #IMPLIED
       opt           ( yes | no ) "no">
 
<!ELEMENT radiobox   (radio)+>
<!ATTLIST radiobox
       name          ID #IMPLIED
       label         CDATA #IMPLIED>
 
<!ELEMENT radio      EMPTY>
<!ATTLIST radio
       name          ID #IMPLIED
       label         CDATA #REQUIRED
       value         CDATA #IMPLIED>
 
<!ELEMENT checkbox   EMPTY>
<!ATTLIST checkbox
       name          ID #IMPLIED
       label         CDATA #REQUIRED
       value         CDATA #IMPLIED
       set           ( yes | no ) "no">
 
<!ELEMENT datetime   EMPTY>
<!ATTLIST datetime
       format CDATA #REQUIRED
       size          CDATA #REQUIRED>
 
<!ELEMENT repeat     EMPTY>
<!ATTLIST repeat
       name          IDREF #REQUIRED>
 
<!--
  - Entities for common fragments of letters
  -->
<!ENTITY ADDRESS
"<text valid='alphanumeric' maxlength='50' label='Customer Name'        name='cust_nm' /><br/>
<text valid='alphanumeric' maxlength='50' label='Apt. Number'        name='apt_nbr' opt='yes' /><br/>
<text valid='alphanumeric' maxlength='50' label='Street Address'        name='addr_street' /><br/>
<text valid='alphanumeric' maxlength='30' label='City and State'        name='addr_city' />
<text valid='zip' label='Zip Code' name='addr_zip' /><br/>"
        >
<!ENTITY CLOSING
"Sincerely,
<br/><br/><br/><br/>
<text label='CS Rep Name' value='@user.full_nm' /><br/>
Your Verizon Representative"
        >