KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > au > id > jericho > lib > html > HTMLElements


1 // Jericho HTML Parser - Java based library for analysing and manipulating HTML
2
// Version 2.2
3
// Copyright (C) 2006 Martin Jericho
4
// http://sourceforge.net/projects/jerichohtml/
5
//
6
// This library is free software; you can redistribute it and/or
7
// modify it under the terms of the GNU Lesser General Public
8
// License as published by the Free Software Foundation; either
9
// version 2.1 of the License, or (at your option) any later version.
10
// http://www.gnu.org/copyleft/lesser.html
11
//
12
// This library is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
// Lesser General Public License for more details.
16
//
17
// You should have received a copy of the GNU Lesser General Public
18
// License along with this library; if not, write to the Free Software
19
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20

21 package au.id.jericho.lib.html;
22
23 import java.util.*;
24
25 /**
26  * Contains static methods which group {@linkplain HTMLElementName HTML element names} by the characteristics of their associated
27  * <a HREF="#HTMLElement">elements</a>.
28  * <p>
29  * An <i><a name="HTMLElement">HTML element</a></i> is a <a HREF="Element.html#Normal">normal element</a> with a
30  * {@linkplain Element#getName() name} that matches one of the {@linkplain HTMLElementName HTML element names} (ignoring case).
31  * This type of element spans the logical HTML element as described in the
32  * <a target="_blank" HREF="http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.1">HTML 4.01 specification section 3.2.1</a>,
33  * which may be <a HREF="Element.html#ImplicitlyTerminated">implicitly terminated</a> if it specifies an
34  * {@linkplain #getEndTagOptionalElementNames() optional end tag}.
35  * <p>
36  * The term <i><a name="NonHTMLElement">Non-HTML element</a></i> refers to a <a HREF="Element.html#Normal">normal element</a>
37  * with a {@linkplain Element#getName() name} that does not match one of the {@linkplain HTMLElementName HTML element names}.
38  * This type of element must be either a <a HREF="Element.html#SingleTag">single tag element</a> or
39  * <a HREF="Element.html#ExplicitlyTerminated">explicitly terminated</a>.
40  * <p>
41  * All of the sets returned by the methods in this class may be modified to customise the behaviour of the parser.
42  * Care must be taken however to ensure that the sets only contain tag names in lower case.
43  * <p>
44  * Below is a table summarising the default characteristics of each <a HREF="#HTMLElement">HTML element</a>. See also the
45  * <a target="_blank" HREF="http://www.w3.org/TR/html401/index/elements.html">index of elements in the HTML 4.01 specification</a>
46  * for the official table containing similar information.
47  * <p>
48  * <style type="text/css">
49  * table#ElementSummary td, table#ElementSummary th {padding: 0px 5px 0px 5px}
50  * .StartTagOptionalColumn {text-align: center}
51  * .NestingForbiddenColumn {text-align: center}
52  * .DeprecatedColumn {text-align: center}
53  * </style>
54  * <table id="ElementSummary" class="bordered" cellspacing="0">
55  * <tr><th title="HTML Element Name">{@linkplain Element#getName() Name}</th><th title="Box Type Block or Inline"><a target="_blank" HREF="http://www.w3.org/TR/REC-CSS2/visuren.html#box-gen">Box&nbsp;Type</a></th><th title="Start Tag Optional">{@linkplain #getStartTagOptionalElementNames() Start&nbsp;Tag}</th><th title="End Tag Optional">{@linkplain #getEndTagOptionalElementNames() End&nbsp;Tag}</th><th title="Nesting Forbidden">{@linkplain #getNestingForbiddenElementNames() Nest}</th><th title="Deprecated">{@linkplain #getDeprecatedElementNames() Depr.}</th><th title="Click on the description to view the HTML 4.01 definition of the element">Description / Specification</th></tr>
56  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#A A}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/links.html#edef-A">anchor</a></td></tr>
57  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#ABBR ABBR}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-ABBR">abbreviated form (e.g., WWW, HTTP, etc.)</a></td></tr>
58  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#ACRONYM ACRONYM}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-ACRONYM">acronym</a></td></tr>
59  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#ADDRESS ADDRESS}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-ADDRESS">information on author</a></td></tr>
60  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#APPLET APPLET}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="deprecated"><a target="blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">D</a></td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/objects.html#edef-APPLET">Java applet</a></td></tr>
61  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#AREA AREA}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/objects.html#edef-AREA">client-side image map area</a></td></tr>
62  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#B B}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-B">bold text style</a></td></tr>
63  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#BASE BASE}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/links.html#edef-BASE">document base URI</a></td></tr>
64  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#BASEFONT BASEFONT}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="deprecated"><a target="blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">D</a></td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-BASEFONT">base font size</a></td></tr>
65  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#BDO BDO}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/dirlang.html#edef-BDO">I18N BiDi over-ride</a></td></tr>
66  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#BIG BIG}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-BIG">large text style</a></td></tr>
67  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#BLOCKQUOTE BLOCKQUOTE}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-BLOCKQUOTE">long quotation</a></td></tr>
68  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#BODY BODY}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag optional">{@linkplain #getStartTagOptionalElementNames() Optional}</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#BODY">details</a>)</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-BODY">document body</a></td></tr>
69  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#BR BR}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-BR">forced line break</a></td></tr>
70  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#BUTTON BUTTON}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-BUTTON">push button</a></td></tr>
71  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#CAPTION CAPTION}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/tables.html#edef-CAPTION">table caption</a></td></tr>
72  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#CENTER CENTER}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="deprecated"><a target="blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">D</a></td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-CENTER">shorthand for DIV align=center</a></td></tr>
73  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#CITE CITE}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-CITE">citation</a></td></tr>
74  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#CODE CODE}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-CODE">computer code fragment</a></td></tr>
75  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#COL COL}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/tables.html#edef-COL">table column</a></td></tr>
76  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#COLGROUP COLGROUP}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#COLGROUP">details</a>)</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/tables.html#edef-COLGROUP">table column group</a></td></tr>
77  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#DD DD}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#DD">details</a>)</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/lists.html#edef-DD">definition description</a></td></tr>
78  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#DEL DEL}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-DEL">deleted text</a></td></tr>
79  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#DFN DFN}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-DFN">instance definition</a></td></tr>
80  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#DIR DIR}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="deprecated"><a target="blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">D</a></td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/lists.html#edef-DIR">directory list</a></td></tr>
81  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#DIV DIV}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-DIV">generic language/style container</a></td></tr>
82  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#DL DL}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/lists.html#edef-DL">definition list</a></td></tr>
83  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#DT DT}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#DT">details</a>)</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/lists.html#edef-DT">definition term</a></td></tr>
84  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#EM EM}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-EM">emphasis</a></td></tr>
85  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#FIELDSET FIELDSET}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-FIELDSET">form control group</a></td></tr>
86  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#FONT FONT}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="deprecated"><a target="blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">D</a></td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-FONT">local change to font</a></td></tr>
87  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#FORM FORM}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-FORM">interactive form</a></td></tr>
88  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#FRAME FRAME}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/frames.html#edef-FRAME">subwindow</a></td></tr>
89  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#FRAMESET FRAMESET}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/frames.html#edef-FRAMESET">window subdivision</a></td></tr>
90  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#H1 H1}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-H1">heading</a></td></tr>
91  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#H2 H2}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-H2">heading</a></td></tr>
92  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#H3 H3}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-H3">heading</a></td></tr>
93  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#H4 H4}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-H4">heading</a></td></tr>
94  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#H5 H5}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-H5">heading</a></td></tr>
95  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#H6 H6}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-H6">heading</a></td></tr>
96  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#HEAD HEAD}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag optional">{@linkplain #getStartTagOptionalElementNames() Optional}</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#HEAD">details</a>)</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-HEAD">document head</a></td></tr>
97  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#HR HR}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-HR">horizontal rule</a></td></tr>
98  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#HTML HTML}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag optional">{@linkplain #getStartTagOptionalElementNames() Optional}</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#HTML">details</a>)</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-HTML">document root element</a></td></tr>
99  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#I I}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-I">italic text style</a></td></tr>
100  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#IFRAME IFRAME}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/frames.html#edef-IFRAME">inline subwindow</a></td></tr>
101  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#IMG IMG}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/objects.html#edef-IMG">Embedded image</a></td></tr>
102  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#INPUT INPUT}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-INPUT">form control</a></td></tr>
103  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#INS INS}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-INS">inserted text</a></td></tr>
104  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#ISINDEX ISINDEX}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="deprecated"><a target="blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">D</a></td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-ISINDEX">single line prompt</a></td></tr>
105  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#KBD KBD}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-KBD">text to be entered by the user</a></td></tr>
106  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#LABEL LABEL}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-LABEL">form field label text</a></td></tr>
107  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#LEGEND LEGEND}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-LEGEND">fieldset legend</a></td></tr>
108  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#LI LI}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#LI">details</a>)</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/lists.html#edef-LI">list item</a></td></tr>
109  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#LINK LINK}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/links.html#edef-LINK">a media-independent link</a></td></tr>
110  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#MAP MAP}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/objects.html#edef-MAP">client-side image map</a></td></tr>
111  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#MENU MENU}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="deprecated"><a target="blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">D</a></td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/lists.html#edef-MENU">menu list</a></td></tr>
112  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#META META}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-META">generic metainformation</a></td></tr>
113  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#NOFRAMES NOFRAMES}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/frames.html#edef-NOFRAMES">alternate content container for non frame-based rendering</a></td></tr>
114  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#NOSCRIPT NOSCRIPT}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/scripts.html#edef-NOSCRIPT">alternate content container for non script-based rendering</a></td></tr>
115  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#OBJECT OBJECT}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/objects.html#edef-OBJECT">generic embedded object</a></td></tr>
116  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#OL OL}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/lists.html#edef-OL">ordered list</a></td></tr>
117  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#OPTGROUP OPTGROUP}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-OPTGROUP">option group</a></td></tr>
118  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#OPTION OPTION}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#OPTION">details</a>)</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-OPTION">selectable choice</a></td></tr>
119  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#P P}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#P">details</a>)</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-P">paragraph</a></td></tr>
120  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#PARAM PARAM}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag forbidden">{@linkplain #getEndTagForbiddenElementNames() Forbidden}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/objects.html#edef-PARAM">named property value</a></td></tr>
121  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#PRE PRE}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-PRE">preformatted text</a></td></tr>
122  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#Q Q}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-Q">short inline quotation</a></td></tr>
123  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#S S}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="deprecated"><a target="blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">D</a></td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-S">strike-through text style</a></td></tr>
124  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#SAMP SAMP}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-SAMP">sample program output, scripts, etc.</a></td></tr>
125  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#SCRIPT SCRIPT}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/scripts.html#edef-SCRIPT">script statements</a></td></tr>
126  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#SELECT SELECT}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-SELECT">option selector</a></td></tr>
127  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#SMALL SMALL}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-SMALL">small text style</a></td></tr>
128  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#SPAN SPAN}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-SPAN">generic language/style container</a></td></tr>
129  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#STRIKE STRIKE}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="deprecated"><a target="blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">D</a></td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-STRIKE">strike-through text</a></td></tr>
130  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#STRONG STRONG}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-STRONG">strong emphasis</a></td></tr>
131  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#STYLE STYLE}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/styles.html#edef-STYLE">style info</a></td></tr>
132  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#SUB SUB}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-SUB">subscript</a></td></tr>
133  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#SUP SUP}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-SUP">superscript</a></td></tr>
134  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#TABLE TABLE}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/tables.html#edef-TABLE">table</a></td></tr>
135  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#TBODY TBODY}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag optional">{@linkplain #getStartTagOptionalElementNames() Optional}</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#TBODY">details</a>)</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/tables.html#edef-TBODY">table body</a></td></tr>
136  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#TD TD}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#TD">details</a>)</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/tables.html#edef-TD">table data cell</a></td></tr>
137  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#TEXTAREA TEXTAREA}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/interact/forms.html#edef-TEXTAREA">multi-line text field</a></td></tr>
138  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#TFOOT TFOOT}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#TFOOT">details</a>)</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/tables.html#edef-TFOOT">table footer</a></td></tr>
139  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#TH TH}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#TH">details</a>)</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/tables.html#edef-TH">table header cell</a></td></tr>
140  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#THEAD THEAD}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#THEAD">details</a>)</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/tables.html#edef-THEAD">table header</a></td></tr>
141  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#TITLE TITLE}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting forbidden">{@linkplain #getNestingForbiddenElementNames() NF}</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#edef-TITLE">document title</a></td></tr>
142  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#TR TR}</td><td class="BoxTypeColumn" title="neither block-level nor inline-level element">&nbsp;</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag optional">{@linkplain #getEndTagOptionalElementNames() Optional}&nbsp;(<a title="View information about which tags terminate this element" HREF="HTMLElementName.html#TR">details</a>)</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/tables.html#edef-TR">table row</a></td></tr>
143  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#TT TT}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-TT">teletype or monospaced text style</a></td></tr>
144  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#U U}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="deprecated"><a target="blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">D</a></td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/present/graphics.html#edef-U">underlined text style</a></td></tr>
145  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#UL UL}</td><td class="BoxTypeColumn" title="block-level element">{@linkplain #getBlockLevelElementNames() Block}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/lists.html#edef-UL">unordered list</a></td></tr>
146  * <tr><td title="View the field definition in the HTMLElementName class" class="ElementNameColumn">{@link HTMLElementName#VAR VAR}</td><td class="BoxTypeColumn" title="inline-level element">{@linkplain #getInlineLevelElementNames() Inline}</td><td class="StartTagOptionalColumn" title="start tag not optional">&nbsp;</td><td class="EndTagOptionalColumn" title="end tag required">{@linkplain #getEndTagRequiredElementNames() Required}</td><td class="NestingForbiddenColumn" title="nesting allowed">&nbsp;</td><td class="DeprecatedColumn" title="not deprecated">&nbsp;</td><td class="ElementDescription"><a title="View the HTML 4.01 definition of this element" target="_blank" HREF="http://www.w3.org/TR/html401/struct/text.html#edef-VAR">instance of a variable or program argument</a></td></tr>
147  * </table>
148  *
149  * @see HTMLElementName
150  * @see Element
151  */

152 public final class HTMLElements implements HTMLElementName {
153     private static final List ALL=new ArrayList(Arrays.asList(new String JavaDoc[] {A,ABBR,ACRONYM,ADDRESS,APPLET,AREA,B,BASE,BASEFONT,BDO,BIG,BLOCKQUOTE,BODY,BR,BUTTON,CAPTION,CENTER,CITE,CODE,COL,COLGROUP,DD,DEL,DFN,DIR,DIV,DL,DT,EM,FIELDSET,FONT,FORM,FRAME,FRAMESET,H1,H2,H3,H4,H5,H6,HEAD,HR,HTML,I,IFRAME,IMG,INPUT,INS,ISINDEX,KBD,LABEL,LEGEND,LI,LINK,MAP,MENU,META,NOFRAMES,NOSCRIPT,OBJECT,OL,OPTGROUP,OPTION,P,PARAM,PRE,Q,S,SAMP,SCRIPT,SELECT,SMALL,SPAN,STRIKE,STRONG,STYLE,SUB,SUP,TABLE,TBODY,TD,TEXTAREA,TFOOT,TH,THEAD,TITLE,TR,TT,U,UL,VAR}));
154     private static final HTMLElementNameSet BLOCK=new HTMLElementNameSet(new String JavaDoc[] {P,H1,H2,H3,H4,H5,H6,UL,OL,DIR,MENU,PRE,DL,DIV,CENTER,NOSCRIPT,NOFRAMES,BLOCKQUOTE,FORM,ISINDEX,HR,TABLE,FIELDSET,ADDRESS});
155     private static final HTMLElementNameSet INLINE=new HTMLElementNameSet(new String JavaDoc[] {TT,I,B,U,S,STRIKE,BIG,SMALL,EM,STRONG,DFN,CODE,SAMP,KBD,VAR,CITE,ABBR,ACRONYM,A,IMG,APPLET,OBJECT,FONT,BASEFONT,BR,SCRIPT,MAP,Q,SUB,SUP,SPAN,BDO,IFRAME,INPUT,SELECT,TEXTAREA,LABEL,BUTTON,INS,DEL});
156
157     private static final HTMLElementNameSet END_TAG_FORBIDDEN_SET=new HTMLElementNameSet(new String JavaDoc[] {AREA,BASE,BASEFONT,BR,COL,FRAME,HR,IMG,INPUT,ISINDEX,LINK,META,PARAM});
158
159     private static final HTMLElementNameSet _UL_OL=new HTMLElementNameSet(UL).union(OL);
160     private static final HTMLElementNameSet _DD_DT=new HTMLElementNameSet(DD).union(DT);
161     private static final HTMLElementNameSet _THEAD_TBODY_TFOOT_TR=new HTMLElementNameSet(THEAD).union(TBODY).union(TFOOT).union(TR);
162     private static final HTMLElementNameSet _THEAD_TBODY_TFOOT_TR_TD_TH=new HTMLElementNameSet(_THEAD_TBODY_TFOOT_TR).union(TD).union(TH);
163
164     private static final HTMLElementNameSet DEPRECATED=new HTMLElementNameSet().union(APPLET).union(BASEFONT).union(CENTER).union(DIR).union(FONT).union(ISINDEX).union(MENU).union(S).union(STRIKE).union(U);
165     private static final HTMLElementNameSet START_TAG_OPTIONAL_SET=new HTMLElementNameSet().union(BODY).union(HEAD).union(HTML).union(TBODY);
166
167     private static final HashMap CONSTANT_NAME_MAP=buildTagMap(); // contains a map of tag names to the tag constants, allowing standard tags to be tested using == operator instead of equals()
168
private static final HashMap TERMINATING_TAG_NAME_SETS_MAP=buildTerminatingTagNameSetsMap(); // contains a map of tags having optional end tags to the HTMLElementTerminatingTagNameSets that can terminate the element if the end tag is not present
169
private static final Set END_TAG_OPTIONAL_SET=TERMINATING_TAG_NAME_SETS_MAP.keySet();
170     private static final HTMLElementNameSet END_TAG_REQUIRED_SET=new HTMLElementNameSet().union(ALL).minus(END_TAG_FORBIDDEN_SET).minus(END_TAG_OPTIONAL_SET);
171     private static final HTMLElementNameSet CLOSING_SLASH_IGNORED_SET=new HTMLElementNameSet().union(END_TAG_OPTIONAL_SET).union(END_TAG_REQUIRED_SET);
172
173     static final HTMLElementNameSet END_TAG_REQUIRED_NESTING_FORBIDDEN_SET=new HTMLElementNameSet().union(A).union(ADDRESS).union(APPLET).union(BUTTON).union(CAPTION).union(FORM).union(IFRAME).union(LABEL).union(LEGEND).union(OPTGROUP).union(SCRIPT).union(SELECT).union(STYLE).union(TEXTAREA).union(TITLE);
174     private static final HTMLElementNameSet END_TAG_OPTIONAL_NESTING_FORBIDDEN_SET=new HTMLElementNameSet().union(BODY).union(COLGROUP).union(HEAD).union(HTML).union(OPTION).union(P);
175     private static final HTMLElementNameSet NESTING_FORBIDDEN_SET=new HTMLElementNameSet().union(END_TAG_REQUIRED_NESTING_FORBIDDEN_SET).union(END_TAG_OPTIONAL_NESTING_FORBIDDEN_SET).union(END_TAG_FORBIDDEN_SET);
176
177     private HTMLElements() {}
178
179     /**
180      * Returns a list containing all of the {@linkplain HTMLElementName HTML element names}.
181      * <p>
182      * The returned list is in alphabetical order.
183      *
184      * @return a list containing of all the {@linkplain HTMLElementName HTML element names}.
185      */

186     public static final List getElementNames() {
187         return ALL;
188     }
189
190     /**
191      * Returns a set containing the {@linkplain Element#getName() names} of all the
192      * <a target="_blank" HREF="http://www.w3.org/TR/REC-CSS2/visuren.html#q5">block-level elements</a>.
193      * <p>
194      * The element names contained in this set are:<br />
195      * {@link #ADDRESS ADDRESS}, {@link #BLOCKQUOTE BLOCKQUOTE}, {@link #CENTER CENTER}, {@link #DIR DIR}, {@link #DIV DIV},
196      * {@link #DL DL}, {@link #FIELDSET FIELDSET}, {@link #FORM FORM},
197      * {@link #H1 H1}, {@link #H2 H2}, {@link #H3 H3}, {@link #H4 H4}, {@link #H5 H5}, {@link #H6 H6},
198      * {@link #HR HR}, {@link #ISINDEX ISINDEX}, {@link #MENU MENU}, {@link #NOFRAMES NOFRAMES}, {@link #NOSCRIPT NOSCRIPT},
199      * {@link #OL OL}, {@link #P P}, {@link #PRE PRE}, {@link #TABLE TABLE}, {@link #UL UL}
200      * <p>
201      * This set is defined in the <a target="_blank" HREF="http://www.w3.org/TR/html401/sgml/loosedtd.html">HTML 4.01 Transitional DTD</a>,
202      * but more detailed information can be found in the
203      * <a target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#h-7.5.3">HTML 4.01 specification section 7.5.3 - Block-level and inline elements</a>
204      * and the <a target="_blank" HREF="http://www.w3.org/TR/REC-CSS2/visuren.html#q5">CSS2 specification section 9.2.1 - Block-level elements and block boxes</a>.
205      * <p>
206      * The CSS2 <a target="_blank" HREF="http://www.w3.org/TR/REC-CSS2/visuren.html#display-prop">display</a> property can be used
207      * to override the normal box type of an element.
208      *
209      * @return a set containing the {@linkplain Element#getName() names} of all the <a target="_blank" HREF="http://www.w3.org/TR/REC-CSS2/visuren.html#q5">block-level elements</a>.
210      * @see #getInlineLevelElementNames()
211      */

212     public static Set getBlockLevelElementNames() {
213         return BLOCK;
214     }
215
216     /**
217      * Returns a set containing the {@linkplain Element#getName() names} of all the
218      * <a target="_blank" HREF="http://www.w3.org/TR/REC-CSS2/visuren.html#q7">inline-level elements</a>.
219      * <p>
220      * The element names contained in this set are:<br />
221      * {@link #A A}, {@link #ABBR ABBR}, {@link #ACRONYM ACRONYM}, {@link #APPLET APPLET}, {@link #B B}, {@link #BASEFONT BASEFONT},
222      * {@link #BDO BDO}, {@link #BIG BIG}, {@link #BR BR}, {@link #BUTTON BUTTON}, {@link #CITE CITE}, {@link #CODE CODE},
223      * {@link #DEL DEL}, {@link #DFN DFN}, {@link #EM EM}, {@link #FONT FONT}, {@link #I I}, {@link #IFRAME IFRAME}, {@link #IMG IMG},
224      * {@link #INPUT INPUT}, {@link #INS INS}, {@link #KBD KBD}, {@link #LABEL LABEL}, {@link #MAP MAP}, {@link #OBJECT OBJECT},
225      * {@link #Q Q}, {@link #S S}, {@link #SAMP SAMP}, {@link #SCRIPT SCRIPT}, {@link #SELECT SELECT}, {@link #SMALL SMALL},
226      * {@link #SPAN SPAN}, {@link #STRIKE STRIKE}, {@link #STRONG STRONG}, {@link #SUB SUB}, {@link #SUP SUP}, {@link #TEXTAREA TEXTAREA},
227      * {@link #TT TT}, {@link #U U}, {@link #VAR VAR}
228      * <p>
229      * This set is defined in the <a target="_blank" HREF="http://www.w3.org/TR/html401/sgml/loosedtd.html">HTML 4.01 Transitional DTD</a>,
230      * but more detailed information can be found in the
231      * <a target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#h-7.5.3">HTML 4.01 specification section 7.5.3 - Block-level and inline elements</a>
232      * and the <a target="_blank" HREF="http://www.w3.org/TR/REC-CSS2/visuren.html#q7">CSS2 specification section 9.2.2 - Inline-level elements and inline boxes</a>.
233      * <p>
234      * The CSS2 <a target="_blank" HREF="http://www.w3.org/TR/REC-CSS2/visuren.html#display-prop">display</a> property can be used
235      * to override the normal box type of an element.
236      * <p>
237      * The <a target="_blank" HREF="http://www.w3.org/TR/html401/struct/global.html#h-7.2">HTML Document Type Definitions</a>
238      * forbid the presence of {@linkplain #getBlockLevelElementNames() block-level elements} inside inline-level elements,
239      * but it is tolerated by all popular browsers in various situations, even in XHTML documents.
240      * The most notorious example of this is the common inclusion of block-level elements inside {@link HTMLElementName#FONT FONT} elements.
241      *
242      * @return a set containing the {@linkplain Element#getName() names} of all the <a target="_blank" HREF="http://www.w3.org/TR/REC-CSS2/visuren.html#q7">inline-level elements</a>.
243      * @see #getBlockLevelElementNames()
244      */

245     public static Set getInlineLevelElementNames() {
246         return INLINE;
247     }
248
249     /**
250      * Returns a set containing the {@linkplain Element#getName() names} of all
251      * <a target="_blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">deprecated</a> elements in HTML 4.01.
252      * @return a set containing the {@linkplain Element#getName() names} of all <a target="_blank" HREF="http://www.w3.org/TR/html401/conform.html#deprecated">deprecated</a> elements in HTML 4.01.
253      */

254     public static Set getDeprecatedElementNames() {
255         return DEPRECATED;
256     }
257
258     /**
259      * Returns a set containing the {@linkplain Element#getName() names} of all of the <a HREF="#HTMLElement">HTML elements</a>
260      * for which the {@linkplain Element#getEndTag() end tag} is <i>forbidden</i>.
261      * <p>
262      * See the <a HREF="Element.html#ParsingRulesHTMLEndTagForbidden">element parsing rules for HTML elements with forbidden end tags</a>
263      * for more information.
264      * <p>
265      * The <a target="_blank" HREF="http://www.w3.org/TR/html401/index/elements.html">index of elements in the HTML 4.01 specification</a>
266      * includes the letter '<b>F</b>' in the "<b>End Tag</b>" column for elements whose end tag is forbidden.
267      *
268      * @return a set containing the {@linkplain Element#getName() names} of all of the <a HREF="#HTMLElement">HTML elements</a> for which the {@linkplain Element#getEndTag() end tag} is <i>forbidden</i>.
269      * @see #getEndTagOptionalElementNames()
270      * @see #getEndTagRequiredElementNames()
271      */

272     public static Set getEndTagForbiddenElementNames() {
273         return END_TAG_FORBIDDEN_SET;
274     }
275
276     /**
277      * Returns a set containing the {@linkplain Element#getName() names} of all of the <a HREF="#HTMLElement">HTML elements</a>
278      * for which the {@linkplain Element#getEndTag() end tag} is <i>optional</i>.
279      * <p>
280      * Elements with these names may be <a HREF="Element.html#ImplicitlyTerminated">implicitly terminated</a> by a subsequent
281      * {@linkplain #getTerminatingStartTagNames(String) terminating start tag} or
282      * {@linkplain #getTerminatingEndTagNames(String) terminating end tag}.
283      * A list of the these terminating tags, and the names of {@linkplain #getNonterminatingElementNames(String) non-terminating elements}
284      * that can be nested within the element, can be found in the documentation of each relevant element in the {@link HTMLElementName} class.
285      * <p>
286      * See the <a HREF="Element.html#ParsingRulesHTMLEndTagOptional">element parsing rules for HTML elements with optional end tags</a>
287      * for more information.
288      * <p>
289      * The <a target="_blank" HREF="http://www.w3.org/TR/html401/index/elements.html">index of elements in the HTML 4.01 specification</a>
290      * includes the letter '<b>O</b>' in the "<b>End Tag</b>" column for elements whose end tag is optional.
291      *
292      * @return a set containing the {@linkplain Element#getName() names} of all of the <a HREF="#HTMLElement">HTML elements</a> for which the {@linkplain Element#getEndTag() end tag} is <i>optional</i>.
293      * @see #getEndTagForbiddenElementNames()
294      * @see #getEndTagRequiredElementNames()
295      */

296     public static Set getEndTagOptionalElementNames() {
297         return END_TAG_OPTIONAL_SET;
298     }
299
300     /**
301      * Returns a set containing the {@linkplain Element#getName() names} of all of the <a HREF="#HTMLElement">HTML elements</a>
302      * for which the {@linkplain Element#getEndTag() end tag} is <i>required</i>.
303      * <p>
304      * See the <a HREF="Element.html#ParsingRulesHTMLEndTagRequired">element parsing rules for HTML elements with required end tags</a>
305      * for more information.
306      * <p>
307      * The <a target="_blank" HREF="http://www.w3.org/TR/html401/index/elements.html">index of elements in the HTML 4.01 specification</a>
308      * leaves the "<b>End Tag</b>" column blank for elements whose end tag is required.
309      *
310      * @return a set containing the {@linkplain Element#getName() names} of all of the <a HREF="#HTMLElement">HTML elements</a> for which the {@linkplain Element#getEndTag() end tag} is <i>required</i>.
311      * @see #getEndTagForbiddenElementNames()
312      * @see #getEndTagOptionalElementNames()
313      */

314     public static Set getEndTagRequiredElementNames() {
315         return END_TAG_REQUIRED_SET;
316     }
317
318     /**
319      * Returns a set containing the {@linkplain Element#getName() names} of all of the <a HREF="#HTMLElement">HTML elements</a>
320      * for which the {@linkplain Element#getStartTag() start tag} is optional.
321      * <p>
322      * Elements with optional start tags must be present in the <a target="_blank" HREF="http://www.w3.org/DOM/">document object model</a> (DOM)
323      * in certain locations, either forming part of the structure of the HTML document as a whole
324      * (e.g. the {@link HTMLElementName#HTML HTML}, {@link HTMLElementName#HEAD HEAD}, and {@link HTMLElementName#BODY BODY} elements),
325      * or forming part of the structure of a {@link HTMLElementName#TABLE TABLE} element (e.g. the {@link HTMLElementName#TBODY TBODY} element).
326      * The location of an <a target="_blank" HREF="http://www.w3.org/TR/html401/intro/sgmltut.html#idx-element-9">omitted</a> start tag
327      * in the document's object model can be inferred from the surrounding elements.
328      * <p>
329      * This library does not use this property in any way when parsing documents, and does not construct a document object model from the
330      * source, so no implied element is created where an optional start tag is omitted.
331      * <p>
332      * When the start tag has been omitted in the document text, the corresponding end tag should also be omitted.
333      * <p>
334      * The <a target="_blank" HREF="http://www.w3.org/TR/html401/index/elements.html">index of elements in the HTML 4.01 specification</a>
335      * includes the letter '<b>O</b>' in the "<b>Start Tag</b>" column for elements whose start tag is optional.
336      *
337      * @return a set containing the {@linkplain Element#getName() names} of all of the <a HREF="#HTMLElement">HTML elements</a> for which the {@linkplain Element#getStartTag() start tag} is optional.
338      */

339     public static Set getStartTagOptionalElementNames() {
340         return START_TAG_OPTIONAL_SET;
341     }
342
343     /**
344      * Returns the {@linkplain StartTag#getName() names} of start tags that <a HREF="#ImplicitlyTerminated">implicitly terminate</a>
345      * an <a HREF="#HTMLElement">HTML element</a> with the specified name.
346      * <p>
347      * This method is only relevant to <a HREF="#HTMLElement">HTML elements</a> for which the
348      * {@linkplain #getEndTagOptionalElementNames() end tag is optional}.
349      * It returns <code>null</code> if
350      * <br />{@link #getEndTagOptionalElementNames()}<code>.contains(endTagOptionalElementName.toLowerCase())==null</code>.
351      *
352      * @param endTagOptionalElementName the {@linkplain Element#getName() name} of an element for which the {@linkplain #getEndTagOptionalElementNames() end tag is optional}.
353      * @return the {@linkplain StartTag#getName() names} of start tags that <a HREF="Element.html#ImplicitlyTerminated">implicitly terminate</a> an <a HREF="#HTMLElement">HTML element</a> with the specified name, or <code>null</code> if the name does not identify an element for which the {@linkplain #getEndTagOptionalElementNames() end tag is optional}.
354      * @see #getTerminatingEndTagNames(String endTagOptionalElementName)
355      * @see #getNonterminatingElementNames(String endTagOptionalElementName)
356      */

357     public static Set getTerminatingStartTagNames(final String JavaDoc endTagOptionalElementName) {
358         final HTMLElementTerminatingTagNameSets terminatingTagNameSets=getTerminatingTagNameSets(endTagOptionalElementName);
359         if (terminatingTagNameSets==null) return null;
360         return terminatingTagNameSets.TerminatingStartTagNameSet;
361     }
362
363     /**
364      * Returns the {@linkplain EndTag#getName() names} of end tags that <a HREF="#ImplicitlyTerminated">implicitly terminate</a>
365      * an <a HREF="#HTMLElement">HTML element</a> with the specified name.
366      * <p>
367      * This method is only relevant to <a HREF="#HTMLElement">HTML elements</a> for which the
368      * {@linkplain #getEndTagOptionalElementNames() end tag is optional}.
369      * It returns <code>null</code> if
370      * <br />{@link #getEndTagOptionalElementNames()}<code>.contains(endTagOptionalElementName.toLowerCase())==null</code>.
371      * <p>
372      * Note that removing the tag name matching the specified element has no effect on the behaviour of the parser,
373      * as it is always assumed that a start tag is terminated by an end tag with a matching name.
374      *
375      * @param endTagOptionalElementName the {@linkplain Element#getName() name} of an element for which the {@linkplain #getEndTagOptionalElementNames() end tag is optional}.
376      * @return the {@linkplain StartTag#getName() names} of end tags that <a HREF="Element.html#ImplicitlyTerminated">implicitly terminate</a> an <a HREF="#HTMLElement">HTML element</a> with the specified name, or <code>null</code> if the name does not identify an element for which the {@linkplain #getEndTagOptionalElementNames() end tag is optional}.
377      * @see #getTerminatingStartTagNames(String endTagOptionalElementName)
378      * @see #getNonterminatingElementNames(String endTagOptionalElementName)
379      */

380     public static Set getTerminatingEndTagNames(final String JavaDoc endTagOptionalElementName) {
381         final HTMLElementTerminatingTagNameSets terminatingTagNameSets=getTerminatingTagNameSets(endTagOptionalElementName);
382         if (terminatingTagNameSets==null) return null;
383         return terminatingTagNameSets.TerminatingEndTagNameSet;
384     }
385
386     /**
387      * Returns the {@linkplain Element#getName() names} of elements that do NOT <a HREF="#ImplicitlyTerminated">implicitly terminate</a>
388      * an <a HREF="#HTMLElement">HTML element</a> with the specified name.
389      * Neither can any tag nested inside any of these elements <a HREF="#ImplicitlyTerminated">implicitly terminate</a> the specified element,
390      * even if it is listed as one of the {@linkplain #getTerminatingStartTagNames(String) terminating start tags} or
391      * {@linkplain #getTerminatingEndTagNames(String) terminating end tags}.
392      * <p>
393      * This method is only relevant to <a HREF="#HTMLElement">HTML elements</a> for which the
394      * {@linkplain #getEndTagOptionalElementNames() end tag is optional}.
395      * It returns <code>null</code> if
396      * <br />{@link #getEndTagOptionalElementNames()}<code>.contains(endTagOptionalElementName.toLowerCase())==null</code>.
397      *
398      * @param endTagOptionalElementName the {@linkplain Element#getName() name} of an element for which the {@linkplain #getEndTagOptionalElementNames() end tag is optional}.
399      * @return the {@linkplain Element#getName() names} of elements that do NOT <a HREF="#ImplicitlyTerminated">implicitly terminate</a> an <a HREF="#HTMLElement">HTML element</a> with the specified name, or <code>null</code> if the name does not identify an element for which the {@linkplain #getEndTagOptionalElementNames() end tag is optional}.
400      * @see #getTerminatingStartTagNames(String endTagOptionalElementName)
401      * @see #getTerminatingEndTagNames(String endTagOptionalElementName)
402      */

403     public static Set getNonterminatingElementNames(final String JavaDoc endTagOptionalElementName) {
404         final HTMLElementTerminatingTagNameSets terminatingTagNameSets=getTerminatingTagNameSets(endTagOptionalElementName);
405         if (terminatingTagNameSets==null) return null;
406         return terminatingTagNameSets.NonterminatingElementNameSet;
407     }
408
409     /**
410      * Returns a set containing the {@linkplain Element#getName() names} of all of the <a HREF="#HTMLElement">HTML elements</a>
411      * which should never contain elements of the same name, either as direct or indirect descendants.
412      *
413      * @return a set containing the {@linkplain Element#getName() names} of all of the <a HREF="#HTMLElement">HTML elements</a> which should never contain elements of the same name.
414      */

415     public static Set getNestingForbiddenElementNames() {
416         return NESTING_FORBIDDEN_SET;
417     }
418
419     static final String JavaDoc getConstantElementName(final String JavaDoc elementName) {
420         final String JavaDoc elementNameConstant=(String JavaDoc)CONSTANT_NAME_MAP.get(elementName);
421         return elementNameConstant!=null ? elementNameConstant : elementName;
422     }
423
424     static final boolean isClosingSlashIgnored(final String JavaDoc elementName) {
425         return CLOSING_SLASH_IGNORED_SET.contains(elementName);
426     }
427
428     static final HTMLElementTerminatingTagNameSets getTerminatingTagNameSets(final String JavaDoc endTagOptionalElementName) {
429         return (HTMLElementTerminatingTagNameSets)TERMINATING_TAG_NAME_SETS_MAP.get(endTagOptionalElementName);
430     }
431
432     private static HashMap buildTerminatingTagNameSetsMap() {
433         // HTML is included in the NonterminatingElementNameSet of BODY and HTML in case the source contains (illegaly) nested HTML documents
434
final HashMap map=new HashMap(20,1.0F); // 15 entries in total
435
map.put(BODY,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(), new HTMLElementNameSet(HTML).union(BODY), new HTMLElementNameSet(HTML)));
436         map.put(COLGROUP,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(_THEAD_TBODY_TFOOT_TR).union(COLGROUP), new HTMLElementNameSet(TABLE).union(COLGROUP), new HTMLElementNameSet(TABLE)));
437         map.put(DD,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(_DD_DT), new HTMLElementNameSet(DL).union(DD), new HTMLElementNameSet(DL)));
438         map.put(DT,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(_DD_DT), new HTMLElementNameSet(DL).union(DT), new HTMLElementNameSet(DL)));
439         map.put(HEAD,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(BODY).union(FRAMESET), new HTMLElementNameSet(HTML).union(HEAD), new HTMLElementNameSet()));
440         map.put(HTML,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(), new HTMLElementNameSet(HTML), new HTMLElementNameSet(HTML)));
441         map.put(LI,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(LI), new HTMLElementNameSet(_UL_OL).union(LI), new HTMLElementNameSet(_UL_OL)));
442         map.put(OPTION,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(OPTION).union(OPTGROUP), new HTMLElementNameSet(SELECT).union(OPTION), new HTMLElementNameSet()));
443         map.put(P,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(BLOCK).union(_DD_DT).union(TH).union(TD).union(LI), new HTMLElementNameSet(BLOCK).union(_DD_DT).union(BODY).union(HTML).union(_THEAD_TBODY_TFOOT_TR_TD_TH).union(CAPTION).union(LEGEND), new HTMLElementNameSet()));
444         map.put(TBODY,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(TBODY).union(TFOOT).union(THEAD), new HTMLElementNameSet(TABLE).union(TBODY), new HTMLElementNameSet(TABLE)));
445         map.put(TD,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(_THEAD_TBODY_TFOOT_TR_TD_TH), new HTMLElementNameSet(_THEAD_TBODY_TFOOT_TR).union(TABLE).union(TD), new HTMLElementNameSet(TABLE)));
446         map.put(TFOOT,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(TBODY).union(TFOOT).union(THEAD), new HTMLElementNameSet(TABLE).union(TFOOT), new HTMLElementNameSet(TABLE)));
447         map.put(TH,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(_THEAD_TBODY_TFOOT_TR_TD_TH), new HTMLElementNameSet(_THEAD_TBODY_TFOOT_TR).union(TABLE).union(TH), new HTMLElementNameSet(TABLE)));
448         map.put(THEAD,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(TBODY).union(TFOOT).union(THEAD), new HTMLElementNameSet(TABLE).union(THEAD), new HTMLElementNameSet(TABLE)));
449         map.put(TR,new HTMLElementTerminatingTagNameSets(new HTMLElementNameSet(_THEAD_TBODY_TFOOT_TR), new HTMLElementNameSet(_THEAD_TBODY_TFOOT_TR).union(TABLE), new HTMLElementNameSet(TABLE)));
450         return map;
451     }
452     
453     private static HashMap buildTagMap() {
454         final HashMap map=new HashMap(132,1.0F); // 99 tags total
455
for (final Iterator i=ALL.iterator(); i.hasNext();) {
456             final String JavaDoc tagName=(String JavaDoc)i.next();
457             map.put(tagName,tagName);
458         }
459         map.put(StartTagTypeMarkupDeclaration.ELEMENT,StartTagTypeMarkupDeclaration.ELEMENT);
460         map.put(StartTagTypeMarkupDeclaration.ATTLIST,StartTagTypeMarkupDeclaration.ATTLIST);
461         map.put(StartTagTypeMarkupDeclaration.ENTITY,StartTagTypeMarkupDeclaration.ENTITY);
462         map.put(StartTagTypeMarkupDeclaration.NOTATION,StartTagTypeMarkupDeclaration.NOTATION);
463         // The following are only required for complete backward compatability with versions prior to 2.0
464
map.put(StartTagType.COMMENT.getNamePrefixForTagConstant(),StartTagType.COMMENT.getNamePrefixForTagConstant());
465         map.put(StartTagType.XML_PROCESSING_INSTRUCTION.getNamePrefixForTagConstant(),StartTagType.XML_PROCESSING_INSTRUCTION.getNamePrefixForTagConstant());
466         map.put(StartTagType.XML_DECLARATION.getNamePrefixForTagConstant(),StartTagType.XML_DECLARATION.getNamePrefixForTagConstant());
467         map.put(StartTagType.DOCTYPE_DECLARATION.getNamePrefixForTagConstant(),StartTagType.DOCTYPE_DECLARATION.getNamePrefixForTagConstant());
468         map.put(PHPTagTypes.PHP_STANDARD.getNamePrefixForTagConstant(),PHPTagTypes.PHP_STANDARD.getNamePrefixForTagConstant());
469         map.put(StartTagType.SERVER_COMMON.getNamePrefixForTagConstant(),StartTagType.SERVER_COMMON.getNamePrefixForTagConstant());
470         map.put(MasonTagTypes.MASON_COMPONENT_CALL.getNamePrefixForTagConstant(),MasonTagTypes.MASON_COMPONENT_CALL.getNamePrefixForTagConstant());
471         map.put(MasonTagTypes.MASON_COMPONENT_CALLED_WITH_CONTENT.getNamePrefixForTagConstant(),MasonTagTypes.MASON_COMPONENT_CALLED_WITH_CONTENT.getNamePrefixForTagConstant());
472         return map;
473     }
474 }
475
Popular Tags