OSDN Git Service

Merged gcj-eclipse branch to trunk.
[pf3gnuchains/gcc-fork.git] / libjava / classpath / gnu / javax / swing / text / html / parser / HTML_401F.java
1 /* HTML_401F.java -- HTML 4.01 FRAMESET DTD java conception.
2    Copyright (C) 2005 Free Software Foundation, Inc.
3
4 This file is part of GNU Classpath.
5
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING.  If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301 USA.
20
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library.  Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
25
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module.  An independent module is a module which is not derived from
33 or based on this library.  If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so.  If you do not wish to do so, delete this
36 exception statement from your version. */
37
38
39 package gnu.javax.swing.text.html.parser;
40
41 import gnu.javax.swing.text.html.parser.models.PCDATAonly_model;
42 import gnu.javax.swing.text.html.parser.models.TableRowContentModel;
43 import gnu.javax.swing.text.html.parser.models.noTagModel;
44
45 import java.io.IOException;
46 import java.io.Serializable;
47
48 import javax.swing.text.html.parser.*;
49 import javax.swing.text.html.parser.ContentModel;
50 import javax.swing.text.html.parser.DTDConstants;
51
52 /**
53  * This class represents the java implementation of the HTML 4.01
54  * ( -//W3C//DTD HTML 4.01 Frameset//EN ) Frameset version. The
55  * Frameset version includes as recommended, as obsoleted features and
56  * also the frameset support. This the default DTD to parse HTML
57  * documents in this implementation, containing 315 pre-defined general
58  * entities and 92 elements.
59  *
60  * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
61  */
62 public class HTML_401F
63   extends gnuDTD
64   implements DTDConstants, Serializable
65 {
66    private static final long serialVersionUID = 1;
67
68    /**
69     * The standard name of this DTD,
70     * '-//W3C//DTD HTML 4.01 Frameset//EN'
71     */
72    public static final String DTD_NAME = "-//W3C//DTD HTML 4.01 Frameset//EN";
73
74    /**
75     * The integer representing length in pixels.
76     */
77     static final int PIXELS = NUMBER;
78
79     static final String[] NONE = new String[0];
80
81   /* Define the HTML tags. */
82     static final String PCDATA = "#pcdata";
83     static final String A = "a";
84     static final String ABBR = "abbr";
85     static final String ACRONYM = "acronym";
86     static final String ADDRESS = "address";
87     static final String APPLET = "applet";
88     static final String AREA = "area";
89     static final String B = "b";
90     static final String BASE = "base";
91     static final String BASEFONT = "basefont";
92     static final String BDO = "bdo";
93     static final String BIG = "big";
94     static final String BLOCKQUOTE = "blockquote";
95     static final String BODY = "body";
96     static final String BR = "br";
97     static final String BUTTON = "button";
98     static final String CAPTION = "caption";
99     static final String CENTER = "center";
100     static final String CITE = "cite";
101     static final String CODE = "code";
102     static final String COL = "col";
103     static final String COLGROUP = "colgroup";
104     static final String DEFAULTS = "default";
105     static final String DD = "dd";
106     static final String DEL = "del";
107     static final String DFN = "dfn";
108     static final String DIR = "dir";
109     static final String DIV = "div";
110     static final String DL = "dl";
111     static final String DT = "dt";
112     static final String EM = "em";
113     static final String FIELDSET = "fieldset";
114     static final String FONT = "font";
115     static final String FORM = "form";
116     static final String FRAME = "frame";
117     static final String FRAMESET = "frameset";
118     static final String H1 = "h1";
119     static final String H2 = "h2";
120     static final String H3 = "h3";
121     static final String H4 = "h4";
122     static final String H5 = "h5";
123     static final String H6 = "h6";
124     static final String HEAD = "head";
125     static final String HR = "hr";
126     static final String HTML = "html";
127     static final String I = "i";
128     static final String IFRAME = "iframe";
129     static final String IMG = "img";
130     static final String INPUT = "input";
131     static final String INS = "ins";
132     static final String ISINDEX = "isindex";
133     static final String KBD = "kbd";
134     static final String LABEL = "label";
135     static final String LEGEND = "legend";
136     static final String LI = "li";
137     static final String LINK = "link";
138     static final String MAP = "map";
139     static final String MENU = "menu";
140     static final String META = "meta";
141     static final String NOFRAMES = "noframes";
142     static final String NOSCRIPT = "noscript";
143     static final String NONES    = "none";
144     static final String sNAME    = "name";
145     static final String OBJECT = "object";
146     static final String OL = "ol";
147     static final String OPTGROUP = "optgroup";
148     static final String OPTION = "option";
149     static final String P = "p";
150     static final String PARAM = "param";
151     static final String PRE = "pre";
152     static final String Q = "q";
153     static final String S = "s";
154     static final String SAMP = "samp";
155     static final String SCRIPT = "script";
156     static final String SELECT = "select";
157     static final String SMALL = "small";
158     static final String SPAN = "span";
159     static final String STRIKE = "strike";
160     static final String STRONG = "strong";
161     static final String STYLE = "style";
162     static final String SUB = "sub";
163     static final String SUP = "sup";
164     static final String TABLE = "table";
165     static final String TBODY = "tbody";
166     static final String TD = "td";
167     static final String TEXTAREA = "textarea";
168     static final String TFOOT = "tfoot";
169     static final String TH = "th";
170     static final String THEAD = "thead";
171     static final String TITLE = "title";
172     static final String TR = "tr";
173     static final String TT = "tt";
174     static final String U = "u";
175     static final String UL = "ul";
176     static final String VAR = "var";
177
178   /* Define the attribute constants. */
179     static final String C_0 = "0";
180     static final String C_1 = "1";
181     static final String CHECKBOX = "checkbox";
182     static final String DATA = "data";
183     static final String FILE = "file";
184     static final String GET = "get";
185     static final String HIDDEN = "hidden";
186     static final String IMAGE = "image";
187     static final String PASSWORD = "password";
188     static final String POST = "post";
189     static final String RADIO = "radio";
190     static final String REF = "ref";
191     static final String RESET = "reset";
192     static final String SUBMIT = "submit";
193     static final String TEXT = "text";
194     static final String ABOVE = "above";
195     static final String ACCEPT = "accept";
196     static final String ACCEPTCHARSET = "accept-charset";
197     static final String ACCESSKEY = "accesskey";
198     static final String ACTION = "action";
199     static final String ALIGN = "align";
200     static final String ALINK = "alink";
201     static final String ALL = "all";
202     static final String ALT = "alt";
203     static final String APPLICATION_X_WWW_FORM_URLENCODED
204      = "application/x-www-form-urlencoded";
205     static final String ARCHIVE = "archive";
206     static final String AUTO = "auto";
207     static final String AXIS = "axis";
208     static final String BACKGROUND = "background";
209     static final String BASELINE = "baseline";
210     static final String BELOW = "below";
211     static final String BGCOLOR = "bgcolor";
212     static final String BORDER = "border";
213     static final String BOTTOM = "bottom";
214     static final String BOX = "box";
215     static final String CELLPADDING = "cellpadding";
216     static final String CELLSPACING = "cellspacing";
217     static final String CHAR = "char";
218     static final String CHAROFF = "charoff";
219     static final String CHARSET = "charset";
220     static final String CHECKED = "checked";
221     static final String CIRCLE = "circle";
222     static final String CLASS = "class";
223     static final String CLASSID = "classid";
224     static final String CLEAR = "clear";
225     static final String CODEBASE = "codebase";
226     static final String CODETYPE = "codetype";
227     static final String COLOR = "color";
228     static final String COLS = "cols";
229     static final String COLSPAN = "colspan";
230     static final String COMPACT = "compact";
231     static final String CONTENT = "content";
232     static final String COORDS = "coords";
233     static final String DATAPAGESIZE = "datapagesize";
234     static final String DATETIME = "datetime";
235     static final String DECLARE = "declare";
236     static final String DEFER = "defer";
237     static final String DISABLED = "disabled";
238     static final String DISC = "disc";
239     static final String ENCTYPE = "enctype";
240     static final String EVENT = "event";
241     static final String FACE = "face";
242     static final String FOR = "for";
243     static final String FRAMEBORDER = "frameborder";
244     static final String GROUPS = "groups";
245     static final String HEADERS = "headers";
246     static final String HEIGHT = "height";
247     static final String HREF = "href";
248     static final String HREFLANG = "hreflang";
249     static final String HSIDES = "hsides";
250     static final String HSPACE = "hspace";
251     static final String HTTPEQUIV = "http-equiv";
252     static final String sID = "id";
253     static final String ISMAP = "ismap";
254     static final String JUSTIFY = "justify";
255     static final String LANG = "lang";
256     static final String LANGUAGE = "language";
257     static final String LEFT = "left";
258     static final String LHS = "lhs";
259     static final String LONGDESC = "longdesc";
260     static final String LTR = "ltr";
261     static final String MARGINHEIGHT = "marginheight";
262     static final String MARGINWIDTH = "marginwidth";
263     static final String MAXLENGTH = "maxlength";
264     static final String MEDIA = "media";
265     static final String METHOD = "method";
266     static final String MIDDLE = "middle";
267     static final String MULTIPLE = "multiple";
268     static final String NO = "no";
269     static final String NOHREF = "nohref";
270     static final String NORESIZE = "noresize";
271     static final String NOSHADE = "noshade";
272     static final String NOWRAP = "nowrap";
273     static final String ONBLUR = "onblur";
274     static final String ONCHANGE = "onchange";
275     static final String ONCLICK = "onclick";
276     static final String ONDBLCLICK = "ondblclick";
277     static final String ONFOCUS = "onfocus";
278     static final String ONKEYDOWN = "onkeydown";
279     static final String ONKEYPRESS = "onkeypress";
280     static final String ONKEYUP = "onkeyup";
281     static final String ONLOAD = "onload";
282     static final String ONMOUSEDOWN = "onmousedown";
283     static final String ONMOUSEMOVE = "onmousemove";
284     static final String ONMOUSEOUT = "onmouseout";
285     static final String ONMOUSEOVER = "onmouseover";
286     static final String ONMOUSEUP = "onmouseup";
287     static final String ONRESET = "onreset";
288     static final String ONSELECT = "onselect";
289     static final String ONSUBMIT = "onsubmit";
290     static final String ONUNLOAD = "onunload";
291     static final String POLY = "poly";
292     static final String PROFILE = "profile";
293     static final String PROMPT = "prompt";
294     static final String READONLY = "readonly";
295     static final String RECT = "rect";
296     static final String REL = "rel";
297     static final String REV = "rev";
298     static final String RHS = "rhs";
299     static final String RIGHT = "right";
300     static final String ROW = "row";
301     static final String ROWGROUP = "rowgroup";
302     static final String ROWS = "rows";
303     static final String ROWSPAN = "rowspan";
304     static final String RTL = "rtl";
305     static final String RULES = "rules";
306     static final String SCHEME = "scheme";
307     static final String SCOPE = "scope";
308     static final String SCROLLING = "scrolling";
309     static final String SELECTED = "selected";
310     static final String SHAPE = "shape";
311     static final String SIZE = "size";
312     static final String SQUARE = "square";
313     static final String SRC = "src";
314     static final String STANDBY = "standby";
315     static final String START = "start";
316     static final String SUMMARY = "summary";
317     static final String TABINDEX = "tabindex";
318     static final String TARGET = "target";
319     static final String TOP = "top";
320     static final String TYPE = "type";
321     static final String USEMAP = "usemap";
322     static final String VALIGN = "valign";
323     static final String VALUE = "value";
324     static final String VALUETYPE = "valuetype";
325     static final String VERSION = "version";
326     static final String VLINK = "vlink";
327     static final String VOID = "void";
328     static final String VSIDES = "vsides";
329     static final String VSPACE = "vspace";
330     static final String WIDTH = "width";
331     static final String YES = "yes";
332
333     static final String[] BLOCK =
334     new String[] {
335       ADDRESS, BLOCKQUOTE, CENTER, DIR,
336       DIV, DL, FIELDSET, FORM,
337       H1, H2, H3, H4, H5, H6,
338       HR, ISINDEX, MENU, NOFRAMES, NOSCRIPT,
339       OL, P, PRE, TABLE, UL
340     };
341
342    /**
343    * Creates this DTD, filling in the entities and attributes data
344    * as defined in -//W3C//DTD HTML 4.01 Frameset//EN.
345    */
346   protected HTML_401F()
347   {
348     super(DTD_NAME);
349     defineEntities();
350     defineElements();
351   }
352
353   /**
354    * Either takes the document (by name) from DTD table, or
355    * creates a new instance and registers it in the tabe.
356    * The document is registerd under name "-//W3C//DTD HTML 4.01 Frameset//EN".
357    * @return The new or existing DTD for parsing HTML 4.01 Frameset.
358    */
359   public static DTD getInstance()
360   {
361     try
362       {
363         DTD dtd = getDTD(DTD_NAME);
364         if (dtd == null || dtd.getClass().equals(DTD.class))
365           {
366             dtd = new HTML_401F();
367             putDTDHash(DTD_NAME, dtd);
368           }
369         return dtd;
370       }
371     catch (IOException ex)
372       {
373         throw new Error("This should never happen. Report the bug.", ex);
374       }
375   }
376
377   /**
378    * Define all elements of this DTD.
379    */
380   protected void defineElements()
381   {
382     /* Define the elements. */
383       defElement(PCDATA, 0, false, false, null, NONE, NONE,
384         new AttributeList[ 0 ]);
385
386       defElement(A, 0, false, false, null,
387       new String[] {
388         A
389       }
390       ,
391       new String[] {
392         PCDATA, ABBR, ACRONYM, APPLET,
393         B, BASEFONT, BDO, BIG, BR,
394         BUTTON, CITE, CODE, DFN, EM,
395         FONT, I, IFRAME, IMG, INPUT,
396         KBD, LABEL, MAP, OBJECT, Q,
397         S, SAMP, SCRIPT, SELECT, SMALL,
398         SPAN, STRIKE, STRONG, SUB, SUP,
399         TEXTAREA, TT, U, VAR
400       }
401     ,
402       new AttributeList[] {
403         attr(sID, null, null, ID, IMPLIED),
404         attr(CLASS, null, null, 0, IMPLIED),
405         attr(STYLE, null, null, 0, IMPLIED),
406         attr(TITLE, null, null, 0, IMPLIED),
407         attr(LANG, null, null, 0, IMPLIED),
408         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
409         attr(ONCLICK, null, null, 0, IMPLIED),
410         attr(ONDBLCLICK, null, null, 0, IMPLIED),
411         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
412         attr(ONMOUSEUP, null, null, 0, IMPLIED),
413         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
414         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
415         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
416         attr(ONKEYPRESS, null, null, 0, IMPLIED),
417         attr(ONKEYDOWN, null, null, 0, IMPLIED),
418         attr(ONKEYUP, null, null, 0, IMPLIED),
419         attr(CHARSET, null, null, 0, IMPLIED),
420         attr(TYPE, null, null, 0, IMPLIED),
421         attr(sNAME, null, null, 0, IMPLIED),
422         attr(HREF, null, null, 0, IMPLIED),
423         attr(HREFLANG, null, null, 0, IMPLIED),
424         attr(TARGET, null, null, 0, IMPLIED),
425         attr(REL, null, null, 0, IMPLIED),
426         attr(REV, null, null, 0, IMPLIED),
427         attr(ACCESSKEY, null, null, 0, IMPLIED),
428         attr(SHAPE, RECT,  new String[] { RECT, CIRCLE, POLY,  DEFAULTS },
429           0, DEFAULT),
430         attr(COORDS, null, null, 0, IMPLIED),
431         attr(TABINDEX, null, null, NUMBER, IMPLIED),
432         attr(ONFOCUS, null, null, 0, IMPLIED),
433         attr(ONBLUR, null, null, 0, IMPLIED)
434       }
435     );
436       defElement(ABBR, 0, false, false, null,
437       NONE
438       ,
439       new String[] {
440         PCDATA, A, ABBR, ACRONYM,
441         APPLET, B, BASEFONT, BDO, BIG,
442         BR, BUTTON, CITE, CODE, DFN,
443         EM, FONT, I, IFRAME, IMG,
444         INPUT, KBD, LABEL, MAP, OBJECT,
445         Q, S, SAMP, SCRIPT, SELECT,
446         SMALL, SPAN, STRIKE, STRONG, SUB,
447         SUP, TEXTAREA, TT, U, VAR
448       }
449     ,
450       new AttributeList[] {
451         attr(sID, null, null, ID, IMPLIED),
452         attr(CLASS, null, null, 0, IMPLIED),
453         attr(STYLE, null, null, 0, IMPLIED),
454         attr(TITLE, null, null, 0, IMPLIED),
455         attr(LANG, null, null, 0, IMPLIED),
456         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
457         attr(ONCLICK, null, null, 0, IMPLIED),
458         attr(ONDBLCLICK, null, null, 0, IMPLIED),
459         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
460         attr(ONMOUSEUP, null, null, 0, IMPLIED),
461         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
462         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
463         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
464         attr(ONKEYPRESS, null, null, 0, IMPLIED),
465         attr(ONKEYDOWN, null, null, 0, IMPLIED),
466         attr(ONKEYUP, null, null, 0, IMPLIED)
467       }
468     );
469       defElement(ACRONYM, 0, false, false, null,
470       NONE
471       ,
472       new String[] {
473         PCDATA, A, ABBR, ACRONYM,
474         APPLET, B, BASEFONT, BDO, BIG,
475         BR, BUTTON, CITE, CODE, DFN,
476         EM, FONT, I, IFRAME, IMG,
477         INPUT, KBD, LABEL, MAP, OBJECT,
478         Q, S, SAMP, SCRIPT, SELECT,
479         SMALL, SPAN, STRIKE, STRONG, SUB,
480         SUP, TEXTAREA, TT, U, VAR
481       }
482     ,
483       new AttributeList[] {
484         attr(sID, null, null, ID, IMPLIED),
485         attr(CLASS, null, null, 0, IMPLIED),
486         attr(STYLE, null, null, 0, IMPLIED),
487         attr(TITLE, null, null, 0, IMPLIED),
488         attr(LANG, null, null, 0, IMPLIED),
489         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
490         attr(ONCLICK, null, null, 0, IMPLIED),
491         attr(ONDBLCLICK, null, null, 0, IMPLIED),
492         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
493         attr(ONMOUSEUP, null, null, 0, IMPLIED),
494         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
495         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
496         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
497         attr(ONKEYPRESS, null, null, 0, IMPLIED),
498         attr(ONKEYDOWN, null, null, 0, IMPLIED),
499         attr(ONKEYUP, null, null, 0, IMPLIED)
500       }
501     );
502       defElement(ADDRESS, 0, false, false, null,
503       NONE
504       ,
505       new String[] {
506         PCDATA, A, ABBR, ACRONYM,
507         APPLET, B, BASEFONT, BDO, BIG,
508         BR, BUTTON, CITE, CODE, DFN,
509         EM, FONT, I, IFRAME, IMG,
510         INPUT, KBD, LABEL, MAP, OBJECT,
511         Q, S, SAMP, SCRIPT, SELECT,
512         SMALL, SPAN, STRIKE, STRONG, SUB,
513         SUP, TEXTAREA, TT, U, VAR,
514         P
515       }
516     ,
517       new AttributeList[] {
518         attr(sID, null, null, ID, IMPLIED),
519         attr(CLASS, null, null, 0, IMPLIED),
520         attr(STYLE, null, null, 0, IMPLIED),
521         attr(TITLE, null, null, 0, IMPLIED),
522         attr(LANG, null, null, 0, IMPLIED),
523         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
524         attr(ONCLICK, null, null, 0, IMPLIED),
525         attr(ONDBLCLICK, null, null, 0, IMPLIED),
526         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
527         attr(ONMOUSEUP, null, null, 0, IMPLIED),
528         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
529         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
530         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
531         attr(ONKEYPRESS, null, null, 0, IMPLIED),
532         attr(ONKEYDOWN, null, null, 0, IMPLIED),
533         attr(ONKEYUP, null, null, 0, IMPLIED)
534       }
535     );
536       defElement(APPLET, 0, false, false, null,
537       NONE
538       ,
539       new String[] {
540         PCDATA, A, ABBR, ACRONYM,
541         APPLET, B, BASEFONT, BDO, BIG,
542         BR, BUTTON, CITE, CODE, DFN,
543         EM, FONT, I, IFRAME, IMG,
544         INPUT, KBD, LABEL, MAP, OBJECT,
545         Q, S, SAMP, SCRIPT, SELECT,
546         SMALL, SPAN, STRIKE, STRONG, SUB,
547         SUP, TEXTAREA, TT, U, VAR,
548         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
549         DL, FIELDSET, FORM, H1, H2,
550         H3, H4, H5, H6, HR,
551         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
552         P, PRE, TABLE, UL, PARAM
553       }
554     ,
555       new AttributeList[] {
556         attr(sID, null, null, ID, IMPLIED),
557         attr(CLASS, null, null, 0, IMPLIED),
558         attr(STYLE, null, null, 0, IMPLIED),
559         attr(TITLE, null, null, 0, IMPLIED),
560         attr(CODEBASE, null, null, 0, IMPLIED),
561         attr(ARCHIVE, null, null, 0, IMPLIED),
562         attr(CODE, null, null, 0, IMPLIED),
563         attr(OBJECT, null, null, 0, IMPLIED),
564         attr(ALT, null, null, 0, IMPLIED),
565         attr(sNAME, null, null, 0, IMPLIED),
566         attr(WIDTH, null, null, 0, REQUIRED),
567         attr(HEIGHT, null, null, 0, REQUIRED),
568         attr(ALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, LEFT, RIGHT },
569           0, IMPLIED),
570         attr(HSPACE, null, null, 0, IMPLIED),
571         attr(VSPACE, null, null, 0, IMPLIED)
572       }
573     );
574       defElement(AREA, EMPTY, false, true, null,
575       NONE
576       ,
577       NONE
578     ,
579       new AttributeList[] {
580         attr(sID, null, null, ID, IMPLIED),
581         attr(CLASS, null, null, 0, IMPLIED),
582         attr(STYLE, null, null, 0, IMPLIED),
583         attr(TITLE, null, null, 0, IMPLIED),
584         attr(LANG, null, null, 0, IMPLIED),
585         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
586         attr(ONCLICK, null, null, 0, IMPLIED),
587         attr(ONDBLCLICK, null, null, 0, IMPLIED),
588         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
589         attr(ONMOUSEUP, null, null, 0, IMPLIED),
590         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
591         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
592         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
593         attr(ONKEYPRESS, null, null, 0, IMPLIED),
594         attr(ONKEYDOWN, null, null, 0, IMPLIED),
595         attr(ONKEYUP, null, null, 0, IMPLIED),
596         attr(SHAPE, RECT,  new String[] { RECT, CIRCLE, POLY, DEFAULTS },
597           0, DEFAULT),
598         attr(COORDS, null, null, 0, IMPLIED),
599         attr(HREF, null, null, 0, IMPLIED),
600         attr(TARGET, null, null, 0, IMPLIED),
601         attr(NOHREF, null,  new String[] { NOHREF }, 0, IMPLIED),
602         attr(ALT, null, null, 0, REQUIRED),
603         attr(TABINDEX, null, null, NUMBER, IMPLIED),
604         attr(ACCESSKEY, null, null, 0, IMPLIED),
605         attr(ONFOCUS, null, null, 0, IMPLIED),
606         attr(ONBLUR, null, null, 0, IMPLIED)
607       }
608     );
609       defElement(B, 0, false, false, null,
610       NONE
611       ,
612       new String[] {
613         PCDATA, A, ABBR, ACRONYM,
614         APPLET, B, BASEFONT, BDO, BIG,
615         BR, BUTTON, CITE, CODE, DFN,
616         EM, FONT, I, IFRAME, IMG,
617         INPUT, KBD, LABEL, MAP, OBJECT,
618         Q, S, SAMP, SCRIPT, SELECT,
619         SMALL, SPAN, STRIKE, STRONG, SUB,
620         SUP, TEXTAREA, TT, U, VAR
621       }
622     ,
623       new AttributeList[] {
624         attr(sID, null, null, ID, IMPLIED),
625         attr(CLASS, null, null, 0, IMPLIED),
626         attr(STYLE, null, null, 0, IMPLIED),
627         attr(TITLE, null, null, 0, IMPLIED),
628         attr(LANG, null, null, 0, IMPLIED),
629         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
630         attr(ONCLICK, null, null, 0, IMPLIED),
631         attr(ONDBLCLICK, null, null, 0, IMPLIED),
632         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
633         attr(ONMOUSEUP, null, null, 0, IMPLIED),
634         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
635         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
636         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
637         attr(ONKEYPRESS, null, null, 0, IMPLIED),
638         attr(ONKEYDOWN, null, null, 0, IMPLIED),
639         attr(ONKEYUP, null, null, 0, IMPLIED)
640       }
641     );
642       defElement(BASE, EMPTY, false, true, null,
643       NONE
644       ,
645       NONE
646     ,
647       new AttributeList[] {
648         attr(HREF, null, null, 0, IMPLIED),
649         attr(TARGET, null, null, 0, IMPLIED)
650       }
651     );
652       defElement(BASEFONT, EMPTY, false, true, null,
653       NONE
654       ,
655       NONE
656     ,
657       new AttributeList[] {
658         attr(sID, null, null, ID, IMPLIED),
659         attr(SIZE, null, null, 0, REQUIRED),
660         attr(COLOR, null, null, 0, IMPLIED),
661         attr(FACE, null, null, 0, IMPLIED)
662       }
663     );
664       defElement(BDO, 0, false, false, null,
665       NONE
666       ,
667       new String[] {
668         PCDATA, A, ABBR, ACRONYM,
669         APPLET, B, BASEFONT, BDO, BIG,
670         BR, BUTTON, CITE, CODE, DFN,
671         EM, FONT, I, IFRAME, IMG,
672         INPUT, KBD, LABEL, MAP, OBJECT,
673         Q, S, SAMP, SCRIPT, SELECT,
674         SMALL, SPAN, STRIKE, STRONG, SUB,
675         SUP, TEXTAREA, TT, U, VAR
676       }
677     ,
678       new AttributeList[] {
679         attr(sID, null, null, ID, IMPLIED),
680         attr(CLASS, null, null, 0, IMPLIED),
681         attr(STYLE, null, null, 0, IMPLIED),
682         attr(TITLE, null, null, 0, IMPLIED),
683         attr(LANG, null, null, 0, IMPLIED),
684         attr(DIR, null,  new String[] { LTR, RTL }, 0, REQUIRED)
685       }
686     );
687       defElement(BIG, 0, false, false, null,
688       NONE
689       ,
690       new String[] {
691         PCDATA, A, ABBR, ACRONYM,
692         APPLET, B, BASEFONT, BDO, BIG,
693         BR, BUTTON, CITE, CODE, DFN,
694         EM, FONT, I, IFRAME, IMG,
695         INPUT, KBD, LABEL, MAP, OBJECT,
696         Q, S, SAMP, SCRIPT, SELECT,
697         SMALL, SPAN, STRIKE, STRONG, SUB,
698         SUP, TEXTAREA, TT, U, VAR
699       }
700     ,
701       new AttributeList[] {
702         attr(sID, null, null, ID, IMPLIED),
703         attr(CLASS, null, null, 0, IMPLIED),
704         attr(STYLE, null, null, 0, IMPLIED),
705         attr(TITLE, null, null, 0, IMPLIED),
706         attr(LANG, null, null, 0, IMPLIED),
707         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
708         attr(ONCLICK, null, null, 0, IMPLIED),
709         attr(ONDBLCLICK, null, null, 0, IMPLIED),
710         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
711         attr(ONMOUSEUP, null, null, 0, IMPLIED),
712         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
713         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
714         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
715         attr(ONKEYPRESS, null, null, 0, IMPLIED),
716         attr(ONKEYDOWN, null, null, 0, IMPLIED),
717         attr(ONKEYUP, null, null, 0, IMPLIED)
718       }
719     );
720       defElement(BLOCKQUOTE, 0, false, false, null,
721       NONE
722       ,
723       new String[] {
724         PCDATA, A, ABBR, ACRONYM,
725         APPLET, B, BASEFONT, BDO, BIG,
726         BR, BUTTON, CITE, CODE, DFN,
727         EM, FONT, I, IFRAME, IMG,
728         INPUT, KBD, LABEL, MAP, OBJECT,
729         Q, S, SAMP, SCRIPT, SELECT,
730         SMALL, SPAN, STRIKE, STRONG, SUB,
731         SUP, TEXTAREA, TT, U, VAR,
732         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
733         DL, FIELDSET, FORM, H1, H2,
734         H3, H4, H5, H6, HR,
735         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
736         P, PRE, TABLE, UL
737       }
738     ,
739       new AttributeList[] {
740         attr(sID, null, null, ID, IMPLIED),
741         attr(CLASS, null, null, 0, IMPLIED),
742         attr(STYLE, null, null, 0, IMPLIED),
743         attr(TITLE, null, null, 0, IMPLIED),
744         attr(LANG, null, null, 0, IMPLIED),
745         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
746         attr(ONCLICK, null, null, 0, IMPLIED),
747         attr(ONDBLCLICK, null, null, 0, IMPLIED),
748         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
749         attr(ONMOUSEUP, null, null, 0, IMPLIED),
750         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
751         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
752         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
753         attr(ONKEYPRESS, null, null, 0, IMPLIED),
754         attr(ONKEYDOWN, null, null, 0, IMPLIED),
755         attr(ONKEYUP, null, null, 0, IMPLIED),
756         attr(CITE, null, null, 0, IMPLIED)
757       }
758     );
759       defElement(BODY, 0, true, true, null,
760       NONE
761       ,
762       getBodyElements()
763       ,
764       new AttributeList[] {
765         attr(sID, null, null, ID, IMPLIED),
766         attr(CLASS, null, null, 0, IMPLIED),
767         attr(STYLE, null, null, 0, IMPLIED),
768         attr(TITLE, null, null, 0, IMPLIED),
769         attr(LANG, null, null, 0, IMPLIED),
770         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
771         attr(ONCLICK, null, null, 0, IMPLIED),
772         attr(ONDBLCLICK, null, null, 0, IMPLIED),
773         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
774         attr(ONMOUSEUP, null, null, 0, IMPLIED),
775         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
776         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
777         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
778         attr(ONKEYPRESS, null, null, 0, IMPLIED),
779         attr(ONKEYDOWN, null, null, 0, IMPLIED),
780         attr(ONKEYUP, null, null, 0, IMPLIED),
781         attr(ONLOAD, null, null, 0, IMPLIED),
782         attr(ONUNLOAD, null, null, 0, IMPLIED),
783         attr(BACKGROUND, null, null, 0, IMPLIED),
784         attr(BGCOLOR, null, null, 0, IMPLIED),
785         attr(TEXT, null, null, 0, IMPLIED),
786         attr(LINK, null, null, 0, IMPLIED),
787         attr(VLINK, null, null, 0, IMPLIED),
788         attr(ALINK, null, null, 0, IMPLIED)
789       }
790     );
791       defElement(BR, EMPTY, false, true, null,
792       NONE
793       ,
794       NONE
795     ,
796       new AttributeList[] {
797         attr(sID, null, null, ID, IMPLIED),
798         attr(CLASS, null, null, 0, IMPLIED),
799         attr(STYLE, null, null, 0, IMPLIED),
800         attr(TITLE, null, null, 0, IMPLIED),
801         attr(CLEAR, "NONE",  new String[] { LEFT, ALL, RIGHT, NONES },
802           0, DEFAULT)
803       }
804     );
805       defElement(BUTTON, 0, false, false, null,
806       new String[] {
807         A, BUTTON, IFRAME, INPUT,
808         LABEL, SELECT, TEXTAREA, FIELDSET, FORM,
809         ISINDEX
810       }
811       ,
812       new String[] {
813         PCDATA, ABBR, ACRONYM, APPLET,
814         B, BASEFONT, BDO, BIG, BR,
815         CITE, CODE, DFN, EM, FONT,
816         I, IMG, KBD, MAP, OBJECT,
817         Q, S, SAMP, SCRIPT, SMALL,
818         SPAN, STRIKE, STRONG, SUB, SUP,
819         TT, U, VAR, ADDRESS, BLOCKQUOTE,
820         CENTER, DIR, DIV, DL, H1,
821         H2, H3, H4, H5, H6,
822         HR, MENU, NOFRAMES, NOSCRIPT, OL,
823         P, PRE, TABLE, UL
824       }
825     ,
826       new AttributeList[] {
827         attr(sID, null, null, ID, IMPLIED),
828         attr(CLASS, null, null, 0, IMPLIED),
829         attr(STYLE, null, null, 0, IMPLIED),
830         attr(TITLE, null, null, 0, IMPLIED),
831         attr(LANG, null, null, 0, IMPLIED),
832         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
833         attr(ONCLICK, null, null, 0, IMPLIED),
834         attr(ONDBLCLICK, null, null, 0, IMPLIED),
835         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
836         attr(ONMOUSEUP, null, null, 0, IMPLIED),
837         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
838         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
839         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
840         attr(ONKEYPRESS, null, null, 0, IMPLIED),
841         attr(ONKEYDOWN, null, null, 0, IMPLIED),
842         attr(ONKEYUP, null, null, 0, IMPLIED),
843         attr(sNAME, null, null, 0, IMPLIED),
844         attr(VALUE, null, null, 0, IMPLIED),
845         attr(TYPE, SUBMIT,  new String[] { BUTTON, SUBMIT, RESET }, 0, DEFAULT),
846         attr(DISABLED, null,  new String[] { DISABLED }, 0, IMPLIED),
847         attr(TABINDEX, null, null, NUMBER, IMPLIED),
848         attr(ACCESSKEY, null, null, 0, IMPLIED),
849         attr(ONFOCUS, null, null, 0, IMPLIED),
850         attr(ONBLUR, null, null, 0, IMPLIED)
851       }
852     );
853       defElement(CAPTION, 0, false, false, null,
854       NONE
855       ,
856       new String[] {
857         PCDATA, A, ABBR, ACRONYM,
858         APPLET, B, BASEFONT, BDO, BIG,
859         BR, BUTTON, CITE, CODE, DFN,
860         EM, FONT, I, IFRAME, IMG,
861         INPUT, KBD, LABEL, MAP, OBJECT,
862         Q, S, SAMP, SCRIPT, SELECT,
863         SMALL, SPAN, STRIKE, STRONG, SUB,
864         SUP, TEXTAREA, TT, U, VAR
865       }
866     ,
867       new AttributeList[] {
868         attr(sID, null, null, ID, IMPLIED),
869         attr(CLASS, null, null, 0, IMPLIED),
870         attr(STYLE, null, null, 0, IMPLIED),
871         attr(TITLE, null, null, 0, IMPLIED),
872         attr(LANG, null, null, 0, IMPLIED),
873         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
874         attr(ONCLICK, null, null, 0, IMPLIED),
875         attr(ONDBLCLICK, null, null, 0, IMPLIED),
876         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
877         attr(ONMOUSEUP, null, null, 0, IMPLIED),
878         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
879         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
880         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
881         attr(ONKEYPRESS, null, null, 0, IMPLIED),
882         attr(ONKEYDOWN, null, null, 0, IMPLIED),
883         attr(ONKEYUP, null, null, 0, IMPLIED),
884         attr(ALIGN, null,  new String[] { TOP, BOTTOM, LEFT, RIGHT },
885           0, IMPLIED)
886       }
887     );
888       defElement(CENTER, 0, false, false, null,
889       NONE
890       ,
891       new String[] {
892         PCDATA, A, ABBR, ACRONYM,
893         APPLET, B, BASEFONT, BDO, BIG,
894         BR, BUTTON, CITE, CODE, DFN,
895         EM, FONT, I, IFRAME, IMG,
896         INPUT, KBD, LABEL, MAP, OBJECT,
897         Q, S, SAMP, SCRIPT, SELECT,
898         SMALL, SPAN, STRIKE, STRONG, SUB,
899         SUP, TEXTAREA, TT, U, VAR,
900         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
901         DL, FIELDSET, FORM, H1, H2,
902         H3, H4, H5, H6, HR,
903         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
904         P, PRE, TABLE, UL
905       }
906     ,
907       new AttributeList[] {
908         attr(sID, null, null, ID, IMPLIED),
909         attr(CLASS, null, null, 0, IMPLIED),
910         attr(STYLE, null, null, 0, IMPLIED),
911         attr(TITLE, null, null, 0, IMPLIED),
912         attr(LANG, null, null, 0, IMPLIED),
913         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
914         attr(ONCLICK, null, null, 0, IMPLIED),
915         attr(ONDBLCLICK, null, null, 0, IMPLIED),
916         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
917         attr(ONMOUSEUP, null, null, 0, IMPLIED),
918         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
919         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
920         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
921         attr(ONKEYPRESS, null, null, 0, IMPLIED),
922         attr(ONKEYDOWN, null, null, 0, IMPLIED),
923         attr(ONKEYUP, null, null, 0, IMPLIED)
924       }
925     );
926       defElement(CITE, 0, false, false, null,
927       NONE
928       ,
929       new String[] {
930         PCDATA, A, ABBR, ACRONYM,
931         APPLET, B, BASEFONT, BDO, BIG,
932         BR, BUTTON, CITE, CODE, DFN,
933         EM, FONT, I, IFRAME, IMG,
934         INPUT, KBD, LABEL, MAP, OBJECT,
935         Q, S, SAMP, SCRIPT, SELECT,
936         SMALL, SPAN, STRIKE, STRONG, SUB,
937         SUP, TEXTAREA, TT, U, VAR
938       }
939     ,
940       new AttributeList[] {
941         attr(sID, null, null, ID, IMPLIED),
942         attr(CLASS, null, null, 0, IMPLIED),
943         attr(STYLE, null, null, 0, IMPLIED),
944         attr(TITLE, null, null, 0, IMPLIED),
945         attr(LANG, null, null, 0, IMPLIED),
946         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
947         attr(ONCLICK, null, null, 0, IMPLIED),
948         attr(ONDBLCLICK, null, null, 0, IMPLIED),
949         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
950         attr(ONMOUSEUP, null, null, 0, IMPLIED),
951         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
952         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
953         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
954         attr(ONKEYPRESS, null, null, 0, IMPLIED),
955         attr(ONKEYDOWN, null, null, 0, IMPLIED),
956         attr(ONKEYUP, null, null, 0, IMPLIED)
957       }
958     );
959       defElement(CODE, 0, false, false, null,
960       NONE
961       ,
962       new String[] {
963         PCDATA, A, ABBR, ACRONYM,
964         APPLET, B, BASEFONT, BDO, BIG,
965         BR, BUTTON, CITE, CODE, DFN,
966         EM, FONT, I, IFRAME, IMG,
967         INPUT, KBD, LABEL, MAP, OBJECT,
968         Q, S, SAMP, SCRIPT, SELECT,
969         SMALL, SPAN, STRIKE, STRONG, SUB,
970         SUP, TEXTAREA, TT, U, VAR
971       }
972     ,
973       new AttributeList[] {
974         attr(sID, null, null, ID, IMPLIED),
975         attr(CLASS, null, null, 0, IMPLIED),
976         attr(STYLE, null, null, 0, IMPLIED),
977         attr(TITLE, null, null, 0, IMPLIED),
978         attr(LANG, null, null, 0, IMPLIED),
979         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
980         attr(ONCLICK, null, null, 0, IMPLIED),
981         attr(ONDBLCLICK, null, null, 0, IMPLIED),
982         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
983         attr(ONMOUSEUP, null, null, 0, IMPLIED),
984         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
985         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
986         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
987         attr(ONKEYPRESS, null, null, 0, IMPLIED),
988         attr(ONKEYDOWN, null, null, 0, IMPLIED),
989         attr(ONKEYUP, null, null, 0, IMPLIED)
990       }
991     );
992       defElement(COL, EMPTY, false, true, null,
993       NONE
994       ,
995       NONE
996     ,
997       new AttributeList[] {
998         attr(sID, null, null, ID, IMPLIED),
999         attr(CLASS, null, null, 0, IMPLIED),
1000         attr(STYLE, null, null, 0, IMPLIED),
1001         attr(TITLE, null, null, 0, IMPLIED),
1002         attr(LANG, null, null, 0, IMPLIED),
1003         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1004         attr(ONCLICK, null, null, 0, IMPLIED),
1005         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1006         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1007         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1008         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1009         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1010         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1011         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1012         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1013         attr(ONKEYUP, null, null, 0, IMPLIED),
1014         attr(SPAN, C_1, null, NUMBER, DEFAULT),
1015         attr(WIDTH, null, null, 0, IMPLIED),
1016         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
1017           0, IMPLIED),
1018         attr(CHAR, null, null, 0, IMPLIED),
1019         attr(CHAROFF, null, null, 0, IMPLIED),
1020         attr(VALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
1021           0, IMPLIED)
1022       }
1023     );
1024       defElement(COLGROUP, 0, false, true, null,
1025       NONE
1026       ,
1027       new String[] {
1028         COL
1029       }
1030     ,
1031       new AttributeList[] {
1032         attr(sID, null, null, ID, IMPLIED),
1033         attr(CLASS, null, null, 0, IMPLIED),
1034         attr(STYLE, null, null, 0, IMPLIED),
1035         attr(TITLE, null, null, 0, IMPLIED),
1036         attr(LANG, null, null, 0, IMPLIED),
1037         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1038         attr(ONCLICK, null, null, 0, IMPLIED),
1039         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1040         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1041         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1042         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1043         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1044         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1045         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1046         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1047         attr(ONKEYUP, null, null, 0, IMPLIED),
1048         attr(SPAN, C_1, null, NUMBER, DEFAULT),
1049         attr(WIDTH, null, null, 0, IMPLIED),
1050         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
1051           0, IMPLIED),
1052         attr(CHAR, null, null, 0, IMPLIED),
1053         attr(CHAROFF, null, null, 0, IMPLIED),
1054         attr(VALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
1055           0, IMPLIED)
1056       }
1057     );
1058       defElement(DD, 0, false, true, new ContentModel(0,
1059         new noTagModel( new String[] { DD, DT } ), null ),
1060       NONE
1061       ,
1062       new String[] {
1063         PCDATA, A, ABBR, ACRONYM,
1064         APPLET, B, BASEFONT, BDO, BIG,
1065         BR, BUTTON, CITE, CODE, DFN,
1066         EM, FONT, I, IFRAME, IMG,
1067         INPUT, KBD, LABEL, MAP, OBJECT,
1068         Q, S, SAMP, SCRIPT, SELECT,
1069         SMALL, SPAN, STRIKE, STRONG, SUB,
1070         SUP, TEXTAREA, TT, U, VAR,
1071         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
1072         DL, FIELDSET, FORM, H1, H2,
1073         H3, H4, H5, H6, HR,
1074         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
1075         P, PRE, TABLE, UL
1076       }
1077     ,
1078       new AttributeList[] {
1079         attr(sID, null, null, ID, IMPLIED),
1080         attr(CLASS, null, null, 0, IMPLIED),
1081         attr(STYLE, null, null, 0, IMPLIED),
1082         attr(TITLE, null, null, 0, IMPLIED),
1083         attr(LANG, null, null, 0, IMPLIED),
1084         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1085         attr(ONCLICK, null, null, 0, IMPLIED),
1086         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1087         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1088         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1089         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1090         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1091         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1092         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1093         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1094         attr(ONKEYUP, null, null, 0, IMPLIED)
1095       }
1096     );
1097       defElement(DEL, 0, false, false, null,
1098       NONE
1099       ,
1100       new String[] {
1101         PCDATA, A, ABBR, ACRONYM,
1102         APPLET, B, BASEFONT, BDO, BIG,
1103         BR, BUTTON, CITE, CODE, DFN,
1104         EM, FONT, I, IFRAME, IMG,
1105         INPUT, KBD, LABEL, MAP, OBJECT,
1106         Q, S, SAMP, SCRIPT, SELECT,
1107         SMALL, SPAN, STRIKE, STRONG, SUB,
1108         SUP, TEXTAREA, TT, U, VAR,
1109         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
1110         DL, FIELDSET, FORM, H1, H2,
1111         H3, H4, H5, H6, HR,
1112         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
1113         P, PRE, TABLE, UL
1114       }
1115     ,
1116       new AttributeList[] {
1117         attr(sID, null, null, ID, IMPLIED),
1118         attr(CLASS, null, null, 0, IMPLIED),
1119         attr(STYLE, null, null, 0, IMPLIED),
1120         attr(TITLE, null, null, 0, IMPLIED),
1121         attr(LANG, null, null, 0, IMPLIED),
1122         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1123         attr(ONCLICK, null, null, 0, IMPLIED),
1124         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1125         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1126         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1127         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1128         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1129         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1130         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1131         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1132         attr(ONKEYUP, null, null, 0, IMPLIED),
1133         attr(CITE, null, null, 0, IMPLIED),
1134         attr(DATETIME, null, null, 0, IMPLIED)
1135       }
1136     );
1137       defElement(DFN, 0, false, false, null,
1138       NONE
1139       ,
1140       new String[] {
1141         PCDATA, A, ABBR, ACRONYM,
1142         APPLET, B, BASEFONT, BDO, BIG,
1143         BR, BUTTON, CITE, CODE, DFN,
1144         EM, FONT, I, IFRAME, IMG,
1145         INPUT, KBD, LABEL, MAP, OBJECT,
1146         Q, S, SAMP, SCRIPT, SELECT,
1147         SMALL, SPAN, STRIKE, STRONG, SUB,
1148         SUP, TEXTAREA, TT, U, VAR
1149       }
1150     ,
1151       new AttributeList[] {
1152         attr(sID, null, null, ID, IMPLIED),
1153         attr(CLASS, null, null, 0, IMPLIED),
1154         attr(STYLE, null, null, 0, IMPLIED),
1155         attr(TITLE, null, null, 0, IMPLIED),
1156         attr(LANG, null, null, 0, IMPLIED),
1157         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1158         attr(ONCLICK, null, null, 0, IMPLIED),
1159         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1160         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1161         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1162         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1163         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1164         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1165         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1166         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1167         attr(ONKEYUP, null, null, 0, IMPLIED)
1168       }
1169     );
1170       defElement(DIR, 0, false, false, createListModel(),
1171       new String[] {
1172         ADDRESS, BLOCKQUOTE, CENTER, DIR,
1173         DIV, DL, FIELDSET, FORM, H1,
1174         H2, H3, H4, H5, H6,
1175         HR, ISINDEX, MENU, NOFRAMES, NOSCRIPT,
1176         OL, P, PRE, TABLE, UL
1177       }
1178       ,
1179       new String[] {
1180         LI, UL, OL
1181       }
1182     ,
1183       new AttributeList[] {
1184         attr(sID, null, null, ID, IMPLIED),
1185         attr(CLASS, null, null, 0, IMPLIED),
1186         attr(STYLE, null, null, 0, IMPLIED),
1187         attr(TITLE, null, null, 0, IMPLIED),
1188         attr(LANG, null, null, 0, IMPLIED),
1189         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1190         attr(ONCLICK, null, null, 0, IMPLIED),
1191         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1192         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1193         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1194         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1195         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1196         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1197         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1198         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1199         attr(ONKEYUP, null, null, 0, IMPLIED),
1200         attr(COMPACT, null,  new String[] { COMPACT }, 0, IMPLIED)
1201       }
1202     );
1203       defElement(DIV, 0, false, false, null,
1204       NONE
1205       ,
1206       new String[] {
1207         PCDATA, A, ABBR, ACRONYM,
1208         APPLET, B, BASEFONT, BDO, BIG,
1209         BR, BUTTON, CITE, CODE, DFN,
1210         EM, FONT, I, IFRAME, IMG,
1211         INPUT, KBD, LABEL, MAP, OBJECT,
1212         Q, S, SAMP, SCRIPT, SELECT,
1213         SMALL, SPAN, STRIKE, STRONG, SUB,
1214         SUP, TEXTAREA, TT, U, VAR,
1215         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
1216         DL, FIELDSET, FORM, H1, H2,
1217         H3, H4, H5, H6, HR,
1218         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
1219         P, PRE, TABLE, UL
1220       }
1221     ,
1222       new AttributeList[] {
1223         attr(sID, null, null, ID, IMPLIED),
1224         attr(CLASS, null, null, 0, IMPLIED),
1225         attr(STYLE, null, null, 0, IMPLIED),
1226         attr(TITLE, null, null, 0, IMPLIED),
1227         attr(LANG, null, null, 0, IMPLIED),
1228         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1229         attr(ONCLICK, null, null, 0, IMPLIED),
1230         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1231         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1232         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1233         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1234         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1235         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1236         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1237         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1238         attr(ONKEYUP, null, null, 0, IMPLIED),
1239         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
1240           0, IMPLIED)
1241       }
1242     );
1243       defElement(DL, 0, false, false, createDefListModel(),
1244       NONE
1245       ,
1246       new String[] {
1247         DD, DT
1248       }
1249     ,
1250       new AttributeList[] {
1251         attr(sID, null, null, ID, IMPLIED),
1252         attr(CLASS, null, null, 0, IMPLIED),
1253         attr(STYLE, null, null, 0, IMPLIED),
1254         attr(TITLE, null, null, 0, IMPLIED),
1255         attr(LANG, null, null, 0, IMPLIED),
1256         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1257         attr(ONCLICK, null, null, 0, IMPLIED),
1258         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1259         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1260         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1261         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1262         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1263         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1264         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1265         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1266         attr(ONKEYUP, null, null, 0, IMPLIED),
1267         attr(COMPACT, null,  new String[] { COMPACT }, 0, IMPLIED)
1268       }
1269     );
1270       defElement(DT, 0, false, true,
1271         new ContentModel(0,
1272          new noTagModel( new String[] { DT, DD } ), null),
1273         BLOCK
1274       ,
1275       new String[] {
1276         PCDATA, A, ABBR, ACRONYM,
1277         APPLET, B, BASEFONT, BDO, BIG,
1278         BR, BUTTON, CITE, CODE, DFN,
1279         EM, FONT, I, IFRAME, IMG,
1280         INPUT, KBD, LABEL, MAP, OBJECT,
1281         Q, S, SAMP, SCRIPT, SELECT,
1282         SMALL, SPAN, STRIKE, STRONG, SUB,
1283         SUP, TEXTAREA, TT, U, VAR
1284       }
1285     ,
1286       new AttributeList[] {
1287         attr(sID, null, null, ID, IMPLIED),
1288         attr(CLASS, null, null, 0, IMPLIED),
1289         attr(STYLE, null, null, 0, IMPLIED),
1290         attr(TITLE, null, null, 0, IMPLIED),
1291         attr(LANG, null, null, 0, IMPLIED),
1292         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1293         attr(ONCLICK, null, null, 0, IMPLIED),
1294         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1295         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1296         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1297         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1298         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1299         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1300         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1301         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1302         attr(ONKEYUP, null, null, 0, IMPLIED)
1303       }
1304     );
1305       defElement(EM, 0, false, false, null,
1306       NONE
1307       ,
1308       new String[] {
1309         PCDATA, A, ABBR, ACRONYM,
1310         APPLET, B, BASEFONT, BDO, BIG,
1311         BR, BUTTON, CITE, CODE, DFN,
1312         EM, FONT, I, IFRAME, IMG,
1313         INPUT, KBD, LABEL, MAP, OBJECT,
1314         Q, S, SAMP, SCRIPT, SELECT,
1315         SMALL, SPAN, STRIKE, STRONG, SUB,
1316         SUP, TEXTAREA, TT, U, VAR
1317       }
1318     ,
1319       new AttributeList[] {
1320         attr(sID, null, null, ID, IMPLIED),
1321         attr(CLASS, null, null, 0, IMPLIED),
1322         attr(STYLE, null, null, 0, IMPLIED),
1323         attr(TITLE, null, null, 0, IMPLIED),
1324         attr(LANG, null, null, 0, IMPLIED),
1325         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1326         attr(ONCLICK, null, null, 0, IMPLIED),
1327         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1328         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1329         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1330         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1331         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1332         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1333         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1334         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1335         attr(ONKEYUP, null, null, 0, IMPLIED)
1336       }
1337     );
1338       defElement(FIELDSET, 0, false, false, null,
1339       NONE
1340       ,
1341       new String[] {
1342         PCDATA, A, ABBR, ACRONYM,
1343         APPLET, B, BASEFONT, BDO, BIG,
1344         BR, BUTTON, CITE, CODE, DFN,
1345         EM, FONT, I, IFRAME, IMG,
1346         INPUT, KBD, LABEL, MAP, OBJECT,
1347         Q, S, SAMP, SCRIPT, SELECT,
1348         SMALL, SPAN, STRIKE, STRONG, SUB,
1349         SUP, TEXTAREA, TT, U, VAR,
1350         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
1351         DL, FIELDSET, FORM, H1, H2,
1352         H3, H4, H5, H6, HR,
1353         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
1354         P, PRE, TABLE, UL, LEGEND
1355       }
1356     ,
1357       new AttributeList[] {
1358         attr(sID, null, null, ID, IMPLIED),
1359         attr(CLASS, null, null, 0, IMPLIED),
1360         attr(STYLE, null, null, 0, IMPLIED),
1361         attr(TITLE, null, null, 0, IMPLIED),
1362         attr(LANG, null, null, 0, IMPLIED),
1363         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1364         attr(ONCLICK, null, null, 0, IMPLIED),
1365         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1366         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1367         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1368         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1369         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1370         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1371         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1372         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1373         attr(ONKEYUP, null, null, 0, IMPLIED)
1374       }
1375     );
1376       defElement(FONT, 0, false, false, null,
1377       NONE
1378       ,
1379       new String[] {
1380         PCDATA, A, ABBR, ACRONYM,
1381         APPLET, B, BASEFONT, BDO, BIG,
1382         BR, BUTTON, CITE, CODE, DFN,
1383         EM, FONT, I, IFRAME, IMG,
1384         INPUT, KBD, LABEL, MAP, OBJECT,
1385         Q, S, SAMP, SCRIPT, SELECT,
1386         SMALL, SPAN, STRIKE, STRONG, SUB,
1387         SUP, TEXTAREA, TT, U, VAR
1388       }
1389     ,
1390       new AttributeList[] {
1391         attr(sID, null, null, ID, IMPLIED),
1392         attr(CLASS, null, null, 0, IMPLIED),
1393         attr(STYLE, null, null, 0, IMPLIED),
1394         attr(TITLE, null, null, 0, IMPLIED),
1395         attr(LANG, null, null, 0, IMPLIED),
1396         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1397         attr(SIZE, null, null, 0, IMPLIED),
1398         attr(COLOR, null, null, 0, IMPLIED),
1399         attr(FACE, null, null, 0, IMPLIED)
1400       }
1401     );
1402       defElement(FORM, 0, false, false, null,
1403       new String[] {
1404         FORM
1405       }
1406       ,
1407       new String[] {
1408         PCDATA, A, ABBR, ACRONYM,
1409         APPLET, B, BASEFONT, BDO, BIG,
1410         BR, BUTTON, CITE, CODE, DFN,
1411         EM, FONT, I, IFRAME, IMG,
1412         INPUT, KBD, LABEL, MAP, OBJECT,
1413         Q, S, SAMP, SCRIPT, SELECT,
1414         SMALL, SPAN, STRIKE, STRONG, SUB,
1415         SUP, TEXTAREA, TT, U, VAR,
1416         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
1417         DL, FIELDSET, H1, H2, H3,
1418         H4, H5, H6, HR, ISINDEX,
1419         MENU, NOFRAMES, NOSCRIPT, OL, P,
1420         PRE, TABLE, UL
1421       }
1422     ,
1423       new AttributeList[] {
1424         attr(sID, null, null, ID, IMPLIED),
1425         attr(CLASS, null, null, 0, IMPLIED),
1426         attr(STYLE, null, null, 0, IMPLIED),
1427         attr(TITLE, null, null, 0, IMPLIED),
1428         attr(LANG, null, null, 0, IMPLIED),
1429         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1430         attr(ONCLICK, null, null, 0, IMPLIED),
1431         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1432         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1433         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1434         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1435         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1436         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1437         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1438         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1439         attr(ONKEYUP, null, null, 0, IMPLIED),
1440         attr(ACTION, null, null, 0, REQUIRED),
1441         attr(METHOD, GET,  new String[] { GET, POST }, 0, DEFAULT),
1442         attr(ENCTYPE, APPLICATION_X_WWW_FORM_URLENCODED, null, 0, DEFAULT),
1443         attr(ACCEPT, null, null, 0, IMPLIED),
1444         attr(sNAME, null, null, 0, IMPLIED),
1445         attr(ONSUBMIT, null, null, 0, IMPLIED),
1446         attr(ONRESET, null, null, 0, IMPLIED),
1447         attr(TARGET, null, null, 0, IMPLIED),
1448         attr(ACCEPTCHARSET, null, null, 0, IMPLIED)
1449       }
1450     );
1451       defElement(FRAME, EMPTY, false, true, null,
1452       NONE
1453       ,
1454       NONE
1455     ,
1456       new AttributeList[] {
1457         attr(sID, null, null, ID, IMPLIED),
1458         attr(CLASS, null, null, 0, IMPLIED),
1459         attr(STYLE, null, null, 0, IMPLIED),
1460         attr(TITLE, null, null, 0, IMPLIED),
1461         attr(LONGDESC, null, null, 0, IMPLIED),
1462         attr(sNAME, null, null, 0, IMPLIED),
1463         attr(SRC, null, null, 0, IMPLIED),
1464         attr(FRAMEBORDER, C_1,  new String[] { C_1, C_0 }, 0, DEFAULT),
1465         attr(MARGINWIDTH, null, null, PIXELS, IMPLIED),
1466         attr(MARGINHEIGHT, null, null, PIXELS, IMPLIED),
1467         attr(NORESIZE, null,  new String[] { NORESIZE }, 0, IMPLIED),
1468         attr(SCROLLING, AUTO,  new String[] { YES, NO, AUTO }, 0, DEFAULT)
1469       }
1470     );
1471       defElement(FRAMESET, 0, false, false, null,
1472       NONE
1473       ,
1474       new String[] {
1475         NOFRAMES, FRAME, FRAMESET
1476       }
1477     ,
1478       new AttributeList[] {
1479         attr(sID, null, null, ID, IMPLIED),
1480         attr(CLASS, null, null, 0, IMPLIED),
1481         attr(STYLE, null, null, 0, IMPLIED),
1482         attr(TITLE, null, null, 0, IMPLIED),
1483         attr(ROWS, null, null, 0, IMPLIED),
1484         attr(COLS, null, null, 0, IMPLIED),
1485         attr(ONLOAD, null, null, 0, IMPLIED),
1486         attr(ONUNLOAD, null, null, 0, IMPLIED)
1487       }
1488     );
1489       defElement(H1, 0, false, false, null,
1490       NONE
1491       ,
1492       new String[] {
1493         PCDATA, A, ABBR, ACRONYM,
1494         APPLET, B, BASEFONT, BDO, BIG,
1495         BR, BUTTON, CITE, CODE, DFN,
1496         EM, FONT, I, IFRAME, IMG,
1497         INPUT, KBD, LABEL, MAP, OBJECT,
1498         Q, S, SAMP, SCRIPT, SELECT,
1499         SMALL, SPAN, STRIKE, STRONG, SUB,
1500         SUP, TEXTAREA, TT, U, VAR
1501       }
1502     ,
1503       new AttributeList[] {
1504         attr(sID, null, null, ID, IMPLIED),
1505         attr(CLASS, null, null, 0, IMPLIED),
1506         attr(STYLE, null, null, 0, IMPLIED),
1507         attr(TITLE, null, null, 0, IMPLIED),
1508         attr(LANG, null, null, 0, IMPLIED),
1509         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1510         attr(ONCLICK, null, null, 0, IMPLIED),
1511         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1512         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1513         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1514         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1515         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1516         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1517         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1518         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1519         attr(ONKEYUP, null, null, 0, IMPLIED),
1520         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
1521           0, IMPLIED)
1522       }
1523     );
1524       defElement(H2, 0, false, false, null,
1525       NONE
1526       ,
1527       new String[] {
1528         PCDATA, A, ABBR, ACRONYM,
1529         APPLET, B, BASEFONT, BDO, BIG,
1530         BR, BUTTON, CITE, CODE, DFN,
1531         EM, FONT, I, IFRAME, IMG,
1532         INPUT, KBD, LABEL, MAP, OBJECT,
1533         Q, S, SAMP, SCRIPT, SELECT,
1534         SMALL, SPAN, STRIKE, STRONG, SUB,
1535         SUP, TEXTAREA, TT, U, VAR
1536       }
1537     ,
1538       new AttributeList[] {
1539         attr(sID, null, null, ID, IMPLIED),
1540         attr(CLASS, null, null, 0, IMPLIED),
1541         attr(STYLE, null, null, 0, IMPLIED),
1542         attr(TITLE, null, null, 0, IMPLIED),
1543         attr(LANG, null, null, 0, IMPLIED),
1544         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1545         attr(ONCLICK, null, null, 0, IMPLIED),
1546         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1547         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1548         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1549         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1550         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1551         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1552         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1553         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1554         attr(ONKEYUP, null, null, 0, IMPLIED),
1555         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
1556           0, IMPLIED)
1557       }
1558     );
1559       defElement(H3, 0, false, false, null,
1560       NONE
1561       ,
1562       new String[] {
1563         PCDATA, A, ABBR, ACRONYM,
1564         APPLET, B, BASEFONT, BDO, BIG,
1565         BR, BUTTON, CITE, CODE, DFN,
1566         EM, FONT, I, IFRAME, IMG,
1567         INPUT, KBD, LABEL, MAP, OBJECT,
1568         Q, S, SAMP, SCRIPT, SELECT,
1569         SMALL, SPAN, STRIKE, STRONG, SUB,
1570         SUP, TEXTAREA, TT, U, VAR
1571       }
1572     ,
1573       new AttributeList[] {
1574         attr(sID, null, null, ID, IMPLIED),
1575         attr(CLASS, null, null, 0, IMPLIED),
1576         attr(STYLE, null, null, 0, IMPLIED),
1577         attr(TITLE, null, null, 0, IMPLIED),
1578         attr(LANG, null, null, 0, IMPLIED),
1579         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1580         attr(ONCLICK, null, null, 0, IMPLIED),
1581         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1582         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1583         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1584         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1585         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1586         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1587         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1588         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1589         attr(ONKEYUP, null, null, 0, IMPLIED),
1590         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
1591           0, IMPLIED)
1592       }
1593     );
1594       defElement(H4, 0, false, false, null,
1595       NONE
1596       ,
1597       new String[] {
1598         PCDATA, A, ABBR, ACRONYM,
1599         APPLET, B, BASEFONT, BDO, BIG,
1600         BR, BUTTON, CITE, CODE, DFN,
1601         EM, FONT, I, IFRAME, IMG,
1602         INPUT, KBD, LABEL, MAP, OBJECT,
1603         Q, S, SAMP, SCRIPT, SELECT,
1604         SMALL, SPAN, STRIKE, STRONG, SUB,
1605         SUP, TEXTAREA, TT, U, VAR
1606       }
1607     ,
1608       new AttributeList[] {
1609         attr(sID, null, null, ID, IMPLIED),
1610         attr(CLASS, null, null, 0, IMPLIED),
1611         attr(STYLE, null, null, 0, IMPLIED),
1612         attr(TITLE, null, null, 0, IMPLIED),
1613         attr(LANG, null, null, 0, IMPLIED),
1614         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1615         attr(ONCLICK, null, null, 0, IMPLIED),
1616         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1617         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1618         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1619         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1620         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1621         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1622         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1623         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1624         attr(ONKEYUP, null, null, 0, IMPLIED),
1625         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
1626           0, IMPLIED)
1627       }
1628     );
1629       defElement(H5, 0, false, false, null,
1630       NONE
1631       ,
1632       new String[] {
1633         PCDATA, A, ABBR, ACRONYM,
1634         APPLET, B, BASEFONT, BDO, BIG,
1635         BR, BUTTON, CITE, CODE, DFN,
1636         EM, FONT, I, IFRAME, IMG,
1637         INPUT, KBD, LABEL, MAP, OBJECT,
1638         Q, S, SAMP, SCRIPT, SELECT,
1639         SMALL, SPAN, STRIKE, STRONG, SUB,
1640         SUP, TEXTAREA, TT, U, VAR
1641       }
1642     ,
1643       new AttributeList[] {
1644         attr(sID, null, null, ID, IMPLIED),
1645         attr(CLASS, null, null, 0, IMPLIED),
1646         attr(STYLE, null, null, 0, IMPLIED),
1647         attr(TITLE, null, null, 0, IMPLIED),
1648         attr(LANG, null, null, 0, IMPLIED),
1649         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1650         attr(ONCLICK, null, null, 0, IMPLIED),
1651         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1652         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1653         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1654         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1655         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1656         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1657         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1658         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1659         attr(ONKEYUP, null, null, 0, IMPLIED),
1660         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
1661           0, IMPLIED)
1662       }
1663     );
1664       defElement(H6, 0, false, false, null,
1665       NONE
1666       ,
1667       new String[] {
1668         PCDATA, A, ABBR, ACRONYM,
1669         APPLET, B, BASEFONT, BDO, BIG,
1670         BR, BUTTON, CITE, CODE, DFN,
1671         EM, FONT, I, IFRAME, IMG,
1672         INPUT, KBD, LABEL, MAP, OBJECT,
1673         Q, S, SAMP, SCRIPT, SELECT,
1674         SMALL, SPAN, STRIKE, STRONG, SUB,
1675         SUP, TEXTAREA, TT, U, VAR
1676       }
1677     ,
1678       new AttributeList[] {
1679         attr(sID, null, null, ID, IMPLIED),
1680         attr(CLASS, null, null, 0, IMPLIED),
1681         attr(STYLE, null, null, 0, IMPLIED),
1682         attr(TITLE, null, null, 0, IMPLIED),
1683         attr(LANG, null, null, 0, IMPLIED),
1684         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1685         attr(ONCLICK, null, null, 0, IMPLIED),
1686         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1687         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1688         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1689         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1690         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1691         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1692         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1693         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1694         attr(ONKEYUP, null, null, 0, IMPLIED),
1695         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
1696           0, IMPLIED)
1697       }
1698     );
1699       defElement(HEAD, 0, true, true, null,
1700       new String[] {
1701         BODY
1702       }
1703       ,
1704       new String[] {
1705        TITLE, ISINDEX, BASE,
1706        SCRIPT, STYLE, META, LINK, OBJECT
1707       }
1708     ,
1709       new AttributeList[] {
1710         attr(LANG, null, null, 0, IMPLIED),
1711         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1712         attr(PROFILE, null, null, 0, IMPLIED)
1713       }
1714     );
1715
1716       defElement(HR, EMPTY, false, true, null,
1717       NONE
1718       ,
1719       NONE
1720     ,
1721       new AttributeList[] {
1722         attr(sID, null, null, ID, IMPLIED),
1723         attr(CLASS, null, null, 0, IMPLIED),
1724         attr(STYLE, null, null, 0, IMPLIED),
1725         attr(TITLE, null, null, 0, IMPLIED),
1726         attr(LANG, null, null, 0, IMPLIED),
1727         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1728         attr(ONCLICK, null, null, 0, IMPLIED),
1729         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1730         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1731         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1732         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1733         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1734         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1735         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1736         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1737         attr(ONKEYUP, null, null, 0, IMPLIED),
1738         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT }, 0, IMPLIED),
1739         attr(NOSHADE, null,  new String[] { NOSHADE }, 0, IMPLIED),
1740         attr(SIZE, null, null, 0, IMPLIED),
1741         attr(WIDTH, null, null, 0, IMPLIED)
1742       }
1743     );
1744       defElement(HTML, 0, true, true, createHtmlContentModel(),
1745       NONE
1746       ,
1747       new String[] {
1748         HEAD, BODY
1749       }
1750     ,
1751       new AttributeList[] {
1752         attr(LANG, null, null, 0, IMPLIED),
1753         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1754         attr(VERSION, DTD_NAME, null, 0, FIXED)
1755       }
1756     );
1757       defElement(I, 0, false, false, null,
1758       NONE
1759       ,
1760       new String[] {
1761         PCDATA, A, ABBR, ACRONYM,
1762         APPLET, B, BASEFONT, BDO, BIG,
1763         BR, BUTTON, CITE, CODE, DFN,
1764         EM, FONT, I, IFRAME, IMG,
1765         INPUT, KBD, LABEL, MAP, OBJECT,
1766         Q, S, SAMP, SCRIPT, SELECT,
1767         SMALL, SPAN, STRIKE, STRONG, SUB,
1768         SUP, TEXTAREA, TT, U, VAR
1769       }
1770     ,
1771       new AttributeList[] {
1772         attr(sID, null, null, ID, IMPLIED),
1773         attr(CLASS, null, null, 0, IMPLIED),
1774         attr(STYLE, null, null, 0, IMPLIED),
1775         attr(TITLE, null, null, 0, IMPLIED),
1776         attr(LANG, null, null, 0, IMPLIED),
1777         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1778         attr(ONCLICK, null, null, 0, IMPLIED),
1779         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1780         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1781         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1782         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1783         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1784         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1785         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1786         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1787         attr(ONKEYUP, null, null, 0, IMPLIED)
1788       }
1789     );
1790       defElement(IFRAME, 0, false, false, null,
1791       NONE
1792       ,
1793       new String[] {
1794         PCDATA, A, ABBR, ACRONYM,
1795         APPLET, B, BASEFONT, BDO, BIG,
1796         BR, BUTTON, CITE, CODE, DFN,
1797         EM, FONT, I, IFRAME, IMG,
1798         INPUT, KBD, LABEL, MAP, OBJECT,
1799         Q, S, SAMP, SCRIPT, SELECT,
1800         SMALL, SPAN, STRIKE, STRONG, SUB,
1801         SUP, TEXTAREA, TT, U, VAR,
1802         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
1803         DL, FIELDSET, FORM, H1, H2,
1804         H3, H4, H5, H6, HR,
1805         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
1806         P, PRE, TABLE, UL
1807       }
1808     ,
1809       new AttributeList[] {
1810         attr(sID, null, null, ID, IMPLIED),
1811         attr(CLASS, null, null, 0, IMPLIED),
1812         attr(STYLE, null, null, 0, IMPLIED),
1813         attr(TITLE, null, null, 0, IMPLIED),
1814         attr(LONGDESC, null, null, 0, IMPLIED),
1815         attr(sNAME, null, null, 0, IMPLIED),
1816         attr(SRC, null, null, 0, IMPLIED),
1817         attr(FRAMEBORDER, C_1,  new String[] { C_1, C_0 }, 0, DEFAULT),
1818         attr(MARGINWIDTH, null, null, PIXELS, IMPLIED),
1819         attr(MARGINHEIGHT, null, null, PIXELS, IMPLIED),
1820         attr(SCROLLING, AUTO,  new String[] { YES, NO, AUTO }, 0, DEFAULT),
1821         attr(ALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, LEFT, RIGHT },
1822           0, IMPLIED),
1823         attr(HEIGHT, null, null, 0, IMPLIED),
1824         attr(WIDTH, null, null, 0, IMPLIED)
1825       }
1826     );
1827       defElement(IMG, EMPTY, false, true, null,
1828       NONE
1829       ,
1830       NONE
1831     ,
1832       new AttributeList[] {
1833         attr(sID, null, null, ID, IMPLIED),
1834         attr(CLASS, null, null, 0, IMPLIED),
1835         attr(STYLE, null, null, 0, IMPLIED),
1836         attr(TITLE, null, null, 0, IMPLIED),
1837         attr(LANG, null, null, 0, IMPLIED),
1838         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1839         attr(ONCLICK, null, null, 0, IMPLIED),
1840         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1841         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1842         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1843         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1844         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1845         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1846         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1847         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1848         attr(ONKEYUP, null, null, 0, IMPLIED),
1849         attr(SRC, null, null, 0, REQUIRED),
1850         attr(ALT, null, null, 0, REQUIRED),
1851         attr(LONGDESC, null, null, 0, IMPLIED),
1852         attr(sNAME, null, null, 0, IMPLIED),
1853         attr(HEIGHT, null, null, 0, IMPLIED),
1854         attr(WIDTH, null, null, 0, IMPLIED),
1855         attr(USEMAP, null, null, 0, IMPLIED),
1856         attr(ISMAP, null,  new String[] { ISMAP }, 0, IMPLIED),
1857         attr(ALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, LEFT, RIGHT },
1858           0, IMPLIED),
1859         attr(BORDER, null, null, PIXELS, IMPLIED),
1860         attr(HSPACE, null, null, 0, IMPLIED),
1861         attr(VSPACE, null, null, 0, IMPLIED)
1862       }
1863     );
1864       defElement(INPUT, EMPTY, false, true, null,
1865       NONE
1866       ,
1867       NONE
1868     ,
1869       new AttributeList[] {
1870         attr(sID, null, null, ID, IMPLIED),
1871         attr(CLASS, null, null, 0, IMPLIED),
1872         attr(STYLE, null, null, 0, IMPLIED),
1873         attr(TITLE, null, null, 0, IMPLIED),
1874         attr(LANG, null, null, 0, IMPLIED),
1875         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1876         attr(ONCLICK, null, null, 0, IMPLIED),
1877         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1878         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1879         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1880         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1881         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1882         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1883         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1884         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1885         attr(ONKEYUP, null, null, 0, IMPLIED),
1886         attr(TYPE, TEXT,  new String[] { TEXT, PASSWORD, CHECKBOX, RADIO,
1887           SUBMIT, RESET, FILE, HIDDEN, IMAGE, BUTTON }, 0, DEFAULT),
1888         attr(sNAME, null, null, 0, IMPLIED),
1889         attr(VALUE, null, null, 0, IMPLIED),
1890         attr(CHECKED, null,  new String[] { CHECKED }, 0, IMPLIED),
1891         attr(DISABLED, null,  new String[] { DISABLED }, 0, IMPLIED),
1892         attr(READONLY, null,  new String[] { READONLY }, 0, IMPLIED),
1893         attr(SIZE, null, null, 0, IMPLIED),
1894         attr(MAXLENGTH, null, null, 0, IMPLIED),
1895         attr(SRC, null, null, 0, IMPLIED),
1896         attr(ALT, null, null, 0, IMPLIED),
1897         attr(USEMAP, null, null, 0, IMPLIED),
1898         attr(ISMAP, null,  new String[] { ISMAP }, 0, IMPLIED),
1899         attr(TABINDEX, null, null, NUMBER, IMPLIED),
1900         attr(ACCESSKEY, null, null, 0, IMPLIED),
1901         attr(ONFOCUS, null, null, 0, IMPLIED),
1902         attr(ONBLUR, null, null, 0, IMPLIED),
1903         attr(ONSELECT, null, null, 0, IMPLIED),
1904         attr(ONCHANGE, null, null, 0, IMPLIED),
1905         attr(ACCEPT, null, null, 0, IMPLIED),
1906         attr(ALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, LEFT, RIGHT },
1907           0, IMPLIED)
1908       }
1909     );
1910       defElement(INS, 0, false, false, null,
1911       NONE
1912       ,
1913       new String[] {
1914         PCDATA, A, ABBR, ACRONYM,
1915         APPLET, B, BASEFONT, BDO, BIG,
1916         BR, BUTTON, CITE, CODE, DFN,
1917         EM, FONT, I, IFRAME, IMG,
1918         INPUT, KBD, LABEL, MAP, OBJECT,
1919         Q, S, SAMP, SCRIPT, SELECT,
1920         SMALL, SPAN, STRIKE, STRONG, SUB,
1921         SUP, TEXTAREA, TT, U, VAR,
1922         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
1923         DL, FIELDSET, FORM, H1, H2,
1924         H3, H4, H5, H6, HR,
1925         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
1926         P, PRE, TABLE, UL
1927       }
1928     ,
1929       new AttributeList[] {
1930         attr(sID, null, null, ID, IMPLIED),
1931         attr(CLASS, null, null, 0, IMPLIED),
1932         attr(STYLE, null, null, 0, IMPLIED),
1933         attr(TITLE, null, null, 0, IMPLIED),
1934         attr(LANG, null, null, 0, IMPLIED),
1935         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1936         attr(ONCLICK, null, null, 0, IMPLIED),
1937         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1938         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1939         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1940         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1941         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1942         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1943         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1944         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1945         attr(ONKEYUP, null, null, 0, IMPLIED),
1946         attr(CITE, null, null, 0, IMPLIED),
1947         attr(DATETIME, null, null, 0, IMPLIED)
1948       }
1949     );
1950       defElement(ISINDEX, EMPTY, false, true, null,
1951       NONE
1952       ,
1953       NONE
1954     ,
1955       new AttributeList[] {
1956         attr(sID, null, null, ID, IMPLIED),
1957         attr(CLASS, null, null, 0, IMPLIED),
1958         attr(STYLE, null, null, 0, IMPLIED),
1959         attr(TITLE, null, null, 0, IMPLIED),
1960         attr(LANG, null, null, 0, IMPLIED),
1961         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1962         attr(PROMPT, null, null, 0, IMPLIED)
1963       }
1964     );
1965       defElement(KBD, 0, false, false, null,
1966       NONE
1967       ,
1968       new String[] {
1969         PCDATA, A, ABBR, ACRONYM,
1970         APPLET, B, BASEFONT, BDO, BIG,
1971         BR, BUTTON, CITE, CODE, DFN,
1972         EM, FONT, I, IFRAME, IMG,
1973         INPUT, KBD, LABEL, MAP, OBJECT,
1974         Q, S, SAMP, SCRIPT, SELECT,
1975         SMALL, SPAN, STRIKE, STRONG, SUB,
1976         SUP, TEXTAREA, TT, U, VAR
1977       }
1978     ,
1979       new AttributeList[] {
1980         attr(sID, null, null, ID, IMPLIED),
1981         attr(CLASS, null, null, 0, IMPLIED),
1982         attr(STYLE, null, null, 0, IMPLIED),
1983         attr(TITLE, null, null, 0, IMPLIED),
1984         attr(LANG, null, null, 0, IMPLIED),
1985         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
1986         attr(ONCLICK, null, null, 0, IMPLIED),
1987         attr(ONDBLCLICK, null, null, 0, IMPLIED),
1988         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
1989         attr(ONMOUSEUP, null, null, 0, IMPLIED),
1990         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
1991         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
1992         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
1993         attr(ONKEYPRESS, null, null, 0, IMPLIED),
1994         attr(ONKEYDOWN, null, null, 0, IMPLIED),
1995         attr(ONKEYUP, null, null, 0, IMPLIED)
1996       }
1997     );
1998       defElement(LABEL, 0, false, false, null,
1999       new String[] {
2000         LABEL
2001       }
2002       ,
2003       new String[] {
2004         PCDATA, A, ABBR, ACRONYM,
2005         APPLET, B, BASEFONT, BDO, BIG,
2006         BR, BUTTON, CITE, CODE, DFN,
2007         EM, FONT, I, IFRAME, IMG,
2008         INPUT, KBD, MAP, OBJECT, Q,
2009         S, SAMP, SCRIPT, SELECT, SMALL,
2010         SPAN, STRIKE, STRONG, SUB, SUP,
2011         TEXTAREA, TT, U, VAR
2012       }
2013     ,
2014       new AttributeList[] {
2015         attr(sID, null, null, ID, IMPLIED),
2016         attr(CLASS, null, null, 0, IMPLIED),
2017         attr(STYLE, null, null, 0, IMPLIED),
2018         attr(TITLE, null, null, 0, IMPLIED),
2019         attr(LANG, null, null, 0, IMPLIED),
2020         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2021         attr(ONCLICK, null, null, 0, IMPLIED),
2022         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2023         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2024         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2025         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2026         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2027         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2028         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2029         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2030         attr(ONKEYUP, null, null, 0, IMPLIED),
2031         attr(FOR, null, null, 0, IMPLIED),
2032         attr(ACCESSKEY, null, null, 0, IMPLIED),
2033         attr(ONFOCUS, null, null, 0, IMPLIED),
2034         attr(ONBLUR, null, null, 0, IMPLIED)
2035       }
2036     );
2037       defElement(LEGEND, 0, false, false, null,
2038       NONE
2039       ,
2040       new String[] {
2041         PCDATA, A, ABBR, ACRONYM,
2042         APPLET, B, BASEFONT, BDO, BIG,
2043         BR, BUTTON, CITE, CODE, DFN,
2044         EM, FONT, I, IFRAME, IMG,
2045         INPUT, KBD, LABEL, MAP, OBJECT,
2046         Q, S, SAMP, SCRIPT, SELECT,
2047         SMALL, SPAN, STRIKE, STRONG, SUB,
2048         SUP, TEXTAREA, TT, U, VAR
2049       }
2050     ,
2051       new AttributeList[] {
2052         attr(sID, null, null, ID, IMPLIED),
2053         attr(CLASS, null, null, 0, IMPLIED),
2054         attr(STYLE, null, null, 0, IMPLIED),
2055         attr(TITLE, null, null, 0, IMPLIED),
2056         attr(LANG, null, null, 0, IMPLIED),
2057         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2058         attr(ONCLICK, null, null, 0, IMPLIED),
2059         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2060         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2061         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2062         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2063         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2064         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2065         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2066         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2067         attr(ONKEYUP, null, null, 0, IMPLIED),
2068         attr(ACCESSKEY, null, null, 0, IMPLIED),
2069         attr(ALIGN, null,  new String[] { TOP, BOTTOM, LEFT, RIGHT },
2070           0, IMPLIED)
2071       }
2072     );
2073       // LI has a special content model that will be resolved into
2074       // by transformer.
2075       defElement(LI, 0, false, true,
2076         new ContentModel(0,
2077           new noTagModel(LI), null),
2078       NONE
2079       ,
2080       new String[] {
2081         PCDATA, A, ABBR, ACRONYM,
2082         APPLET, B, BASEFONT, BDO, BIG,
2083         BR, BUTTON, CITE, CODE, DFN,
2084         EM, FONT, I, IFRAME, IMG,
2085         INPUT, KBD, LABEL, MAP, OBJECT,
2086         Q, S, SAMP, SCRIPT, SELECT,
2087         SMALL, SPAN, STRIKE, STRONG, SUB,
2088         SUP, TEXTAREA, TT, U, VAR,
2089         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
2090         DL, FIELDSET, FORM, H1, H2,
2091         H3, H4, H5, H6, HR,
2092         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
2093         P, PRE, TABLE, UL
2094       }
2095     ,
2096       new AttributeList[] {
2097         attr(sID, null, null, ID, IMPLIED),
2098         attr(CLASS, null, null, 0, IMPLIED),
2099         attr(STYLE, null, null, 0, IMPLIED),
2100         attr(TITLE, null, null, 0, IMPLIED),
2101         attr(LANG, null, null, 0, IMPLIED),
2102         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2103         attr(ONCLICK, null, null, 0, IMPLIED),
2104         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2105         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2106         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2107         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2108         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2109         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2110         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2111         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2112         attr(ONKEYUP, null, null, 0, IMPLIED),
2113         attr(TYPE, null, null, 0, IMPLIED),
2114         attr(VALUE, null, null, NUMBER, IMPLIED)
2115       }
2116     );
2117       defElement(LINK, EMPTY, false, true, null,
2118       NONE
2119       ,
2120       NONE
2121     ,
2122       new AttributeList[] {
2123         attr(sID, null, null, ID, IMPLIED),
2124         attr(CLASS, null, null, 0, IMPLIED),
2125         attr(STYLE, null, null, 0, IMPLIED),
2126         attr(TITLE, null, null, 0, IMPLIED),
2127         attr(LANG, null, null, 0, IMPLIED),
2128         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2129         attr(ONCLICK, null, null, 0, IMPLIED),
2130         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2131         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2132         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2133         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2134         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2135         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2136         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2137         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2138         attr(ONKEYUP, null, null, 0, IMPLIED),
2139         attr(CHARSET, null, null, 0, IMPLIED),
2140         attr(HREF, null, null, 0, IMPLIED),
2141         attr(HREFLANG, null, null, 0, IMPLIED),
2142         attr(TYPE, null, null, 0, IMPLIED),
2143         attr(REL, null, null, 0, IMPLIED),
2144         attr(REV, null, null, 0, IMPLIED),
2145         attr(MEDIA, null, null, 0, IMPLIED),
2146         attr(TARGET, null, null, 0, IMPLIED)
2147       }
2148     );
2149       defElement(MAP, 0, false, false, null,
2150       NONE
2151       ,
2152       new String[] {
2153         ADDRESS, BLOCKQUOTE, CENTER, DIR,
2154         DIV, DL, FIELDSET, FORM, H1,
2155         H2, H3, H4, H5, H6,
2156         HR, ISINDEX, MENU, NOFRAMES, NOSCRIPT,
2157         OL, P, PRE, TABLE, UL,
2158         AREA
2159       }
2160     ,
2161       new AttributeList[] {
2162         attr(sID, null, null, ID, IMPLIED),
2163         attr(CLASS, null, null, 0, IMPLIED),
2164         attr(STYLE, null, null, 0, IMPLIED),
2165         attr(TITLE, null, null, 0, IMPLIED),
2166         attr(LANG, null, null, 0, IMPLIED),
2167         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2168         attr(ONCLICK, null, null, 0, IMPLIED),
2169         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2170         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2171         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2172         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2173         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2174         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2175         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2176         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2177         attr(ONKEYUP, null, null, 0, IMPLIED),
2178         attr(sNAME, null, null, 0, REQUIRED)
2179       }
2180     );
2181       defElement(MENU, 0, false, false, createListModel(),
2182       new String[] {
2183         ADDRESS, BLOCKQUOTE, CENTER, DIR,
2184         DIV, DL, FIELDSET, FORM, H1,
2185         H2, H3, H4, H5, H6,
2186         HR, ISINDEX, MENU, NOFRAMES, NOSCRIPT,
2187         OL, P, PRE, TABLE, UL
2188       }
2189       ,
2190       new String[] {
2191         LI, UL, OL
2192       }
2193     ,
2194       new AttributeList[] {
2195         attr(sID, null, null, ID, IMPLIED),
2196         attr(CLASS, null, null, 0, IMPLIED),
2197         attr(STYLE, null, null, 0, IMPLIED),
2198         attr(TITLE, null, null, 0, IMPLIED),
2199         attr(LANG, null, null, 0, IMPLIED),
2200         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2201         attr(ONCLICK, null, null, 0, IMPLIED),
2202         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2203         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2204         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2205         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2206         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2207         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2208         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2209         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2210         attr(ONKEYUP, null, null, 0, IMPLIED),
2211         attr(COMPACT, null,  new String[] { COMPACT }, 0, IMPLIED)
2212       }
2213     );
2214       defElement(META, EMPTY, false, true, null,
2215       NONE
2216       ,
2217       NONE
2218     ,
2219       new AttributeList[] {
2220         attr(LANG, null, null, 0, IMPLIED),
2221         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2222         attr(HTTPEQUIV, null, null, 0, IMPLIED),
2223         attr(sNAME, null, null, NAME, IMPLIED),
2224         attr(CONTENT, null, null, 0, REQUIRED),
2225         attr(SCHEME, null, null, 0, IMPLIED)
2226       }
2227     );
2228       defElement(NOFRAMES, 0, false, false, null,
2229       NONE
2230       ,
2231       new String[] {
2232         PCDATA, A, ABBR, ACRONYM,
2233         APPLET, B, BASEFONT, BDO, BIG,
2234         BR, BUTTON, CITE, CODE, DFN,
2235         EM, FONT, I, IFRAME, IMG,
2236         INPUT, KBD, LABEL, MAP, OBJECT,
2237         Q, S, SAMP, SCRIPT, SELECT,
2238         SMALL, SPAN, STRIKE, STRONG, SUB,
2239         SUP, TEXTAREA, TT, U, VAR,
2240         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
2241         DL, FIELDSET, FORM, H1, H2,
2242         H3, H4, H5, H6, HR,
2243         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
2244         P, PRE, TABLE, UL
2245       }
2246     ,
2247       new AttributeList[] {
2248         attr(sID, null, null, ID, IMPLIED),
2249         attr(CLASS, null, null, 0, IMPLIED),
2250         attr(STYLE, null, null, 0, IMPLIED),
2251         attr(TITLE, null, null, 0, IMPLIED),
2252         attr(LANG, null, null, 0, IMPLIED),
2253         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2254         attr(ONCLICK, null, null, 0, IMPLIED),
2255         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2256         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2257         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2258         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2259         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2260         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2261         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2262         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2263         attr(ONKEYUP, null, null, 0, IMPLIED)
2264       }
2265     );
2266       defElement(NOSCRIPT, 0, false, false, null,
2267       NONE
2268       ,
2269       new String[] {
2270         PCDATA, A, ABBR, ACRONYM,
2271         APPLET, B, BASEFONT, BDO, BIG,
2272         BR, BUTTON, CITE, CODE, DFN,
2273         EM, FONT, I, IFRAME, IMG,
2274         INPUT, KBD, LABEL, MAP, OBJECT,
2275         Q, S, SAMP, SCRIPT, SELECT,
2276         SMALL, SPAN, STRIKE, STRONG, SUB,
2277         SUP, TEXTAREA, TT, U, VAR,
2278         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
2279         DL, FIELDSET, FORM, H1, H2,
2280         H3, H4, H5, H6, HR,
2281         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
2282         P, PRE, TABLE, UL
2283       }
2284     ,
2285       new AttributeList[] {
2286         attr(sID, null, null, ID, IMPLIED),
2287         attr(CLASS, null, null, 0, IMPLIED),
2288         attr(STYLE, null, null, 0, IMPLIED),
2289         attr(TITLE, null, null, 0, IMPLIED),
2290         attr(LANG, null, null, 0, IMPLIED),
2291         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2292         attr(ONCLICK, null, null, 0, IMPLIED),
2293         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2294         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2295         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2296         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2297         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2298         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2299         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2300         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2301         attr(ONKEYUP, null, null, 0, IMPLIED)
2302       }
2303     );
2304       defElement(OBJECT, 0, false, false, null,
2305       NONE
2306       ,
2307       new String[] {
2308         PCDATA, A, ABBR, ACRONYM,
2309         APPLET, B, BASEFONT, BDO, BIG,
2310         BR, BUTTON, CITE, CODE, DFN,
2311         EM, FONT, I, IFRAME, IMG,
2312         INPUT, KBD, LABEL, MAP, OBJECT,
2313         Q, S, SAMP, SCRIPT, SELECT,
2314         SMALL, SPAN, STRIKE, STRONG, SUB,
2315         SUP, TEXTAREA, TT, U, VAR,
2316         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
2317         DL, FIELDSET, FORM, H1, H2,
2318         H3, H4, H5, H6, HR,
2319         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
2320         P, PRE, TABLE, UL, PARAM
2321       }
2322     ,
2323       new AttributeList[] {
2324         attr(sID, null, null, ID, IMPLIED),
2325         attr(CLASS, null, null, 0, IMPLIED),
2326         attr(STYLE, null, null, 0, IMPLIED),
2327         attr(TITLE, null, null, 0, IMPLIED),
2328         attr(LANG, null, null, 0, IMPLIED),
2329         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2330         attr(ONCLICK, null, null, 0, IMPLIED),
2331         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2332         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2333         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2334         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2335         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2336         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2337         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2338         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2339         attr(ONKEYUP, null, null, 0, IMPLIED),
2340         attr(DECLARE, null,  new String[] { DECLARE }, 0, IMPLIED),
2341         attr(CLASSID, null, null, 0, IMPLIED),
2342         attr(CODEBASE, null, null, 0, IMPLIED),
2343         attr(DATA, null, null, 0, IMPLIED),
2344         attr(TYPE, null, null, 0, IMPLIED),
2345         attr(CODETYPE, null, null, 0, IMPLIED),
2346         attr(ARCHIVE, null, null, 0, IMPLIED),
2347         attr(STANDBY, null, null, 0, IMPLIED),
2348         attr(HEIGHT, null, null, 0, IMPLIED),
2349         attr(WIDTH, null, null, 0, IMPLIED),
2350         attr(USEMAP, null, null, 0, IMPLIED),
2351         attr(sNAME, null, null, 0, IMPLIED),
2352         attr(TABINDEX, null, null, NUMBER, IMPLIED),
2353         attr(ALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, LEFT, RIGHT },
2354           0, IMPLIED),
2355         attr(BORDER, null, null, PIXELS, IMPLIED),
2356         attr(HSPACE, null, null, 0, IMPLIED),
2357         attr(VSPACE, null, null, 0, IMPLIED)
2358       }
2359     );
2360       defElement(OL, 0, false, false, createListModel(),
2361       NONE
2362       ,
2363       new String[] {
2364       // See note on the createListModel method
2365       LI, UL, OL
2366       }
2367     ,
2368       new AttributeList[] {
2369         attr(sID, null, null, ID, IMPLIED),
2370         attr(CLASS, null, null, 0, IMPLIED),
2371         attr(STYLE, null, null, 0, IMPLIED),
2372         attr(TITLE, null, null, 0, IMPLIED),
2373         attr(LANG, null, null, 0, IMPLIED),
2374         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2375         attr(ONCLICK, null, null, 0, IMPLIED),
2376         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2377         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2378         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2379         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2380         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2381         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2382         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2383         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2384         attr(ONKEYUP, null, null, 0, IMPLIED),
2385         attr(TYPE, null, null, 0, IMPLIED),
2386         attr(COMPACT, null,  new String[] { COMPACT }, 0, IMPLIED),
2387         attr(START, null, null, 0, IMPLIED)
2388       }
2389     );
2390       defElement(OPTGROUP, 0, false, false, null,
2391       NONE
2392       ,
2393       new String[] {
2394         OPTION
2395       }
2396     ,
2397       new AttributeList[] {
2398         attr(sID, null, null, ID, IMPLIED),
2399         attr(CLASS, null, null, 0, IMPLIED),
2400         attr(STYLE, null, null, 0, IMPLIED),
2401         attr(TITLE, null, null, 0, IMPLIED),
2402         attr(LANG, null, null, 0, IMPLIED),
2403         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2404         attr(ONCLICK, null, null, 0, IMPLIED),
2405         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2406         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2407         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2408         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2409         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2410         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2411         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2412         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2413         attr(ONKEYUP, null, null, 0, IMPLIED),
2414         attr(DISABLED, null,  new String[] { DISABLED }, 0, IMPLIED),
2415         attr(LABEL, null, null, 0, REQUIRED)
2416       }
2417     );
2418       defElement(OPTION, 0, false, true, new ContentModel(0,
2419        new PCDATAonly_model(), null),
2420        NONE,
2421        new String[] {
2422          PCDATA
2423        }
2424       ,
2425       new AttributeList[] {
2426         attr(sID, null, null, ID, IMPLIED),
2427         attr(CLASS, null, null, 0, IMPLIED),
2428         attr(STYLE, null, null, 0, IMPLIED),
2429         attr(TITLE, null, null, 0, IMPLIED),
2430         attr(LANG, null, null, 0, IMPLIED),
2431         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2432         attr(ONCLICK, null, null, 0, IMPLIED),
2433         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2434         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2435         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2436         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2437         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2438         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2439         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2440         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2441         attr(ONKEYUP, null, null, 0, IMPLIED),
2442         attr(SELECTED, null,  new String[] { SELECTED }, 0, IMPLIED),
2443         attr(DISABLED, null,  new String[] { DISABLED }, 0, IMPLIED),
2444         attr(LABEL, null, null, 0, IMPLIED),
2445         attr(VALUE, null, null, 0, IMPLIED)
2446       }
2447     );
2448       
2449       // Headers in the paragraph are not allowed.
2450       defElement(P, 0, false, true, new ContentModel( 0,
2451        new noTagModel(new String[] { P, H1, H2, H3, H4, H5, H6 }), null),
2452       NONE
2453       ,
2454       new String[] {
2455         PCDATA, A, ABBR, ACRONYM,
2456         APPLET, B, BASEFONT, BDO, BIG,
2457         BR, BUTTON, CITE, CODE, DFN,
2458         EM, FONT, I, IFRAME, IMG,
2459         INPUT, KBD, LABEL, MAP, OBJECT,
2460         Q, S, SAMP, SCRIPT, SELECT,
2461         SMALL, SPAN, STRIKE, STRONG, SUB,
2462         SUP, TEXTAREA, TT, U, VAR
2463       }
2464     ,
2465       new AttributeList[] {
2466         attr(sID, null, null, ID, IMPLIED),
2467         attr(CLASS, null, null, 0, IMPLIED),
2468         attr(STYLE, null, null, 0, IMPLIED),
2469         attr(TITLE, null, null, 0, IMPLIED),
2470         attr(LANG, null, null, 0, IMPLIED),
2471         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2472         attr(ONCLICK, null, null, 0, IMPLIED),
2473         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2474         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2475         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2476         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2477         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2478         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2479         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2480         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2481         attr(ONKEYUP, null, null, 0, IMPLIED),
2482         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
2483           0, IMPLIED)
2484       }
2485     );
2486       defElement(PARAM, EMPTY, false, true, null,
2487       NONE
2488       ,
2489       NONE
2490     ,
2491       new AttributeList[] {
2492         attr(sID, null, null, ID, IMPLIED),
2493         attr(sNAME, null, null, 0, REQUIRED),
2494         attr(VALUE, null, null, 0, IMPLIED),
2495         attr(VALUETYPE, DATA,  new String[] { DATA, REF, OBJECT }, 0, DEFAULT),
2496         attr(TYPE, null, null, 0, IMPLIED)
2497       }
2498     );
2499       defElement(PRE, 0, false, false, null,
2500       new String[] {
2501         APPLET, BASEFONT, BIG, FONT,
2502         IMG, OBJECT, SMALL, SUB, SUP
2503       }
2504       ,
2505       new String[] {
2506         PCDATA, A, ABBR, ACRONYM,
2507         B, BDO, BR, BUTTON, CITE,
2508         CODE, DFN, EM, I, IFRAME,
2509         INPUT, KBD, LABEL, MAP, Q,
2510         S, SAMP, SCRIPT, SELECT, SPAN,
2511         STRIKE, STRONG, TEXTAREA, TT, U,
2512         VAR
2513       }
2514     ,
2515       new AttributeList[] {
2516         attr(sID, null, null, ID, IMPLIED),
2517         attr(CLASS, null, null, 0, IMPLIED),
2518         attr(STYLE, null, null, 0, IMPLIED),
2519         attr(TITLE, null, null, 0, IMPLIED),
2520         attr(LANG, null, null, 0, IMPLIED),
2521         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2522         attr(ONCLICK, null, null, 0, IMPLIED),
2523         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2524         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2525         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2526         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2527         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2528         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2529         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2530         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2531         attr(ONKEYUP, null, null, 0, IMPLIED),
2532         attr(WIDTH, null, null, NUMBER, IMPLIED)
2533       }
2534     );
2535       defElement(Q, 0, false, false, null,
2536       NONE
2537       ,
2538       new String[] {
2539         PCDATA, A, ABBR, ACRONYM,
2540         APPLET, B, BASEFONT, BDO, BIG,
2541         BR, BUTTON, CITE, CODE, DFN,
2542         EM, FONT, I, IFRAME, IMG,
2543         INPUT, KBD, LABEL, MAP, OBJECT,
2544         Q, S, SAMP, SCRIPT, SELECT,
2545         SMALL, SPAN, STRIKE, STRONG, SUB,
2546         SUP, TEXTAREA, TT, U, VAR
2547       }
2548     ,
2549       new AttributeList[] {
2550         attr(sID, null, null, ID, IMPLIED),
2551         attr(CLASS, null, null, 0, IMPLIED),
2552         attr(STYLE, null, null, 0, IMPLIED),
2553         attr(TITLE, null, null, 0, IMPLIED),
2554         attr(LANG, null, null, 0, IMPLIED),
2555         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2556         attr(ONCLICK, null, null, 0, IMPLIED),
2557         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2558         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2559         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2560         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2561         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2562         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2563         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2564         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2565         attr(ONKEYUP, null, null, 0, IMPLIED),
2566         attr(CITE, null, null, 0, IMPLIED)
2567       }
2568     );
2569       defElement(S, 0, false, false, null,
2570       NONE
2571       ,
2572       new String[] {
2573         PCDATA, A, ABBR, ACRONYM,
2574         APPLET, B, BASEFONT, BDO, BIG,
2575         BR, BUTTON, CITE, CODE, DFN,
2576         EM, FONT, I, IFRAME, IMG,
2577         INPUT, KBD, LABEL, MAP, OBJECT,
2578         Q, S, SAMP, SCRIPT, SELECT,
2579         SMALL, SPAN, STRIKE, STRONG, SUB,
2580         SUP, TEXTAREA, TT, U, VAR
2581       }
2582     ,
2583       new AttributeList[] {
2584         attr(sID, null, null, ID, IMPLIED),
2585         attr(CLASS, null, null, 0, IMPLIED),
2586         attr(STYLE, null, null, 0, IMPLIED),
2587         attr(TITLE, null, null, 0, IMPLIED),
2588         attr(LANG, null, null, 0, IMPLIED),
2589         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2590         attr(ONCLICK, null, null, 0, IMPLIED),
2591         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2592         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2593         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2594         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2595         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2596         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2597         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2598         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2599         attr(ONKEYUP, null, null, 0, IMPLIED)
2600       }
2601     );
2602       defElement(SAMP, 0, false, false, null,
2603       NONE
2604       ,
2605       new String[] {
2606         PCDATA, A, ABBR, ACRONYM,
2607         APPLET, B, BASEFONT, BDO, BIG,
2608         BR, BUTTON, CITE, CODE, DFN,
2609         EM, FONT, I, IFRAME, IMG,
2610         INPUT, KBD, LABEL, MAP, OBJECT,
2611         Q, S, SAMP, SCRIPT, SELECT,
2612         SMALL, SPAN, STRIKE, STRONG, SUB,
2613         SUP, TEXTAREA, TT, U, VAR
2614       }
2615     ,
2616       new AttributeList[] {
2617         attr(sID, null, null, ID, IMPLIED),
2618         attr(CLASS, null, null, 0, IMPLIED),
2619         attr(STYLE, null, null, 0, IMPLIED),
2620         attr(TITLE, null, null, 0, IMPLIED),
2621         attr(LANG, null, null, 0, IMPLIED),
2622         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2623         attr(ONCLICK, null, null, 0, IMPLIED),
2624         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2625         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2626         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2627         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2628         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2629         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2630         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2631         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2632         attr(ONKEYUP, null, null, 0, IMPLIED)
2633       }
2634     );
2635       defElement(SCRIPT, CDATA, false, false, null,
2636       NONE
2637       ,
2638       NONE
2639     ,
2640       new AttributeList[] {
2641         attr(CHARSET, null, null, 0, IMPLIED),
2642         attr(TYPE, null, null, 0, REQUIRED),
2643         attr(LANGUAGE, null, null, 0, IMPLIED),
2644         attr(SRC, null, null, 0, IMPLIED),
2645         attr(DEFER, null,  new String[] { DEFER }, 0, IMPLIED),
2646         attr(EVENT, null, null, 0, IMPLIED),
2647         attr(FOR, null, null, 0, IMPLIED)
2648       }
2649     );
2650       defElement(SELECT, 0, false, false, null,
2651       NONE
2652       ,
2653       new String[] {
2654         OPTGROUP, OPTION
2655       }
2656     ,
2657       new AttributeList[] {
2658         attr(sID, null, null, ID, IMPLIED),
2659         attr(CLASS, null, null, 0, IMPLIED),
2660         attr(STYLE, null, null, 0, IMPLIED),
2661         attr(TITLE, null, null, 0, IMPLIED),
2662         attr(LANG, null, null, 0, IMPLIED),
2663         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2664         attr(ONCLICK, null, null, 0, IMPLIED),
2665         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2666         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2667         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2668         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2669         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2670         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2671         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2672         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2673         attr(ONKEYUP, null, null, 0, IMPLIED),
2674         attr(sNAME, null, null, 0, IMPLIED),
2675         attr(SIZE, null, null, NUMBER, IMPLIED),
2676         attr(MULTIPLE, null,  new String[] { MULTIPLE }, 0, IMPLIED),
2677         attr(DISABLED, null,  new String[] { DISABLED }, 0, IMPLIED),
2678         attr(TABINDEX, null, null, NUMBER, IMPLIED),
2679         attr(ONFOCUS, null, null, 0, IMPLIED),
2680         attr(ONBLUR, null, null, 0, IMPLIED),
2681         attr(ONCHANGE, null, null, 0, IMPLIED)
2682       }
2683     );
2684       defElement(SMALL, 0, false, false, null,
2685       NONE
2686       ,
2687       new String[] {
2688         PCDATA, A, ABBR, ACRONYM,
2689         APPLET, B, BASEFONT, BDO, BIG,
2690         BR, BUTTON, CITE, CODE, DFN,
2691         EM, FONT, I, IFRAME, IMG,
2692         INPUT, KBD, LABEL, MAP, OBJECT,
2693         Q, S, SAMP, SCRIPT, SELECT,
2694         SMALL, SPAN, STRIKE, STRONG, SUB,
2695         SUP, TEXTAREA, TT, U, VAR
2696       }
2697     ,
2698       new AttributeList[] {
2699         attr(sID, null, null, ID, IMPLIED),
2700         attr(CLASS, null, null, 0, IMPLIED),
2701         attr(STYLE, null, null, 0, IMPLIED),
2702         attr(TITLE, null, null, 0, IMPLIED),
2703         attr(LANG, null, null, 0, IMPLIED),
2704         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2705         attr(ONCLICK, null, null, 0, IMPLIED),
2706         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2707         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2708         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2709         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2710         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2711         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2712         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2713         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2714         attr(ONKEYUP, null, null, 0, IMPLIED)
2715       }
2716     );
2717       defElement(SPAN, 0, false, false, null,
2718       NONE
2719       ,
2720       new String[] {
2721         PCDATA, A, ABBR, ACRONYM,
2722         APPLET, B, BASEFONT, BDO, BIG,
2723         BR, BUTTON, CITE, CODE, DFN,
2724         EM, FONT, I, IFRAME, IMG,
2725         INPUT, KBD, LABEL, MAP, OBJECT,
2726         Q, S, SAMP, SCRIPT, SELECT,
2727         SMALL, SPAN, STRIKE, STRONG, SUB,
2728         SUP, TEXTAREA, TT, U, VAR
2729       }
2730     ,
2731       new AttributeList[] {
2732         attr(sID, null, null, ID, IMPLIED),
2733         attr(CLASS, null, null, 0, IMPLIED),
2734         attr(STYLE, null, null, 0, IMPLIED),
2735         attr(TITLE, null, null, 0, IMPLIED),
2736         attr(LANG, null, null, 0, IMPLIED),
2737         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2738         attr(ONCLICK, null, null, 0, IMPLIED),
2739         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2740         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2741         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2742         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2743         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2744         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2745         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2746         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2747         attr(ONKEYUP, null, null, 0, IMPLIED)
2748       }
2749     );
2750       defElement(STRIKE, 0, false, false, null,
2751       NONE
2752       ,
2753       new String[] {
2754         PCDATA, A, ABBR, ACRONYM,
2755         APPLET, B, BASEFONT, BDO, BIG,
2756         BR, BUTTON, CITE, CODE, DFN,
2757         EM, FONT, I, IFRAME, IMG,
2758         INPUT, KBD, LABEL, MAP, OBJECT,
2759         Q, S, SAMP, SCRIPT, SELECT,
2760         SMALL, SPAN, STRIKE, STRONG, SUB,
2761         SUP, TEXTAREA, TT, U, VAR
2762       }
2763     ,
2764       new AttributeList[] {
2765         attr(sID, null, null, ID, IMPLIED),
2766         attr(CLASS, null, null, 0, IMPLIED),
2767         attr(STYLE, null, null, 0, IMPLIED),
2768         attr(TITLE, null, null, 0, IMPLIED),
2769         attr(LANG, null, null, 0, IMPLIED),
2770         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2771         attr(ONCLICK, null, null, 0, IMPLIED),
2772         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2773         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2774         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2775         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2776         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2777         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2778         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2779         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2780         attr(ONKEYUP, null, null, 0, IMPLIED)
2781       }
2782     );
2783       defElement(STRONG, 0, false, false, null,
2784       NONE
2785       ,
2786       new String[] {
2787         PCDATA, A, ABBR, ACRONYM,
2788         APPLET, B, BASEFONT, BDO, BIG,
2789         BR, BUTTON, CITE, CODE, DFN,
2790         EM, FONT, I, IFRAME, IMG,
2791         INPUT, KBD, LABEL, MAP, OBJECT,
2792         Q, S, SAMP, SCRIPT, SELECT,
2793         SMALL, SPAN, STRIKE, STRONG, SUB,
2794         SUP, TEXTAREA, TT, U, VAR
2795       }
2796     ,
2797       new AttributeList[] {
2798         attr(sID, null, null, ID, IMPLIED),
2799         attr(CLASS, null, null, 0, IMPLIED),
2800         attr(STYLE, null, null, 0, IMPLIED),
2801         attr(TITLE, null, null, 0, IMPLIED),
2802         attr(LANG, null, null, 0, IMPLIED),
2803         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2804         attr(ONCLICK, null, null, 0, IMPLIED),
2805         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2806         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2807         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2808         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2809         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2810         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2811         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2812         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2813         attr(ONKEYUP, null, null, 0, IMPLIED)
2814       }
2815     );
2816       defElement(STYLE, CDATA, false, false, null,
2817       NONE
2818       ,
2819       NONE
2820     ,
2821       new AttributeList[] {
2822         attr(LANG, null, null, 0, IMPLIED),
2823         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2824         attr(TYPE, null, null, 0, REQUIRED),
2825         attr(MEDIA, null, null, 0, IMPLIED),
2826         attr(TITLE, null, null, 0, IMPLIED)
2827       }
2828     );
2829       defElement(SUB, 0, false, false, null,
2830       NONE
2831       ,
2832       new String[] {
2833         PCDATA, A, ABBR, ACRONYM,
2834         APPLET, B, BASEFONT, BDO, BIG,
2835         BR, BUTTON, CITE, CODE, DFN,
2836         EM, FONT, I, IFRAME, IMG,
2837         INPUT, KBD, LABEL, MAP, OBJECT,
2838         Q, S, SAMP, SCRIPT, SELECT,
2839         SMALL, SPAN, STRIKE, STRONG, SUB,
2840         SUP, TEXTAREA, TT, U, VAR
2841       }
2842     ,
2843       new AttributeList[] {
2844         attr(sID, null, null, ID, IMPLIED),
2845         attr(CLASS, null, null, 0, IMPLIED),
2846         attr(STYLE, null, null, 0, IMPLIED),
2847         attr(TITLE, null, null, 0, IMPLIED),
2848         attr(LANG, null, null, 0, IMPLIED),
2849         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2850         attr(ONCLICK, null, null, 0, IMPLIED),
2851         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2852         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2853         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2854         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2855         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2856         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2857         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2858         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2859         attr(ONKEYUP, null, null, 0, IMPLIED)
2860       }
2861     );
2862       defElement(SUP, 0, false, false, null,
2863       NONE
2864       ,
2865       new String[] {
2866         PCDATA, A, ABBR, ACRONYM,
2867         APPLET, B, BASEFONT, BDO, BIG,
2868         BR, BUTTON, CITE, CODE, DFN,
2869         EM, FONT, I, IFRAME, IMG,
2870         INPUT, KBD, LABEL, MAP, OBJECT,
2871         Q, S, SAMP, SCRIPT, SELECT,
2872         SMALL, SPAN, STRIKE, STRONG, SUB,
2873         SUP, TEXTAREA, TT, U, VAR
2874       }
2875     ,
2876       new AttributeList[] {
2877         attr(sID, null, null, ID, IMPLIED),
2878         attr(CLASS, null, null, 0, IMPLIED),
2879         attr(STYLE, null, null, 0, IMPLIED),
2880         attr(TITLE, null, null, 0, IMPLIED),
2881         attr(LANG, null, null, 0, IMPLIED),
2882         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2883         attr(ONCLICK, null, null, 0, IMPLIED),
2884         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2885         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2886         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2887         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2888         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2889         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2890         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2891         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2892         attr(ONKEYUP, null, null, 0, IMPLIED)
2893       }
2894     );
2895       defElement(TABLE, 0, false, false, createTableContentModel(),
2896       NONE
2897       ,
2898       new String[] {
2899         CAPTION, COL, COLGROUP, TBODY,
2900         TFOOT, THEAD
2901       }
2902     ,
2903       new AttributeList[] {
2904         attr(sID, null, null, ID, IMPLIED),
2905         attr(CLASS, null, null, 0, IMPLIED),
2906         attr(STYLE, null, null, 0, IMPLIED),
2907         attr(TITLE, null, null, 0, IMPLIED),
2908         attr(LANG, null, null, 0, IMPLIED),
2909         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2910         attr(ONCLICK, null, null, 0, IMPLIED),
2911         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2912         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2913         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2914         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2915         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2916         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2917         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2918         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2919         attr(ONKEYUP, null, null, 0, IMPLIED),
2920         attr(SUMMARY, null, null, 0, IMPLIED),
2921         attr(WIDTH, null, null, 0, IMPLIED),
2922         attr(BORDER, null, null, PIXELS, IMPLIED),
2923         attr(FRAME, null,  new String[] { VOID, ABOVE, BELOW, HSIDES, LHS, RHS,
2924          VSIDES, BOX, BORDER }, 0, IMPLIED),
2925         attr(RULES, null,  new String[] { NONES, GROUPS, ROWS, COLS, ALL },
2926          0, IMPLIED),
2927         attr(CELLSPACING, null, null, 0, IMPLIED),
2928         attr(CELLPADDING, null, null, 0, IMPLIED),
2929         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT }, 0, IMPLIED),
2930         attr(BGCOLOR, null, null, 0, IMPLIED),
2931         attr(DATAPAGESIZE, null, null, 0, IMPLIED)
2932       }
2933     );
2934       defElement(TBODY, 0, true, true, model(TR,'+'),
2935       NONE
2936       ,
2937       new String[] {
2938         TR
2939       }
2940     ,
2941       new AttributeList[] {
2942         attr(sID, null, null, ID, IMPLIED),
2943         attr(CLASS, null, null, 0, IMPLIED),
2944         attr(STYLE, null, null, 0, IMPLIED),
2945         attr(TITLE, null, null, 0, IMPLIED),
2946         attr(LANG, null, null, 0, IMPLIED),
2947         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2948         attr(ONCLICK, null, null, 0, IMPLIED),
2949         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2950         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2951         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2952         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
2953         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
2954         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
2955         attr(ONKEYPRESS, null, null, 0, IMPLIED),
2956         attr(ONKEYDOWN, null, null, 0, IMPLIED),
2957         attr(ONKEYUP, null, null, 0, IMPLIED),
2958         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
2959           0, IMPLIED),
2960         attr(CHAR, null, null, 0, IMPLIED),
2961         attr(CHAROFF, null, null, 0, IMPLIED),
2962         attr(VALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
2963           0, IMPLIED)
2964       }
2965     );
2966
2967       defElement(TD, 0, false, true,
2968        new ContentModel(0,
2969         new noTagModel(new String[] {"TD", "TH", "TR" } ), null),
2970       NONE
2971       ,
2972       new String[] {
2973         PCDATA, A, ABBR, ACRONYM,
2974         APPLET, B, BASEFONT, BDO, BIG,
2975         BR, BUTTON, CITE, CODE, DFN,
2976         EM, FONT, I, IFRAME, IMG,
2977         INPUT, KBD, LABEL, MAP, OBJECT,
2978         Q, S, SAMP, SCRIPT, SELECT,
2979         SMALL, SPAN, STRIKE, STRONG, SUB,
2980         SUP, TEXTAREA, TT, U, VAR,
2981         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
2982         DL, FIELDSET, FORM, H1, H2,
2983         H3, H4, H5, H6, HR,
2984         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
2985         P, PRE, TABLE, UL
2986       }
2987     ,
2988       new AttributeList[] {
2989         attr(sID, null, null, ID, IMPLIED),
2990         attr(CLASS, null, null, 0, IMPLIED),
2991         attr(STYLE, null, null, 0, IMPLIED),
2992         attr(TITLE, null, null, 0, IMPLIED),
2993         attr(LANG, null, null, 0, IMPLIED),
2994         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
2995         attr(ONCLICK, null, null, 0, IMPLIED),
2996         attr(ONDBLCLICK, null, null, 0, IMPLIED),
2997         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
2998         attr(ONMOUSEUP, null, null, 0, IMPLIED),
2999         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
3000         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
3001         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
3002         attr(ONKEYPRESS, null, null, 0, IMPLIED),
3003         attr(ONKEYDOWN, null, null, 0, IMPLIED),
3004         attr(ONKEYUP, null, null, 0, IMPLIED),
3005         attr(ABBR, null, null, 0, IMPLIED),
3006         attr(AXIS, null, null, 0, IMPLIED),
3007         attr(HEADERS, null, null, 0, IMPLIED),
3008         attr(SCOPE, null,  new String[] { ROW, COL, ROWGROUP, COLGROUP },
3009           0, IMPLIED),
3010         attr(ROWSPAN, C_1, null, NUMBER, DEFAULT),
3011         attr(COLSPAN, C_1, null, NUMBER, DEFAULT),
3012         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
3013           0, IMPLIED),
3014         attr(CHAR, null, null, 0, IMPLIED),
3015         attr(CHAROFF, null, null, 0, IMPLIED),
3016         attr(VALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
3017           0, IMPLIED),
3018         attr(NOWRAP, null,  new String[] { NOWRAP }, 0, IMPLIED),
3019         attr(BGCOLOR, null, null, 0, IMPLIED),
3020         attr(WIDTH, null, null, 0, IMPLIED),
3021         attr(HEIGHT, null, null, 0, IMPLIED)
3022       }
3023     );
3024       defElement(TEXTAREA, 0, false, false, null,
3025       NONE
3026       ,
3027       new String[] {
3028         PCDATA
3029       }
3030     ,
3031       new AttributeList[] {
3032         attr(sID, null, null, ID, IMPLIED),
3033         attr(CLASS, null, null, 0, IMPLIED),
3034         attr(STYLE, null, null, 0, IMPLIED),
3035         attr(TITLE, null, null, 0, IMPLIED),
3036         attr(LANG, null, null, 0, IMPLIED),
3037         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
3038         attr(ONCLICK, null, null, 0, IMPLIED),
3039         attr(ONDBLCLICK, null, null, 0, IMPLIED),
3040         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
3041         attr(ONMOUSEUP, null, null, 0, IMPLIED),
3042         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
3043         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
3044         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
3045         attr(ONKEYPRESS, null, null, 0, IMPLIED),
3046         attr(ONKEYDOWN, null, null, 0, IMPLIED),
3047         attr(ONKEYUP, null, null, 0, IMPLIED),
3048         attr(sNAME, null, null, 0, IMPLIED),
3049         attr(ROWS, null, null, NUMBER, REQUIRED),
3050         attr(COLS, null, null, NUMBER, REQUIRED),
3051         attr(DISABLED, null,  new String[] { DISABLED }, 0, IMPLIED),
3052         attr(READONLY, null,  new String[] { READONLY }, 0, IMPLIED),
3053         attr(TABINDEX, null, null, NUMBER, IMPLIED),
3054         attr(ACCESSKEY, null, null, 0, IMPLIED),
3055         attr(ONFOCUS, null, null, 0, IMPLIED),
3056         attr(ONBLUR, null, null, 0, IMPLIED),
3057         attr(ONSELECT, null, null, 0, IMPLIED),
3058         attr(ONCHANGE, null, null, 0, IMPLIED)
3059       }
3060     );
3061       defElement(TFOOT, 0, false, true, model(TR,'+'),
3062       NONE
3063       ,
3064       new String[] {
3065         TR
3066       }
3067     ,
3068       new AttributeList[] {
3069         attr(sID, null, null, ID, IMPLIED),
3070         attr(CLASS, null, null, 0, IMPLIED),
3071         attr(STYLE, null, null, 0, IMPLIED),
3072         attr(TITLE, null, null, 0, IMPLIED),
3073         attr(LANG, null, null, 0, IMPLIED),
3074         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
3075         attr(ONCLICK, null, null, 0, IMPLIED),
3076         attr(ONDBLCLICK, null, null, 0, IMPLIED),
3077         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
3078         attr(ONMOUSEUP, null, null, 0, IMPLIED),
3079         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
3080         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
3081         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
3082         attr(ONKEYPRESS, null, null, 0, IMPLIED),
3083         attr(ONKEYDOWN, null, null, 0, IMPLIED),
3084         attr(ONKEYUP, null, null, 0, IMPLIED),
3085         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
3086           0, IMPLIED),
3087         attr(CHAR, null, null, 0, IMPLIED),
3088         attr(CHAROFF, null, null, 0, IMPLIED),
3089         attr(VALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
3090          0, IMPLIED)
3091       }
3092     );
3093       defElement(TH, 0, false, true, null,
3094       NONE
3095       ,
3096       new String[] {
3097         PCDATA, A, ABBR, ACRONYM,
3098         APPLET, B, BASEFONT, BDO, BIG,
3099         BR, BUTTON, CITE, CODE, DFN,
3100         EM, FONT, I, IFRAME, IMG,
3101         INPUT, KBD, LABEL, MAP, OBJECT,
3102         Q, S, SAMP, SCRIPT, SELECT,
3103         SMALL, SPAN, STRIKE, STRONG, SUB,
3104         SUP, TEXTAREA, TT, U, VAR,
3105         ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
3106         DL, FIELDSET, FORM, H1, H2,
3107         H3, H4, H5, H6, HR,
3108         ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
3109         P, PRE, TABLE, UL
3110       }
3111     ,
3112       new AttributeList[] {
3113         attr(sID, null, null, ID, IMPLIED),
3114         attr(CLASS, null, null, 0, IMPLIED),
3115         attr(STYLE, null, null, 0, IMPLIED),
3116         attr(TITLE, null, null, 0, IMPLIED),
3117         attr(LANG, null, null, 0, IMPLIED),
3118         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
3119         attr(ONCLICK, null, null, 0, IMPLIED),
3120         attr(ONDBLCLICK, null, null, 0, IMPLIED),
3121         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
3122         attr(ONMOUSEUP, null, null, 0, IMPLIED),
3123         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
3124         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
3125         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
3126         attr(ONKEYPRESS, null, null, 0, IMPLIED),
3127         attr(ONKEYDOWN, null, null, 0, IMPLIED),
3128         attr(ONKEYUP, null, null, 0, IMPLIED),
3129         attr(ABBR, null, null, 0, IMPLIED),
3130         attr(AXIS, null, null, 0, IMPLIED),
3131         attr(HEADERS, null, null, 0, IMPLIED),
3132         attr(SCOPE, null,  new String[] { ROW, COL, ROWGROUP, COLGROUP },
3133           0, IMPLIED),
3134         attr(ROWSPAN, C_1, null, NUMBER, DEFAULT),
3135         attr(COLSPAN, C_1, null, NUMBER, DEFAULT),
3136         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
3137           0, IMPLIED),
3138         attr(CHAR, null, null, 0, IMPLIED),
3139         attr(CHAROFF, null, null, 0, IMPLIED),
3140         attr(VALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
3141           0, IMPLIED),
3142         attr(NOWRAP, null,  new String[] { NOWRAP }, 0, IMPLIED),
3143         attr(BGCOLOR, null, null, 0, IMPLIED),
3144         attr(WIDTH, null, null, 0, IMPLIED),
3145         attr(HEIGHT, null, null, 0, IMPLIED)
3146       }
3147     );
3148       defElement(THEAD, 0, false, true, model(TR,'+'),
3149       NONE
3150       ,
3151       new String[] {
3152         TR
3153       }
3154     ,
3155       new AttributeList[] {
3156         attr(sID, null, null, ID, IMPLIED),
3157         attr(CLASS, null, null, 0, IMPLIED),
3158         attr(STYLE, null, null, 0, IMPLIED),
3159         attr(TITLE, null, null, 0, IMPLIED),
3160         attr(LANG, null, null, 0, IMPLIED),
3161         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
3162         attr(ONCLICK, null, null, 0, IMPLIED),
3163         attr(ONDBLCLICK, null, null, 0, IMPLIED),
3164         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
3165         attr(ONMOUSEUP, null, null, 0, IMPLIED),
3166         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
3167         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
3168         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
3169         attr(ONKEYPRESS, null, null, 0, IMPLIED),
3170         attr(ONKEYDOWN, null, null, 0, IMPLIED),
3171         attr(ONKEYUP, null, null, 0, IMPLIED),
3172         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
3173           0, IMPLIED),
3174         attr(CHAR, null, null, 0, IMPLIED),
3175         attr(CHAROFF, null, null, 0, IMPLIED),
3176         attr(VALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
3177           0, IMPLIED)
3178       }
3179     );
3180       defElement(TITLE, 0, false, false, null,
3181       new String[] {
3182         OBJECT, SCRIPT, LINK, META,
3183         STYLE
3184       }
3185       ,
3186       new String[] {
3187         PCDATA
3188       }
3189     ,
3190       new AttributeList[] {
3191         attr(LANG, null, null, 0, IMPLIED),
3192         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED)
3193       }
3194     );
3195       defElement(TR, 0, false, true,
3196        new ContentModel(0, new TableRowContentModel(this), null),
3197       NONE
3198       ,
3199       new String[] {
3200         TD, TH
3201       }
3202     ,
3203       new AttributeList[] {
3204         attr(sID, null, null, ID, IMPLIED),
3205         attr(CLASS, null, null, 0, IMPLIED),
3206         attr(STYLE, null, null, 0, IMPLIED),
3207         attr(TITLE, null, null, 0, IMPLIED),
3208         attr(LANG, null, null, 0, IMPLIED),
3209         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
3210         attr(ONCLICK, null, null, 0, IMPLIED),
3211         attr(ONDBLCLICK, null, null, 0, IMPLIED),
3212         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
3213         attr(ONMOUSEUP, null, null, 0, IMPLIED),
3214         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
3215         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
3216         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
3217         attr(ONKEYPRESS, null, null, 0, IMPLIED),
3218         attr(ONKEYDOWN, null, null, 0, IMPLIED),
3219         attr(ONKEYUP, null, null, 0, IMPLIED),
3220         attr(ALIGN, null,  new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
3221           0, IMPLIED),
3222         attr(CHAR, null, null, 0, IMPLIED),
3223         attr(CHAROFF, null, null, 0, IMPLIED),
3224         attr(VALIGN, null,  new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
3225           0, IMPLIED),
3226         attr(BGCOLOR, null, null, 0, IMPLIED)
3227       }
3228     );
3229       defElement(TT, 0, false, false, null,
3230       NONE
3231       ,
3232       new String[] {
3233         PCDATA, A, ABBR, ACRONYM,
3234         APPLET, B, BASEFONT, BDO, BIG,
3235         BR, BUTTON, CITE, CODE, DFN,
3236         EM, FONT, I, IFRAME, IMG,
3237         INPUT, KBD, LABEL, MAP, OBJECT,
3238         Q, S, SAMP, SCRIPT, SELECT,
3239         SMALL, SPAN, STRIKE, STRONG, SUB,
3240         SUP, TEXTAREA, TT, U, VAR
3241       }
3242     ,
3243       new AttributeList[] {
3244         attr(sID, null, null, ID, IMPLIED),
3245         attr(CLASS, null, null, 0, IMPLIED),
3246         attr(STYLE, null, null, 0, IMPLIED),
3247         attr(TITLE, null, null, 0, IMPLIED),
3248         attr(LANG, null, null, 0, IMPLIED),
3249         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
3250         attr(ONCLICK, null, null, 0, IMPLIED),
3251         attr(ONDBLCLICK, null, null, 0, IMPLIED),
3252         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
3253         attr(ONMOUSEUP, null, null, 0, IMPLIED),
3254         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
3255         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
3256         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
3257         attr(ONKEYPRESS, null, null, 0, IMPLIED),
3258         attr(ONKEYDOWN, null, null, 0, IMPLIED),
3259         attr(ONKEYUP, null, null, 0, IMPLIED)
3260       }
3261     );
3262       defElement(U, 0, false, false, null,
3263       NONE
3264       ,
3265       new String[] {
3266         PCDATA, A, ABBR, ACRONYM,
3267         APPLET, B, BASEFONT, BDO, BIG,
3268         BR, BUTTON, CITE, CODE, DFN,
3269         EM, FONT, I, IFRAME, IMG,
3270         INPUT, KBD, LABEL, MAP, OBJECT,
3271         Q, S, SAMP, SCRIPT, SELECT,
3272         SMALL, SPAN, STRIKE, STRONG, SUB,
3273         SUP, TEXTAREA, TT, U, VAR
3274       }
3275     ,
3276       new AttributeList[] {
3277         attr(sID, null, null, ID, IMPLIED),
3278         attr(CLASS, null, null, 0, IMPLIED),
3279         attr(STYLE, null, null, 0, IMPLIED),
3280         attr(TITLE, null, null, 0, IMPLIED),
3281         attr(LANG, null, null, 0, IMPLIED),
3282         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
3283         attr(ONCLICK, null, null, 0, IMPLIED),
3284         attr(ONDBLCLICK, null, null, 0, IMPLIED),
3285         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
3286         attr(ONMOUSEUP, null, null, 0, IMPLIED),
3287         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
3288         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
3289         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
3290         attr(ONKEYPRESS, null, null, 0, IMPLIED),
3291         attr(ONKEYDOWN, null, null, 0, IMPLIED),
3292         attr(ONKEYUP, null, null, 0, IMPLIED)
3293       }
3294     );
3295       defElement(UL, 0, false, false, createListModel(),
3296       NONE
3297       ,
3298       new String[] {
3299         // See note on the createListModel method
3300         LI, UL, OL
3301       }
3302     ,
3303       new AttributeList[] {
3304         attr(sID, null, null, ID, IMPLIED),
3305         attr(CLASS, null, null, 0, IMPLIED),
3306         attr(STYLE, null, null, 0, IMPLIED),
3307         attr(TITLE, null, null, 0, IMPLIED),
3308         attr(LANG, null, null, 0, IMPLIED),
3309         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
3310         attr(ONCLICK, null, null, 0, IMPLIED),
3311         attr(ONDBLCLICK, null, null, 0, IMPLIED),
3312         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
3313         attr(ONMOUSEUP, null, null, 0, IMPLIED),
3314         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
3315         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
3316         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
3317         attr(ONKEYPRESS, null, null, 0, IMPLIED),
3318         attr(ONKEYDOWN, null, null, 0, IMPLIED),
3319         attr(ONKEYUP, null, null, 0, IMPLIED),
3320         attr(TYPE, null,  new String[] { DISC, SQUARE, CIRCLE }, 0, IMPLIED),
3321         attr(COMPACT, null,  new String[] { COMPACT }, 0, IMPLIED)
3322       }
3323     );
3324       defElement(VAR, 0, false, false, null,
3325       NONE
3326       ,
3327       new String[] {
3328         PCDATA, A, ABBR, ACRONYM,
3329         APPLET, B, BASEFONT, BDO, BIG,
3330         BR, BUTTON, CITE, CODE, DFN,
3331         EM, FONT, I, IFRAME, IMG,
3332         INPUT, KBD, LABEL, MAP, OBJECT,
3333         Q, S, SAMP, SCRIPT, SELECT,
3334         SMALL, SPAN, STRIKE, STRONG, SUB,
3335         SUP, TEXTAREA, TT, U, VAR
3336       }
3337     ,
3338       new AttributeList[] {
3339         attr(sID, null, null, ID, IMPLIED),
3340         attr(CLASS, null, null, 0, IMPLIED),
3341         attr(STYLE, null, null, 0, IMPLIED),
3342         attr(TITLE, null, null, 0, IMPLIED),
3343         attr(LANG, null, null, 0, IMPLIED),
3344         attr(DIR, null,  new String[] { LTR, RTL }, 0, IMPLIED),
3345         attr(ONCLICK, null, null, 0, IMPLIED),
3346         attr(ONDBLCLICK, null, null, 0, IMPLIED),
3347         attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
3348         attr(ONMOUSEUP, null, null, 0, IMPLIED),
3349         attr(ONMOUSEOVER, null, null, 0, IMPLIED),
3350         attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
3351         attr(ONMOUSEOUT, null, null, 0, IMPLIED),
3352         attr(ONKEYPRESS, null, null, 0, IMPLIED),
3353         attr(ONKEYDOWN, null, null, 0, IMPLIED),
3354         attr(ONKEYUP, null, null, 0, IMPLIED)
3355       }
3356     );
3357
3358   }
3359
3360   /**
3361    * Define all entities in this DTD.
3362    */
3363   protected void defineEntities()
3364   {
3365     /* Define general entities */
3366     defineEntity("AElig", 198);
3367     defineEntity("Aacute", 193);
3368     defineEntity("Acirc", 194);
3369     defineEntity("Agrave", 192);
3370     defineEntity("Alpha", 913);
3371     defineEntity("Aring", 197);
3372     defineEntity("Atilde", 195);
3373     defineEntity("Auml", 196);
3374     defineEntity("Beta", 914);
3375     defineEntity("Ccedil", 199);
3376     defineEntity("Chi", 935);
3377     defineEntity("Dagger", 8225);
3378     defineEntity("Delta", 916);
3379     defineEntity("ETH", 208);
3380     defineEntity("Eacute", 201);
3381     defineEntity("Ecirc", 202);
3382     defineEntity("Egrave", 200);
3383     defineEntity("Epsilon", 917);
3384     defineEntity("Eta", 919);
3385     defineEntity("Euml", 203);
3386     defineEntity("Gamma", 915);
3387     defineEntity("Iacute", 205);
3388     defineEntity("Icirc", 206);
3389     defineEntity("Igrave", 204);
3390     defineEntity("Iota", 921);
3391     defineEntity("Iuml", 207);
3392     defineEntity("Kappa", 922);
3393     defineEntity("Lambda", 923);
3394     defineEntity("Mu", 924);
3395     defineEntity("Ntilde", 209);
3396     defineEntity("Nu", 925);
3397     defineEntity("OElig", 338);
3398     defineEntity("Oacute", 211);
3399     defineEntity("Ocirc", 212);
3400     defineEntity("Ograve", 210);
3401     defineEntity("Omega", 937);
3402     defineEntity("Omicron", 927);
3403     defineEntity("Oslash", 216);
3404     defineEntity("Otilde", 213);
3405     defineEntity("Ouml", 214);
3406     defineEntity("Phi", 934);
3407     defineEntity("Pi", 928);
3408     defineEntity("Prime", 8243);
3409     defineEntity("Psi", 936);
3410     defineEntity("Rho", 929);
3411     defineEntity("Scaron", 352);
3412     defineEntity("Sigma", 931);
3413     defineEntity("THORN", 222);
3414     defineEntity("Tau", 932);
3415     defineEntity("Theta", 920);
3416     defineEntity("Uacute", 218);
3417     defineEntity("Ucirc", 219);
3418     defineEntity("Ugrave", 217);
3419     defineEntity("Upsilon", 933);
3420     defineEntity("Uuml", 220);
3421     defineEntity("Xi", 926);
3422     defineEntity("Yacute", 221);
3423     defineEntity("Yuml", 376);
3424     defineEntity("Zeta", 918);
3425     defineEntity("aacute", 225);
3426     defineEntity("acirc", 226);
3427     defineEntity("acute", 180);
3428     defineEntity("aelig", 230);
3429     defineEntity("agrave", 224);
3430     defineEntity("alefsym", 8501);
3431     defineEntity("alpha", 945);
3432     defineEntity("amp", 38);
3433     defineEntity("and", 8743);
3434     defineEntity("ang", 8736);
3435     defineEntity("aring", 229);
3436     defineEntity("asymp", 8776);
3437     defineEntity("atilde", 227);
3438     defineEntity("auml", 228);
3439     defineEntity("bdquo", 8222);
3440     defineEntity("beta", 946);
3441     defineEntity("brvbar", 166);
3442     defineEntity("bull", 8226);
3443     defineEntity("cap", 8745);
3444     defineEntity("ccedil", 231);
3445     defineEntity("cedil", 184);
3446     defineEntity("cent", 162);
3447     defineEntity("chi", 967);
3448     defineEntity("circ", 710);
3449     defineEntity("clubs", 9827);
3450     defineEntity("cong", 8773);
3451     defineEntity("copy", 169);
3452     defineEntity("crarr", 8629);
3453     defineEntity("cup", 8746);
3454     defineEntity("curren", 164);
3455     defineEntity("dArr", 8659);
3456     defineEntity("dagger", 8224);
3457     defineEntity("darr", 8595);
3458     defineEntity("deg", 176);
3459     defineEntity("delta", 948);
3460     defineEntity("diams", 9830);
3461     defineEntity("divide", 247);
3462     defineEntity("eacute", 233);
3463     defineEntity("ecirc", 234);
3464     defineEntity("egrave", 232);
3465     defineEntity("empty", 8709);
3466     defineEntity("emsp", 8195);
3467     defineEntity("ensp", 8194);
3468     defineEntity("epsilon", 949);
3469     defineEntity("equiv", 8801);
3470     defineEntity("eta", 951);
3471     defineEntity("eth", 240);
3472     defineEntity("euml", 235);
3473     defineEntity("euro", 8364);
3474     defineEntity("exist", 8707);
3475     defineEntity("fnof", 402);
3476     defineEntity("forall", 8704);
3477     defineEntity("frac12", 189);
3478     defineEntity("frac14", 188);
3479     defineEntity("frac34", 190);
3480     defineEntity("frasl", 8260);
3481     defineEntity("gamma", 947);
3482     defineEntity("ge", 8805);
3483     defineEntity("gt", 62);
3484     defineEntity("hArr", 8660);
3485     defineEntity("harr", 8596);
3486     defineEntity("hearts", 9829);
3487     defineEntity("hellip", 8230);
3488     defineEntity("iacute", 237);
3489     defineEntity("icirc", 238);
3490     defineEntity("iexcl", 161);
3491     defineEntity("igrave", 236);
3492     defineEntity("image", 8465);
3493     defineEntity("infin", 8734);
3494     defineEntity("int", 8747);
3495     defineEntity("iota", 953);
3496     defineEntity("iquest", 191);
3497     defineEntity("isin", 8712);
3498     defineEntity("iuml", 239);
3499     defineEntity("kappa", 954);
3500     defineEntity("lArr", 8656);
3501     defineEntity("lambda", 955);
3502     defineEntity("lang", 9001);
3503     defineEntity("laquo", 171);
3504     defineEntity("larr", 8592);
3505     defineEntity("lceil", 8968);
3506     defineEntity("ldquo", 8220);
3507     defineEntity("le", 8804);
3508     defineEntity("lfloor", 8970);
3509     defineEntity("lowast", 8727);
3510     defineEntity("loz", 9674);
3511     defineEntity("lrm", 8206);
3512     defineEntity("lsaquo", 8249);
3513     defineEntity("lsquo", 8216);
3514     defineEntity("lt", 60);
3515     defineEntity("macr", 175);
3516     defineEntity("mdash", 8212);
3517     defineEntity("micro", 181);
3518     defineEntity("middot", 183);
3519     defineEntity("minus", 8722);
3520     defineEntity("mu", 956);
3521     defineEntity("nabla", 8711);
3522     defineEntity("nbsp", 160);
3523     defineEntity("ndash", 8211);
3524     defineEntity("ne", 8800);
3525     defineEntity("ni", 8715);
3526     defineEntity("not", 172);
3527     defineEntity("notin", 8713);
3528     defineEntity("nsub", 8836);
3529     defineEntity("ntilde", 241);
3530     defineEntity("nu", 957);
3531     defineEntity("oacute", 243);
3532     defineEntity("ocirc", 244);
3533     defineEntity("oelig", 339);
3534     defineEntity("ograve", 242);
3535     defineEntity("oline", 8254);
3536     defineEntity("omega", 969);
3537     defineEntity("omicron", 959);
3538     defineEntity("oplus", 8853);
3539     defineEntity("or", 8744);
3540     defineEntity("ordf", 170);
3541     defineEntity("ordm", 186);
3542     defineEntity("oslash", 248);
3543     defineEntity("otilde", 245);
3544     defineEntity("otimes", 8855);
3545     defineEntity("ouml", 246);
3546     defineEntity("para", 182);
3547     defineEntity("part", 8706);
3548     defineEntity("permil", 8240);
3549     defineEntity("perp", 8869);
3550     defineEntity("phi", 966);
3551     defineEntity("pi", 960);
3552     defineEntity("piv", 982);
3553     defineEntity("plusmn", 177);
3554     defineEntity("pound", 163);
3555     defineEntity("prime", 8242);
3556     defineEntity("prod", 8719);
3557     defineEntity("prop", 8733);
3558     defineEntity("psi", 968);
3559     defineEntity("quot", 34);
3560     defineEntity("rArr", 8658);
3561     defineEntity("radic", 8730);
3562     defineEntity("rang", 9002);
3563     defineEntity("raquo", 187);
3564     defineEntity("rarr", 8594);
3565     defineEntity("rceil", 8969);
3566     defineEntity("rdquo", 8221);
3567     defineEntity("real", 8476);
3568     defineEntity("reg", 174);
3569     defineEntity("rfloor", 8971);
3570     defineEntity("rho", 961);
3571     defineEntity("rlm", 8207);
3572     defineEntity("rsaquo", 8250);
3573     defineEntity("rsquo", 8217);
3574     defineEntity("sbquo", 8218);
3575     defineEntity("scaron", 353);
3576     defineEntity("sdot", 8901);
3577     defineEntity("sect", 167);
3578     defineEntity("shy", 173);
3579     defineEntity("sigma", 963);
3580     defineEntity("sigmaf", 962);
3581     defineEntity("sim", 8764);
3582     defineEntity("spades", 9824);
3583     defineEntity("sub", 8834);
3584     defineEntity("sube", 8838);
3585     defineEntity("sum", 8721);
3586     defineEntity("sup", 8835);
3587     defineEntity("sup1", 185);
3588     defineEntity("sup2", 178);
3589     defineEntity("sup3", 179);
3590     defineEntity("supe", 8839);
3591     defineEntity("szlig", 223);
3592     defineEntity("tau", 964);
3593     defineEntity("there4", 8756);
3594     defineEntity("theta", 952);
3595     defineEntity("thetasym", 977);
3596     defineEntity("thinsp", 8201);
3597     defineEntity("thorn", 254);
3598     defineEntity("tilde", 732);
3599     defineEntity("times", 215);
3600     defineEntity("trade", 8482);
3601     defineEntity("uArr", 8657);
3602     defineEntity("uacute", 250);
3603     defineEntity("uarr", 8593);
3604     defineEntity("ucirc", 251);
3605     defineEntity("ugrave", 249);
3606     defineEntity("uml", 168);
3607     defineEntity("upsih", 978);
3608     defineEntity("upsilon", 965);
3609     defineEntity("uuml", 252);
3610     defineEntity("weierp", 8472);
3611     defineEntity("xi", 958);
3612     defineEntity("yacute", 253);
3613     defineEntity("yen", 165);
3614     defineEntity("yuml", 255);
3615     defineEntity("zeta", 950);
3616     defineEntity("zwj", 8205);
3617     defineEntity("zwnj", 8204);
3618   }
3619
3620   /**
3621    * Crate a content model, consisting of the single
3622    * element, specified by name.
3623    */
3624   protected ContentModel model(String element)
3625   {
3626     return new ContentModel(getElement(element));
3627   }
3628
3629   /**
3630    * Crate a chain from the two content models,
3631    * the last containing the given element and
3632    * the specified unary operation.
3633    */
3634   private ContentModel model(String element, int unary)
3635   {
3636     ContentModel ct = model(element);
3637     ct.type = unary;
3638     return new ContentModel(0, ct);
3639   }
3640
3641   /**
3642    * Create the model HEAD, BODY
3643    * @return the HTML content model of the whole document
3644    */
3645   protected ContentModel createHtmlContentModel()
3646   {
3647     ContentModel head = model(HEAD);
3648     ContentModel body = model(BODY);
3649     head.next = body;
3650     head.type = ',';
3651     return head;
3652   }
3653
3654   /**
3655    * Create the model
3656    * ( CAPTION ? , ( COL * | COLGROUP * ) , THEAD ? , TFOOT ? , TBODY + )
3657    */
3658   protected ContentModel createTableContentModel()
3659   {
3660      ContentModel col_colgroup = new ContentModel
3661       ('|', model(COL,'*'), model(COLGROUP,'*') );
3662
3663      col_colgroup = new ContentModel('*', col_colgroup);
3664      col_colgroup = new ContentModel(',', col_colgroup);
3665
3666      ContentModel caption = model(CAPTION,'?');
3667      ContentModel thead   = model(THEAD, '?');
3668      ContentModel tfoot   = model(TFOOT, '?');
3669      ContentModel tbody   = model(TBODY, '+');
3670
3671      caption.next = col_colgroup;
3672      col_colgroup.next = thead;
3673      thead.next = tfoot;
3674      tfoot.next = tbody;
3675
3676      caption.type = col_colgroup.type = thead.type = tfoot.type =
3677      tbody.type = ',';
3678
3679      return caption;
3680   }
3681
3682   /**
3683    * Creates a model for <DL> tag:
3684    * <code> DT+ | DL+ </code>.
3685    * @return
3686    */
3687   protected ContentModel createDefListModel()
3688   {
3689     ContentModel dt = model(DT, '+');
3690     ContentModel dd = model(DD, '+');
3691
3692     dt.next = dd;
3693     dt.type = dd.type = '|';
3694     return dt;
3695   }
3696
3697   /**
3698    * This model is used for UL, OL, MENU and DIR.
3699    *  HTML 4.01 specifies LI only, but the nested
3700    * list seems rendered correctly only if
3701    * it is not enclosed into <LI>-</LI> of the
3702    * parent list.
3703    */
3704   protected ContentModel createListModel()
3705   {
3706     ContentModel li = model(LI, '+');
3707     ContentModel ul = model(UL, '+');
3708     ContentModel ol = model(OL, '+');
3709
3710     li.next = ul;
3711     ul.next = ol;
3712     li.type = ul.type = ol.type = '|';
3713     return li;
3714   }
3715   
3716   /**
3717    * Get elements that are allowed in the document body, at the zero level.
3718    */
3719   protected String[] getBodyElements()
3720   {
3721     return new String[] {
3722         PCDATA, A, ABBR, ACRONYM,
3723         APPLET, B, BASEFONT, BDO, BIG,
3724         BR, BUTTON, CITE, CODE, DFN,
3725         EM, FONT, I, IFRAME, IMG,
3726         INPUT, KBD, LABEL, MAP, OBJECT,
3727         Q, S, SAMP, SCRIPT, SELECT,
3728         SMALL, SPAN, STRIKE, STRONG, SUB,
3729         SUP, TEXTAREA, TT, U, VAR,
3730         ADDRESS, BLOCKQUOTE, CENTER, DEL, DIR,
3731         DIV, DL, FIELDSET, FORM, H1,
3732         H2, H3, H4, H5, H6,
3733         HR, INS, ISINDEX, MENU, NOFRAMES,
3734         NOSCRIPT, OL, P, PRE, TABLE,
3735         UL
3736       };
3737   }
3738 }