<?xml version='1.0' encoding='UTF-8' ?>

<!--Generated by XML Authority-->

<!-- implementation.dtd

    An xml application. The purpose of this document type declaration is
    to allow a reviewer of a user agent product to provide subjective
    assessment of it, based on how the product meets the checkpoints of
    the W3C Web Accessibility Initiative User Agent Accessibility Guidelines.
    For the latest version of those guidelines, see:
        http://www.w3.org/WAI/UA/UAAG10/
    
    Jon Gunderson, made changes to allow more flexibility in element order, 2002-01-24

    Jon Gunderson, Chair User Agent Working Group 2001-08-16

    HB: Change comments by Harvey Bingham on content 2001-8-16 

    Other comments attempt to describe the intended content of each
    element type. John, check these, particularly format

    Is there place in the dtd for URLs? As element types? as attribute
    and values?  Is there need for internal linking?  As it is now,
    a comment is unique to a particular checkpoint. An alternative is
    to provide a list of references to target comments from a list.
    This method would provide an abbreviated form, analogous to the
    [...] link form to document references in UAAG.

-->
<!-- implementation_report is the root of the document                -->
<!--HB: Suggest Root Name be "useragentevaluation" or "uaevrept" -->
<!ELEMENT implementation_report (subject , reviewer , date , format , guidelines , checkpoints)>

<!-- subject is user agent being reviewed -->
<!ELEMENT subject (title , version , os , src? , fname)>

<!-- title of the product -->
<!-- suggest title should be "product" -->
<!-- "title" is overworked, a reserved name in the html head -->
<!ELEMENT title (#PCDATA)>

<!ATTLIST title  abbr CDATA  #IMPLIED >
<!-- version of release -->
<!ELEMENT version (#PCDATA)>

<!-- operating system tested on -->
<!ELEMENT os (#PCDATA)>

<!ATTLIST os  abbr CDATA  #IMPLIED >
<!-- src where the product is available, URL? -->
<!ELEMENT src (#PCDATA)>

<!-- reviewer is the person doing the review -->
<!ELEMENT reviewer (name , email? , phone? , affiliation? , src?)>

<!-- name of reviewer, in normal order: honorific?, firstname,
 (middlename or initial)?, lastname, suffix? -->
<!ELEMENT name (#PCDATA)>

<!ATTLIST name  abbr CDATA  #IMPLIED >
<!-- email, suggest start with "desired name" &lt;name@organizatoin&gt; -->
<!ELEMENT email (#PCDATA)>

<!-- phone  include countrycode, US and CA +1-areacode-localnumber -->
<!ELEMENT phone (#PCDATA)>

<!-- affiliation of reviewer -->
<!ELEMENT affiliation (#PCDATA)>

<!ATTLIST affiliation  abbr CDATA  #IMPLIED >
<!-- date in form yyyymmdd -->
<!ELEMENT date (#PCDATA)>

<!-- format ??? -->
<!ELEMENT format (#PCDATA)>

<!ELEMENT checkpoints (checkpoint)*>

<!-- checkpoint number from UAAG1.0 -->
<!--HB: I believe the checkpoint number should be an element, not buried
in an attribute value which takes special handling to expose.
    so I added cpn -->
<!ELEMENT checkpoint (cpn? , rating , comment*)>

<!ATTLIST checkpoint  number CDATA  #IMPLIED >
<!--HB: Added cpn, checkpoint number, with content typically 3.1 -->
<!ELEMENT cpn (#PCDATA)>

<!--HB: Omit this checkpoint attlist -->
<!--ATTLIST checkpoint number CDATA #REQUIRED -->
<!-- rating is subjective judgement, amplified by comment
     Rating Codes      
     C  Complete implementation      
     VG Very Good implementation     
     G  Good implementation          
     P  Poor implementation
     NI No implementation          
     NA Not Applicable               
     NR Not Rated  -->
<!--HB: repaired content model, use convention above for content.
    no easy way to have DTD limit valid content of element except
    by order, name and replications ()?, (), ()*, ()+ -->
<!ELEMENT rating (#PCDATA)>

<!-- comment is rationale for rating -->
<!ELEMENT comment (#PCDATA)>

<!ELEMENT guidelines (title , version , src)>

<!ELEMENT fname (#PCDATA)>

