<!-- EXTENSIONS TO THE DTD -->
<!-- (inteded for use with the i18n-geo techniques documents, the wai-techniques documents, the Character Model specification and other documents created within the i18n Activity of the W3C.) .................................. -->
<!-- ............................................................... -->
<!-- ............................................................................ -->
<!--      Additions for Character Model only          ..... -->
<!-- ............................................................................ -->
<!-- For additional information about usage, see http://www.w3.org/International/Group/styleguide/ -->

<!-- CHANGE INFORMATION
17 july 2005: ishida@w3.org
	- Reduced the content model of resources to just include multiple resource elements.
	- Changed the resource element to make bibref optional.
-->



<!-- ins and del are added here rather than the @diff scheme because
it is easier (quicker) and more precise for marking up text (if using XMetal - just
highlight the appropriate text and double-click the element in
the element list).  It also make life much easier to convert to xhtml using xsl
than using a common attribute. -->
<!-- Used by: %local.emph.class -->
<!ELEMENT ins (%p.pcd.mix;)*>

<!ATTLIST ins  %common.att; >
<!-- Used by: %local.emph.class -->
<!ELEMENT del (%p.pcd.mix;)*>

<!ATTLIST del  %common.att; >
<!-- The req and req-list elements are used to highlight the actual requirements in the text.  Each
requirement is associated with one or more of S, I, or C (specifications, implementations, or content) 
to indicate relevance. This is rendered currently as yellow background, with relevance indicated by
appropriate letters (S,I, or C) enclosed in square brackets at the beginning. -->
<!-- Used by: p TODO: what is p?-->
<!ELEMENT req (req-type+ , req-text)>
<!ATTLIST req id ID #IMPLIED>

<!-- Used by: %local.div.mix -->
<!ELEMENT req-list (req-type+ , req-text , (%list.class;)?)>
<!ATTLIST req-list id ID #IMPLIED>

<!ELEMENT req-text (%p.pcd.mix;)*>

<!ATTLIST req-text  %common.att; >
<!ELEMENT req-type (#PCDATA)>

<!-- ............................................................................ -->
<!--      Generally useful additions                  ..... -->
<!-- ............................................................................ -->
<!-- 	For documentation see 
	http://www.w3.org/International/geo/html-tech/documentation/documentation-dtd.html -->
<!-- The declaration of rfc2119 is integrated into the entity % rfc2119.element, so it is put into a comment here.
<!ELEMENT rfc2119 (%tech.pcd.mix;)*>
<!ATTLIST rfc2119  %common.att; >
-->
<!-- Used by: %local.tech.class -->
<!ELEMENT qterm (%tech.pcd.mix;)*>

<!ATTLIST qterm  %common.att; >
<!-- Used by: %local.tech.class -->
<!ELEMENT qchar (%tech.pcd.mix;)*>

<!ATTLIST qchar  %common.att; >
<!-- Used by: %local.tech.class -->
<!ELEMENT abbr (%tech.pcd.mix;)*>

<!ATTLIST abbr  %common.att;
                  expansion  CDATA  #REQUIRED >
<!-- Used by: %local.termdef.class -->
<!ELEMENT uname (%tech.pcd.mix;)*>

<!ATTLIST uname  %common.att; >
<!-- Used by: %local.tech.class -->
<!ELEMENT figure ((table | image) , caption?)>

<!ATTLIST figure  %common.att; >
<!-- Used by: %local.illus.class -->
<!ELEMENT image (img , alt)>

<!ATTLIST image  %common.att; >
<!-- Used by: %local.illus.class -->
<!ELEMENT alt (%termdef.pcd.mix;)*>

<!ATTLIST alt  %common.att; >
<!ELEMENT img EMPTY>

<!ATTLIST img  %common.att;
                 %simple-xlink.att;
                 source           CDATA  #REQUIRED
                 %auto-embed.att;
                 height           CDATA  #IMPLIED
                 width            CDATA  #IMPLIED >
<!-- Used by: %local.illus.class -->
<!-- The declaration of the "bdo" element is no longer necessary, since its purpose is fulfiled via the dir attribute, taken from XHTML 2.
<!ELEMENT bdo (%p.pcd.mix;)*>
-->
<!-- ATTLIST bdo xml:lang CDATA #IMPLIED-->



<!-- Used by: %local.emph.class -->
<!-- ............................................................................ -->
<!--      Additions for Techniques documents ..... -->
<!-- ............................................................................ -->
<!-- 	For documentation relating to GEO use see 
	http://www.w3.org/International/geo/html-tech/documentation/documentation-dtd.html 

	To allow maximum synergy between dtds in spite of differing requirements, different techniques 
	elements have been defined for use by geo and wai.  If sub-techniques level elements are 
	specific to wai or geo this will be noted.  Otherwise elements are shared.
	Content authors must be clear which of these to use for the document they are creating. -->
<!ELEMENT geo-technique (short-name ,  checklist-item+ , description , ua-issues* , resources* , test* , admin* , scripts? , ua-applicability?)>

<!ATTLIST geo-technique  id ID  #REQUIRED >
<!-- Used by: %local.div.mix; -->
<!-- GEO only -->
<!ELEMENT wai-technique (short-name , rule? , applies-to , checklist-item+ , description , ua-issues* , eg-group* , resources* , test* , admin*)>

<!ATTLIST wai-technique  id ID  #REQUIRED >
<!-- Used by: %local.div.mix; -->
<!-- WAI only -->

<!ELEMENT rule (p|ulist)+>
<!-- WAI only - may be redundant -->



<!ELEMENT short-name (%head.pcd.mix;)*>

<!ATTLIST short-name  %common.att; >
<!-- Used by: geo-technique, wai-technique -->
<!ELEMENT applies-to (checkpoint+ , success-criterion+)>

<!-- Used by: wai-technique -->
<!-- WAI only -->
<!-- groups references to the checkpoint(s) and success criterion/criteria that this
	technique satisfies (WAC: 20030129) -->
<!ELEMENT checkpoint EMPTY>

<!ATTLIST checkpoint  idref IDREF  #REQUIRED >
<!-- associates a technique with a checkpoint (WAC: 20030129) -->
<!-- Used by: applies-to -->
<!-- WAI only -->
<!ELEMENT success-criterion EMPTY>

<!ATTLIST success-criterion  idref IDREF  #REQUIRED >
<!-- associates a technique with a success criterion  (WAC: 20030129) -->
<!-- Used by: applies-to -->
<!-- WAI only -->
<!ELEMENT checklist-item (%hdr.mix;)*>

<!ATTLIST checklist-item  %common.att; >
<!-- Used by: geo-technique, wai-technique -->
<!ELEMENT description (%obj.mix;)*>

<!ATTLIST description  %common.att; >
<!-- Used by: geo-technique, wai-technique, example -->
<!ELEMENT technology (bibref)*>

<!ATTLIST technology  %common.att; >
<!-- what technology does this technique apply to -->
<!-- Used by: technique -->
<!-- WAI only -->
<!ELEMENT ua-issues (ua-issue)+>

<!ATTLIST ua-issues  %common.att; >
<!-- Used by: geo-technique, wai-technique -->
<!ELEMENT ua-issue (%obj.mix;)*>

<!ATTLIST ua-issue  %common.att;
                      name       CDATA  #REQUIRED
                      version    CDATA  #REQUIRED >
<!ELEMENT eg-group (description , code , graphic* , audio-clip*)>

<!ATTLIST eg-group  %common.att; >
<!-- groups example code, screen shots, audio clips, and explanations of examples 
	related to a technique (WAC: 20030205 -->
<!-- Used by: wai-technique -->
<!-- WAI only -->
<!-- @@ is it ok to reuse description here? is there an xmlspec element we should reuse? 
      @@ we ought to consider using xmlspec:example instead of code, description, and graphic (all members 
	of obj.mix
	if we do, then we could add audio-clip to the illustration class.
	@@ confirm that audio-clip has the same structure
	as graphic. 
	@@ should audio-clip and graphic have *required* text descriptiont? i.e., not be empty? 
	@@graphic's alt attribute should be required -->
<!ELEMENT audio-clip (%obj.mix;)*>

<!ATTLIST audio-clip  %common.att;
                        source     CDATA  #REQUIRED
                        alt        CDATA  #REQUIRED >
<!-- Used by: ???-->
<!-- WAI only -->
<!--ELEMENT resources (resource* , (see-also | tech-source)*)-->
<!ELEMENT resources (resource*)>

<!ATTLIST resources  %common.att; >
<!-- Used by: geo-technique, wai-technique -->
<!ELEMENT resource-list (xref-list? , resource* , (%obj.mix;)*)>

<!-- Used by: %local.div.mix;-->
<!ELEMENT xref-list (xref+)>

<!-- Used by: resource-list -->
<!ELEMENT xref (resource-descn , specref+)>

<!-- Used by: xref-list -->
<!ELEMENT resource (bibref? , loc , resource-descn)>

<!ATTLIST resource  resource-type  (source | 
                                      background | 
                                      implementation | 
                                      test | 
                                      other )  #REQUIRED
                      id            ID  #IMPLIED >
<!-- Used by: resources, resource-list -->
<!ELEMENT resource-descn (%p.pcd.mix;)*>

<!-- Used by: resource -->
<!-- DEPRECATED - currently not used by GEO -->
<!ELEMENT see-also (%hdr.mix;)*>

<!ATTLIST see-also  %common.att; >
<!-- Used by: resources -->
<!-- DEPRECATED - currently not used by GEO -->
<!ELEMENT tech-source (%hdr.mix;)*>

<!ATTLIST tech-source  %common.att; >
<!-- Used by: resources -->
<!ELEMENT test (%obj.mix;)*>

<!ATTLIST test  %common.att; >
<!-- Used by: ????? -->
<!-- WAI only -->
<!ELEMENT admin (source+ , tech-author+ , comment+)>

<!-- Used by: geo-technique, wai-technique -->
<!-- WAI only -->
<!ELEMENT src EMPTY>

<!ATTLIST src  href       CDATA  #REQUIRED
                 %common.att; >
<!-- Used by: ????? -->
<!-- WAI only -->
<!ELEMENT tech-author (%p.pcd.mix;)*>

<!ATTLIST tech-author  uri        CDATA  #REQUIRED
                         %common.att; >
<!-- Used by: admin -->
<!-- WAI only -->
<!ELEMENT comment (%p.pcd.mix;)*>

<!ATTLIST comment  %common.att; >
<!-- Used by: admin -->
<!-- WAI only -->
<!ELEMENT include (%head.pcd.mix;)*>

<!ATTLIST include  %common.att;
                     doc        CDATA  #REQUIRED
                     idref      CDATA  #REQUIRED
                     mode        (technique | rule | link )  #REQUIRED >
<!-- Used by: %local.div.mix; %local.obj.mix; -->
<!ELEMENT scripts (all | na | script+)>

<!ELEMENT all EMPTY>

<!ELEMENT na EMPTY>

<!-- Used by: geo-technique -->
<!ELEMENT script EMPTY>

<!ATTLIST script  scriptname  (%scriptnames; )  #REQUIRED >
<!-- All used by: scripts -->
<!ELEMENT ua-applicability (ua)*>

<!ELEMENT ua EMPTY>

<!ATTLIST ua  ua-name  (%useragents; )  #REQUIRED
                version CDATA  #REQUIRED >
<!-- Used by: geo-technique -->
<!--    strlist: String list. 
		Used to externalise text strings that would otherwise appear in the XSLT file. 
		Externalizing such strings is useful for translatability. -->
<!ELEMENT strlist (externalizedStr+)>

<!ELEMENT externalizedStr (string , context)>

<!ATTLIST externalizedStr  id ID  #REQUIRED >
<!ELEMENT string (%head.pcd.mix; | variable)*>

<!ELEMENT context  (#PCDATA %ubiquitous.phrase.class;)*>
<!ELEMENT variable (#PCDATA %ubiquitous.phrase.class;)*>
<!ATTLIST variable  name      CDATA  #REQUIRED
                      maxlength CDATA  #IMPLIED >
