http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2218

*** shadow/2218 Mon Jun 18 10:40:01 2001
--- shadow/2218.tmp.20107       Mon Jun 18 10:40:01 2001
***************
*** 0 ****
--- 1,1039 ----
+ +============================================================================+
+ | NULL Pointer exception on invalid DTD                                      |
+ +----------------------------------------------------------------------------+
+ |        Bug #: 2218                        Product: Xerces-J                |
+ |       Status: NEW                         Version: 1.4                     |
+ |   Resolution:                            Platform: PC                      |
+ |     Severity: Normal                   OS/Version: Other                   |
+ |     Priority: Other                     Component: DTD                     |
+ +----------------------------------------------------------------------------+
+ |  Assigned To: [EMAIL PROTECTED]                                  |
+ |  Reported By: [EMAIL PROTECTED]                                        |
+ |      CC list: Cc:                                                          |
+ +----------------------------------------------------------------------------+
+ |          URL:                                                              |
+ +============================================================================+
+ |                              DESCRIPTION                                   |
+ In trying to find some valid DTDs on which to test the XML parser, I tried 
+ using the DTD from the w3C page for strict XHTML.  As it turns out this DTD 
+ doesn't look like it complies with the XML 1.0 specification (which is a pretty 
+ weird thing, I think, but that is another matter).  Anyway running if through 
+ Xerces-J I get the following exception.  I think that printing out an error 
+ rather than throwing a null pointer exception is really the correct thing to do.
+ 
+ So this has "two attachments" here first the stack trace followed by the DTD 
+ which is put into a valid XML document.
+ 
+ -----------------------------Exception-----------------------------------------
+ C:\JBUILDER4\JDK1.3\bin\javaw -
+ classpath "C:\matthew\java\SAXPrint\classes;C:\matthew\xml\xerces-1_4_0
+ \xerces.jar;C:\JBUILDER4\JDK1.3\demo\jfc\Java2D\Java2Demo.jar;C:\JBUILDER4
+ \JDK1.3\jre\lib\i18n.jar;C:\JBUILDER4\JDK1.3\jre\lib\jaws.jar;C:\JBUILDER4
+ \JDK1.3\jre\lib\rt.jar;C:\JBUILDER4\JDK1.3\jre\lib\sunrsasign.jar;C:\JBUILDER4
+ \JDK1.3\lib\dt.jar;C:\JBUILDER4\JDK1.3\lib\tools.jar"  saxprint.SAXPrint 
+ c:\matthew\xml\mytests\test5.xml c:\matthew\xml\schema\XMLSchema.xml 
+ Document locator
+ 
+ Start document
+ 
+ java.lang.NullPointerException
+ 
+       at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1048)
+ 
+       at saxprint.SAXPrint.<init>(SAXPrint.java:87)
+ 
+       at saxprint.SAXPrint.main(SAXPrint.java:99)
+ 
+ -----------------------------DOCUMENT------------------------------------------
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE person [
+ <!--
+    Extensible HTML version 1.0 Strict DTD
+ 
+    This is the same as HTML 4.0 Strict except for
+    changes due to the differences between XML and SGML.
+ 
+    Namespace = http://www.w3.org/1999/xhtml
+ 
+    For further information, see: http://www.w3.org/TR/xhtml1
+ 
+    Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),
+    All Rights Reserved. 
+ 
+    This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+ 
+    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";
+ 
+    $Revision: 1.1 $
+    $Date: 2000/01/26 14:08:56 $
+ 
+ -->
+ 
+ <!--================ Character mnemonic entities =========================-->
+ 
+ <!ENTITY % HTMLlat1 PUBLIC
+    "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+    "xhtml-lat1.ent">
+ %HTMLlat1;
+ 
+ <!ENTITY % HTMLsymbol PUBLIC
+    "-//W3C//ENTITIES Symbols for XHTML//EN"
+    "xhtml-symbol.ent">
+ %HTMLsymbol;
+ 
+ <!ENTITY % HTMLspecial PUBLIC
+    "-//W3C//ENTITIES Special for XHTML//EN"
+    "xhtml-special.ent">
+ %HTMLspecial;
+ 
+ <!--================== Imported Names ====================================-->
+ 
+ <!ENTITY % ContentType "CDATA">
+     <!-- media type, as per [RFC2045] -->
+ 
+ <!ENTITY % ContentTypes "CDATA">
+     <!-- comma-separated list of media types, as per [RFC2045] -->
+ 
+ <!ENTITY % Charset "CDATA">
+     <!-- a character encoding, as per [RFC2045] -->
+ 
+ <!ENTITY % Charsets "CDATA">
+     <!-- a space separated list of character encodings, as per [RFC2045] -->
+ 
+ <!ENTITY % LanguageCode "NMTOKEN">
+     <!-- a language code, as per [RFC1766] -->
+ 
+ <!ENTITY % Character "CDATA">
+     <!-- a single character from [ISO10646] -->
+ 
+ <!ENTITY % Number "CDATA">
+     <!-- one or more digits -->
+ 
+ <!ENTITY % LinkTypes "CDATA">
+     <!-- space-separated list of link types -->
+ 
+ <!ENTITY % MediaDesc "CDATA">
+     <!-- single or comma-separated list of media descriptors -->
+ 
+ <!ENTITY % URI "CDATA">
+     <!-- a Uniform Resource Identifier, see [RFC2396] -->
+ 
+ <!ENTITY % UriList "CDATA">
+     <!-- a space separated list of Uniform Resource Identifiers -->
+ 
+ <!ENTITY % Datetime "CDATA">
+     <!-- date and time information. ISO date format -->
+ 
+ <!ENTITY % Script "CDATA">
+     <!-- script expression -->
+ 
+ <!ENTITY % StyleSheet "CDATA">
+     <!-- style sheet data -->
+ 
+ <!ENTITY % Text "CDATA">
+     <!-- used for titles etc. -->
+ 
+ <!ENTITY % FrameTarget "NMTOKEN">
+     <!-- render in this frame -->
+ 
+ <!ENTITY % Length "CDATA">
+     <!-- nn for pixels or nn% for percentage length -->
+ 
+ <!ENTITY % MultiLength "CDATA">
+     <!-- pixel, percentage, or relative -->
+ 
+ <!ENTITY % MultiLengths "CDATA">
+     <!-- comma-separated list of MultiLength -->
+ 
+ <!ENTITY % Pixels "CDATA">
+     <!-- integer representing length in pixels -->
+ 
+ <!-- these are used for image maps -->
+ 
+ <!ENTITY % Shape "(rect|circle|poly|default)">
+ 
+ <!ENTITY % Coords "CDATA">
+     <!-- comma separated list of lengths -->
+ 
+ <!--=================== Generic Attributes ===============================-->
+ 
+ <!-- core attributes common to most elements
+   id       document-wide unique id
+   class    space separated list of classes
+   style    associated style info
+   title    advisory title/amplification
+ -->
+ <!ENTITY % coreattrs
+  "id          ID             #IMPLIED
+   class       CDATA          #IMPLIED
+   style       %StyleSheet;   #IMPLIED
+   title       %Text;         #IMPLIED"
+   >
+ 
+ <!-- internationalization attributes
+   lang        language code (backwards compatible)
+   xml:lang    language code (as per XML 1.0 spec)
+   dir         direction for weak/neutral text
+ -->
+ <!ENTITY % i18n
+  "lang        %LanguageCode; #IMPLIED
+   xml:lang    %LanguageCode; #IMPLIED
+   dir         (ltr|rtl)      #IMPLIED"
+   >
+ 
+ <!-- attributes for common UI events
+   onclick     a pointer button was clicked
+   ondblclick  a pointer button was double clicked
+   onmousedown a pointer button was pressed down
+   onmouseup   a pointer button was released
+   onmousemove a pointer was moved onto the element
+   onmouseout  a pointer was moved away from the element
+   onkeypress  a key was pressed and released
+   onkeydown   a key was pressed down
+   onkeyup     a key was released
+ -->
+ <!ENTITY % events
+  "onclick     %Script;       #IMPLIED
+   ondblclick  %Script;       #IMPLIED
+   onmousedown %Script;       #IMPLIED
+   onmouseup   %Script;       #IMPLIED
+   onmouseover %Script;       #IMPLIED
+   onmousemove %Script;       #IMPLIED
+   onmouseout  %Script;       #IMPLIED
+   onkeypress  %Script;       #IMPLIED
+   onkeydown   %Script;       #IMPLIED
+   onkeyup     %Script;       #IMPLIED"
+   >
+ 
+ <!-- attributes for elements that can get the focus
+   accesskey   accessibility key character
+   tabindex    position in tabbing order
+   onfocus     the element got the focus
+   onblur      the element lost the focus
+ -->
+ <!ENTITY % focus
+  "accesskey   %Character;    #IMPLIED
+   tabindex    %Number;       #IMPLIED
+   onfocus     %Script;       #IMPLIED
+   onblur      %Script;       #IMPLIED"
+   >
+ 
+ <!ENTITY % attrs "%coreattrs; %i18n; %events;">
+ 
+ <!--=================== Text Elements ====================================-->
+ 
+ <!ENTITY % special
+    "br | span | bdo | object | img | map">
+ 
+ <!ENTITY % fontstyle "tt | i | b | big | small">
+ 
+ <!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+                    samp | kbd | var | cite | abbr | acronym">
+ 
+ <!ENTITY % inline.forms "input | select | textarea | label | button">
+ 
+ <!-- these can occur at block or inline level -->
+ <!ENTITY % misc "ins | del | script | noscript">
+ 
+ <!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+ 
+ <!-- %Inline; covers inline or "text-level" elements -->
+ <!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+ 
+ <!--================== Block level elements ==============================-->
+ 
+ <!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+ <!ENTITY % lists "ul | ol | dl">
+ <!ENTITY % blocktext "pre | hr | blockquote | address">
+ 
+ <!ENTITY % block
+      "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
+ 
+ <!ENTITY % Block "(%block; | form | %misc;)*">
+ 
+ <!-- %Flow; mixes Block and Inline and is used for list items etc. -->
+ <!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+ 
+ <!--================== Content models for exclusions =====================-->
+ 
+ <!-- a elements use %Inline; excluding a -->
+ 
+ <!ENTITY % a.content
+    "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
+ 
+ <!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
+ 
+ <!ENTITY % pre.content
+    "(#PCDATA | a | br | span | bdo | map | tt | i | b |
+       %phrase; | %inline.forms;)*">
+ 
+ <!-- form uses %Block; excluding form -->
+ 
+ <!ENTITY % form.content "(%block; | %misc;)*">
+ 
+ <!-- button uses %Flow; but excludes a, form and form controls -->
+ 
+ <!ENTITY % button.content
+    "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+     table | %special; | %fontstyle; | %phrase; | %misc;)*">
+ 
+ <!--================ Document Structure ==================================-->
+ 
+ <!-- the namespace URI designates the document profile -->
+ 
+ <!ELEMENT html (head, body)>
+ <!ATTLIST html
+   %i18n;
+   xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
+   >
+ 
+ <!--================ Document Head =======================================-->
+ 
+ <!ENTITY % head.misc "(script|style|meta|link|object)*">
+ 
+ <!-- content model is %head.misc; combined with a single
+      title and an optional base element in any order -->
+ 
+ <!ELEMENT head (%head.misc;,
+      ((title, %head.misc;, (base, %head.misc;)?) |
+       (base, %head.misc;, (title, %head.misc;))))>
+ 
+ <!ATTLIST head
+   %i18n;
+   profile     %URI;          #IMPLIED
+   >
+ 
+ <!-- The title element is not considered part of the flow of text.
+        It should be displayed, for example as the page header or
+        window title. Exactly one title is required per document.
+     -->
+ <!ELEMENT title (#PCDATA)>
+ <!ATTLIST title %i18n;>
+ 
+ <!-- document base URI -->
+ 
+ <!ELEMENT base EMPTY>
+ <!ATTLIST base
+   href        %URI;          #IMPLIED
+   >
+ 
+ <!-- generic metainformation -->
+ <!ELEMENT meta EMPTY>
+ <!ATTLIST meta
+   %i18n;
+   http-equiv  CDATA          #IMPLIED
+   name        CDATA          #IMPLIED
+   content     CDATA          #REQUIRED
+   scheme      CDATA          #IMPLIED
+   >
+ 
+ <!--
+   Relationship values can be used in principle:
+ 
+    a) for document specific toolbars/menus when used
+       with the link element in document head e.g.
+         start, contents, previous, next, index, end, help
+    b) to link to a separate style sheet (rel="stylesheet")
+    c) to make a link to a script (rel="script")
+    d) by stylesheets to control how collections of
+       html nodes are rendered into printed documents
+    e) to make a link to a printable version of this document
+       e.g. a PostScript or PDF version (rel="alternate" media="print")
+ -->
+ 
+ <!ELEMENT link EMPTY>
+ <!ATTLIST link
+   %attrs;
+   charset     %Charset;      #IMPLIED
+   href        %URI;          #IMPLIED
+   hreflang    %LanguageCode; #IMPLIED
+   type        %ContentType;  #IMPLIED
+   rel         %LinkTypes;    #IMPLIED
+   rev         %LinkTypes;    #IMPLIED
+   media       %MediaDesc;    #IMPLIED
+   >
+ 
+ <!-- style info, which may include CDATA sections -->
+ <!ELEMENT style (#PCDATA)>
+ <!ATTLIST style
+   %i18n;
+   type        %ContentType;  #REQUIRED
+   media       %MediaDesc;    #IMPLIED
+   title       %Text;         #IMPLIED
+   xml:space   (preserve)     #FIXED 'preserve'
+   >
+ 
+ <!-- script statements, which may include CDATA sections -->
+ <!ELEMENT script (#PCDATA)>
+ <!ATTLIST script
+   charset     %Charset;      #IMPLIED
+   type        %ContentType;  #REQUIRED
+   src         %URI;          #IMPLIED
+   defer       (defer)        #IMPLIED
+   xml:space   (preserve)     #FIXED 'preserve'
+   >
+ 
+ <!-- alternate content container for non script-based rendering -->
+ 
+ <!ELEMENT noscript %Block;>
+ <!ATTLIST noscript
+   %attrs;
+   >
+ 
+ <!--=================== Document Body ====================================-->
+ 
+ <!ELEMENT body %Block;>
+ <!ATTLIST body
+   %attrs;
+   onload          %Script;   #IMPLIED
+   onunload        %Script;   #IMPLIED
+   >
+ 
+ <!ELEMENT div %Flow;>  <!-- generic language/style container -->
+ <!ATTLIST div
+   %attrs;
+   >
+ 
+ <!--=================== Paragraphs =======================================-->
+ 
+ <!ELEMENT p %Inline;>
+ <!ATTLIST p
+   %attrs;
+   >
+ 
+ <!--=================== Headings =========================================-->
+ 
+ <!--
+   There are six levels of headings from h1 (the most important)
+   to h6 (the least important).
+ -->
+ 
+ <!ELEMENT h1  %Inline;>
+ <!ATTLIST h1
+    %attrs;
+    >
+ 
+ <!ELEMENT h2 %Inline;>
+ <!ATTLIST h2
+    %attrs;
+    >
+ 
+ <!ELEMENT h3 %Inline;>
+ <!ATTLIST h3
+    %attrs;
+    >
+ 
+ <!ELEMENT h4 %Inline;>
+ <!ATTLIST h4
+    %attrs;
+    >
+ 
+ <!ELEMENT h5 %Inline;>
+ <!ATTLIST h5
+    %attrs;
+    >
+ 
+ <!ELEMENT h6 %Inline;>
+ <!ATTLIST h6
+    %attrs;
+    >
+ 
+ <!--=================== Lists ============================================-->
+ 
+ <!-- Unordered list -->
+ 
+ <!ELEMENT ul (li)+>
+ <!ATTLIST ul
+   %attrs;
+   >
+ 
+ <!-- Ordered (numbered) list -->
+ 
+ <!ELEMENT ol (li)+>
+ <!ATTLIST ol
+   %attrs;
+   >
+ 
+ <!-- list item -->
+ 
+ <!ELEMENT li %Flow;>
+ <!ATTLIST li
+   %attrs;
+   >
+ 
+ <!-- definition lists - dt for term, dd for its definition -->
+ 
+ <!ELEMENT dl (dt|dd)+>
+ <!ATTLIST dl
+   %attrs;
+   >
+ 
+ <!ELEMENT dt %Inline;>
+ <!ATTLIST dt
+   %attrs;
+   >
+ 
+ <!ELEMENT dd %Flow;>
+ <!ATTLIST dd
+   %attrs;
+   >
+ 
+ <!--=================== Address ==========================================-->
+ 
+ <!-- information on author -->
+ 
+ <!ELEMENT address %Inline;>
+ <!ATTLIST address
+   %attrs;
+   >
+ 
+ <!--=================== Horizontal Rule ==================================-->
+ 
+ <!ELEMENT hr EMPTY>
+ <!ATTLIST hr
+   %attrs;
+   >
+ 
+ <!--=================== Preformatted Text ================================-->
+ 
+ <!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
+ 
+ <!ELEMENT pre %pre.content;>
+ <!ATTLIST pre
+   %attrs;
+   xml:space (preserve) #FIXED 'preserve'
+   >
+ 
+ <!--=================== Block-like Quotes ================================-->
+ 
+ <!ELEMENT blockquote %Block;>
+ <!ATTLIST blockquote
+   %attrs;
+   cite        %URI;          #IMPLIED
+   >
+ 
+ <!--=================== Inserted/Deleted Text ============================-->
+ 
+ <!--
+   ins/del are allowed in block and inline content, but its
+   inappropriate to include block content within an ins element
+   occurring in inline content.
+ -->
+ <!ELEMENT ins %Flow;>
+ <!ATTLIST ins
+   %attrs;
+   cite        %URI;          #IMPLIED
+   datetime    %Datetime;     #IMPLIED
+   >
+ 
+ <!ELEMENT del %Flow;>
+ <!ATTLIST del
+   %attrs;
+   cite        %URI;          #IMPLIED
+   datetime    %Datetime;     #IMPLIED
+   >
+ 
+ <!--================== The Anchor Element ================================-->
+ 
+ <!-- content is %Inline; except that anchors shouldn't be nested -->
+ 
+ <!ELEMENT a %a.content;>
+ <!ATTLIST a
+   %attrs;
+   charset     %Charset;      #IMPLIED
+   type        %ContentType;  #IMPLIED
+   name        NMTOKEN        #IMPLIED
+   href        %URI;          #IMPLIED
+   hreflang    %LanguageCode; #IMPLIED
+   rel         %LinkTypes;    #IMPLIED
+   rev         %LinkTypes;    #IMPLIED
+   accesskey   %Character;    #IMPLIED
+   shape       %Shape;        "rect"
+   coords      %Coords;       #IMPLIED
+   tabindex    %Number;       #IMPLIED
+   onfocus     %Script;       #IMPLIED
+   onblur      %Script;       #IMPLIED
+   >
+ 
+ <!--===================== Inline Elements ================================-->
+ 
+ <!ELEMENT span %Inline;> <!-- generic language/style container -->
+ <!ATTLIST span
+   %attrs;
+   >
+ 
+ <!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
+ <!ATTLIST bdo
+   %coreattrs;
+   %events;
+   lang        %LanguageCode; #IMPLIED
+   xml:lang    %LanguageCode; #IMPLIED
+   dir         (ltr|rtl)      #REQUIRED
+   >
+ 
+ <!ELEMENT br EMPTY>   <!-- forced line break -->
+ <!ATTLIST br
+   %coreattrs;
+   >
+ 
+ <!ELEMENT em %Inline;>   <!-- emphasis -->
+ <!ATTLIST em %attrs;>
+ 
+ <!ELEMENT strong %Inline;>   <!-- strong emphasis -->
+ <!ATTLIST strong %attrs;>
+ 
+ <!ELEMENT dfn %Inline;>   <!-- definitional -->
+ <!ATTLIST dfn %attrs;>
+ 
+ <!ELEMENT code %Inline;>   <!-- program code -->
+ <!ATTLIST code %attrs;>
+ 
+ <!ELEMENT samp %Inline;>   <!-- sample -->
+ <!ATTLIST samp %attrs;>
+ 
+ <!ELEMENT kbd %Inline;>  <!-- something user would type -->
+ <!ATTLIST kbd %attrs;>
+ 
+ <!ELEMENT var %Inline;>   <!-- variable -->
+ <!ATTLIST var %attrs;>
+ 
+ <!ELEMENT cite %Inline;>   <!-- citation -->
+ <!ATTLIST cite %attrs;>
+ 
+ <!ELEMENT abbr %Inline;>   <!-- abbreviation -->
+ <!ATTLIST abbr %attrs;>
+ 
+ <!ELEMENT acronym %Inline;>   <!-- acronym -->
+ <!ATTLIST acronym %attrs;>
+ 
+ <!ELEMENT q %Inline;>   <!-- inlined quote -->
+ <!ATTLIST q
+   %attrs;
+   cite        %URI;          #IMPLIED
+   >
+ 
+ <!ELEMENT sub %Inline;> <!-- subscript -->
+ <!ATTLIST sub %attrs;>
+ 
+ <!ELEMENT sup %Inline;> <!-- superscript -->
+ <!ATTLIST sup %attrs;>
+ 
+ <!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
+ <!ATTLIST tt %attrs;>
+ 
+ <!ELEMENT i %Inline;>   <!-- italic font -->
+ <!ATTLIST i %attrs;>
+ 
+ <!ELEMENT b %Inline;>   <!-- bold font -->
+ <!ATTLIST b %attrs;>
+ 
+ <!ELEMENT big %Inline;>   <!-- bigger font -->
+ <!ATTLIST big %attrs;>
+ 
+ <!ELEMENT small %Inline;>   <!-- smaller font -->
+ <!ATTLIST small %attrs;>
+ 
+ <!--==================== Object ======================================-->
+ <!--
+   object is used to embed objects as part of HTML pages.
+   param elements should precede other content. Parameters
+   can also be expressed as attribute/value pairs on the
+   object element itself when brevity is desired.
+ -->
+ 
+ <!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+ <!ATTLIST object
+   %attrs;
+   declare     (declare)      #IMPLIED
+   classid     %URI;          #IMPLIED
+   codebase    %URI;          #IMPLIED
+   data        %URI;          #IMPLIED
+   type        %ContentType;  #IMPLIED
+   codetype    %ContentType;  #IMPLIED
+   archive     %UriList;      #IMPLIED
+   standby     %Text;         #IMPLIED
+   height      %Length;       #IMPLIED
+   width       %Length;       #IMPLIED
+   usemap      %URI;          #IMPLIED
+   name        NMTOKEN        #IMPLIED
+   tabindex    %Number;       #IMPLIED
+   >
+ 
+ <!--
+   param is used to supply a named property value.
+   In XML it would seem natural to follow RDF and support an
+   abbreviated syntax where the param elements are replaced
+   by attribute value pairs on the object start tag.
+ -->
+ <!ELEMENT param EMPTY>
+ <!ATTLIST param
+   id          ID             #IMPLIED
+   name        CDATA          #IMPLIED
+   value       CDATA          #IMPLIED
+   valuetype   (data|ref|object) "data"
+   type        %ContentType;  #IMPLIED
+   >
+ 
+ <!--=================== Images ===========================================-->
+ 
+ <!--
+    To avoid accessibility problems for people who aren't
+    able to see the image, you should provide a text
+    description using the alt and longdesc attributes.
+    In addition, avoid the use of server-side image maps.
+    Note that in this DTD there is no name attribute. That
+    is only available in the transitional and frameset DTD.
+ -->
+ 
+ <!ELEMENT img EMPTY>
+ <!ATTLIST img
+   %attrs;
+   src         %URI;          #REQUIRED
+   alt         %Text;         #REQUIRED
+   longdesc    %URI;          #IMPLIED
+   height      %Length;       #IMPLIED
+   width       %Length;       #IMPLIED
+   usemap      %URI;          #IMPLIED
+   ismap       (ismap)        #IMPLIED
+   >
+ 
+ <!-- usemap points to a map element which may be in this document
+   or an external document, although the latter is not widely supported -->
+ 
+ <!--================== Client-side image maps ============================-->
+ 
+ <!-- These can be placed in the same document or grouped in a
+      separate document although this isn't yet widely supported -->
+ 
+ <!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+ <!ATTLIST map
+   %i18n;
+   %events;
+   id          ID             #REQUIRED
+   class       CDATA          #IMPLIED
+   style       %StyleSheet;   #IMPLIED
+   title       %Text;         #IMPLIED
+   name        NMTOKEN        #IMPLIED
+   >
+ 
+ <!ELEMENT area EMPTY>
+ <!ATTLIST area
+   %attrs;
+   shape       %Shape;        "rect"
+   coords      %Coords;       #IMPLIED
+   href        %URI;          #IMPLIED
+   nohref      (nohref)       #IMPLIED
+   alt         %Text;         #REQUIRED
+   tabindex    %Number;       #IMPLIED
+   accesskey   %Character;    #IMPLIED
+   onfocus     %Script;       #IMPLIED
+   onblur      %Script;       #IMPLIED
+   >
+ 
+ <!--================ Forms ===============================================-->
+ <!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
+ 
+ <!ATTLIST form
+   %attrs;
+   action      %URI;          #REQUIRED
+   method      (get|post)     "get"
+   enctype     %ContentType;  "application/x-www-form-urlencoded"
+   onsubmit    %Script;       #IMPLIED
+   onreset     %Script;       #IMPLIED
+   accept      %ContentTypes; #IMPLIED
+   accept-charset %Charsets;  #IMPLIED
+   >
+ 
+ <!--
+   Each label must not contain more than ONE field
+   Label elements shouldn't be nested.
+ -->
+ <!ELEMENT label %Inline;>
+ <!ATTLIST label
+   %attrs;
+   for         IDREF          #IMPLIED
+   accesskey   %Character;    #IMPLIED
+   onfocus     %Script;       #IMPLIED
+   onblur      %Script;       #IMPLIED
+   >
+ 
+ <!ENTITY % InputType
+   "(text | password | checkbox |
+     radio | submit | reset |
+     file | hidden | image | button)"
+    >
+ 
+ <!-- the name attribute is required for all but submit & reset -->
+ 
+ <!ELEMENT input EMPTY>     <!-- form control -->
+ <!ATTLIST input
+   %attrs;
+   type        %InputType;    "text"
+   name        CDATA          #IMPLIED
+   value       CDATA          #IMPLIED
+   checked     (checked)      #IMPLIED
+   disabled    (disabled)     #IMPLIED
+   readonly    (readonly)     #IMPLIED
+   size        CDATA          #IMPLIED
+   maxlength   %Number;       #IMPLIED
+   src         %URI;          #IMPLIED
+   alt         CDATA          #IMPLIED
+   usemap      %URI;          #IMPLIED
+   tabindex    %Number;       #IMPLIED
+   accesskey   %Character;    #IMPLIED
+   onfocus     %Script;       #IMPLIED
+   onblur      %Script;       #IMPLIED
+   onselect    %Script;       #IMPLIED
+   onchange    %Script;       #IMPLIED
+   accept      %ContentTypes; #IMPLIED
+   >
+ 
+ <!ELEMENT select (optgroup|option)+>  <!-- option selector -->
+ <!ATTLIST select
+   %attrs;
+   name        CDATA          #IMPLIED
+   size        %Number;       #IMPLIED
+   multiple    (multiple)     #IMPLIED
+   disabled    (disabled)     #IMPLIED
+   tabindex    %Number;       #IMPLIED
+   onfocus     %Script;       #IMPLIED
+   onblur      %Script;       #IMPLIED
+   onchange    %Script;       #IMPLIED
+   >
+ 
+ <!ELEMENT optgroup (option)+>   <!-- option group -->
+ <!ATTLIST optgroup
+   %attrs;
+   disabled    (disabled)     #IMPLIED
+   label       %Text;         #REQUIRED
+   >
+ 
+ <!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
+ <!ATTLIST option
+   %attrs;
+   selected    (selected)     #IMPLIED
+   disabled    (disabled)     #IMPLIED
+   label       %Text;         #IMPLIED
+   value       CDATA          #IMPLIED
+   >
+ 
+ <!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
+ <!ATTLIST textarea
+   %attrs;
+   name        CDATA          #IMPLIED
+   rows        %Number;       #REQUIRED
+   cols        %Number;       #REQUIRED
+   disabled    (disabled)     #IMPLIED
+   readonly    (readonly)     #IMPLIED
+   tabindex    %Number;       #IMPLIED
+   accesskey   %Character;    #IMPLIED
+   onfocus     %Script;       #IMPLIED
+   onblur      %Script;       #IMPLIED
+   onselect    %Script;       #IMPLIED
+   onchange    %Script;       #IMPLIED
+   >
+ 
+ <!--
+   The fieldset element is used to group form fields.
+   Only one legend element should occur in the content
+   and if present should only be preceded by whitespace.
+ -->
+ <!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+ <!ATTLIST fieldset
+   %attrs;
+   >
+ 
+ <!ELEMENT legend %Inline;>     <!-- fieldset label -->
+ <!ATTLIST legend
+   %attrs;
+   accesskey   %Character;    #IMPLIED
+   >
+ 
+ <!--
+  Content is %Flow; excluding a, form and form controls
+ --> 
+ <!ELEMENT button %button.content;>  <!-- push button -->
+ <!ATTLIST button
+   %attrs;
+   name        CDATA          #IMPLIED
+   value       CDATA          #IMPLIED
+   type        (button|submit|reset) "submit"
+   disabled    (disabled)     #IMPLIED
+   tabindex    %Number;       #IMPLIED
+   accesskey   %Character;    #IMPLIED
+   onfocus     %Script;       #IMPLIED
+   onblur      %Script;       #IMPLIED
+   >
+ 
+ <!--======================= Tables =======================================-->
+ 
+ <!-- Derived from IETF HTML table standard, see [RFC1942] -->
+ 
+ <!--
+  The border attribute sets the thickness of the frame around the
+  table. The default units are screen pixels.
+ 
+  The frame attribute specifies which parts of the frame around
+  the table should be rendered. The values are not the same as
+  CALS to avoid a name clash with the valign attribute.
+ -->
+ <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+ 
+ <!--
+  The rules attribute defines which rules to draw between cells:
+ 
+  If rules is absent then assume:
+      "none" if border is absent or border="0" otherwise "all"
+ -->
+ 
+ <!ENTITY % TRules "(none | groups | rows | cols | all)">
+   
+ <!-- horizontal placement of table relative to document -->
+ <!ENTITY % TAlign "(left|center|right)">
+ 
+ <!-- horizontal alignment attributes for cell contents
+ 
+   char        alignment char, e.g. char=':'
+   charoff     offset for alignment char
+ -->
+ <!ENTITY % cellhalign
+   "align      (left|center|right|justify|char) #IMPLIED
+    char       %Character;    #IMPLIED
+    charoff    %Length;       #IMPLIED"
+   >
+ 
+ <!-- vertical alignment attributes for cell contents -->
+ <!ENTITY % cellvalign
+   "valign     (top|middle|bottom|baseline) #IMPLIED"
+   >
+ 
+ <!ELEMENT table
+      (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+ <!ELEMENT caption  %Inline;>
+ <!ELEMENT thead    (tr)+>
+ <!ELEMENT tfoot    (tr)+>
+ <!ELEMENT tbody    (tr)+>
+ <!ELEMENT colgroup (col)*>
+ <!ELEMENT col      EMPTY>
+ <!ELEMENT tr       (th|td)+>
+ <!ELEMENT th       %Flow;>
+ <!ELEMENT td       %Flow;>
+ 
+ <!ATTLIST table
+   %attrs;
+   summary     %Text;         #IMPLIED
+   width       %Length;       #IMPLIED
+   border      %Pixels;       #IMPLIED
+   frame       %TFrame;       #IMPLIED
+   rules       %TRules;       #IMPLIED
+   cellspacing %Length;       #IMPLIED
+   cellpadding %Length;       #IMPLIED
+   >
+ 
+ <!ENTITY % CAlign "(top|bottom|left|right)">
+ 
+ <!ATTLIST caption
+   %attrs;
+   >
+ 
+ <!--
+ colgroup groups a set of col elements. It allows you to group
+ several semantically related columns together.
+ -->
+ <!ATTLIST colgroup
+   %attrs;
+   span        %Number;       "1"
+   width       %MultiLength;  #IMPLIED
+   %cellhalign;
+   %cellvalign;
+   >
+ 
+ <!--
+  col elements define the alignment properties for cells in
+  one or more columns.
+ 
+  The width attribute specifies the width of the columns, e.g.
+ 
+      width=64        width in screen pixels
+      width=0.5*      relative width of 0.5
+ 
+  The span attribute causes the attributes of one
+  col element to apply to more than one column.
+ -->
+ <!ATTLIST col
+   %attrs;
+   span        %Number;       "1"
+   width       %MultiLength;  #IMPLIED
+   %cellhalign;
+   %cellvalign;
+   >
+ 
+ <!--
+     Use thead to duplicate headers when breaking table
+     across page boundaries, or for static headers when
+     tbody sections are rendered in scrolling panel.
+ 
+     Use tfoot to duplicate footers when breaking table
+     across page boundaries, or for static footers when
+     tbody sections are rendered in scrolling panel.
+ 
+     Use multiple tbody sections when rules are needed
+     between groups of table rows.
+ -->
+ <!ATTLIST thead
+   %attrs;
+   %cellhalign;
+   %cellvalign;
+   >
+ 
+ <!ATTLIST tfoot
+   %attrs;
+   %cellhalign;
+   %cellvalign;
+   >
+ 
+ <!ATTLIST tbody
+   %attrs;
+   %cellhalign;
+   %cellvalign;
+   >
+ 
+ <!ATTLIST tr
+   %attrs;
+   %cellhalign;
+   %cellvalign;
+   >
+ 
+ 
+ <!-- Scope is simpler than headers attribute for common tables -->
+ <!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+ 
+ <!-- th is for headers, td for data and for cells acting as both -->
+ 
+ <!ATTLIST th
+   %attrs;
+   abbr        %Text;         #IMPLIED
+   axis        CDATA          #IMPLIED
+   headers     IDREFS         #IMPLIED
+   scope       %Scope;        #IMPLIED
+   rowspan     %Number;       "1"
+   colspan     %Number;       "1"
+   %cellhalign;
+   %cellvalign;
+   >
+ 
+ <!ATTLIST td
+   %attrs;
+   abbr        %Text;         #IMPLIED
+   axis        CDATA          #IMPLIED
+   headers     IDREFS         #IMPLIED
+   scope       %Scope;        #IMPLIED
+   rowspan     %Number;       "1"
+   colspan     %Number;       "1"
+   %cellhalign;
+   %cellvalign;
+   >
+ ] >
+ <html>
+ </html>
\ No newline at end of file

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to