A.2 The Grammar
The
grammar is a composite of the HTML 4.01 and XHTML 1.0 standard tags
and special extensions to the language as supported by the latest
versions of Netscape Navigator and Microsoft Internet Explorer.
The rules are in alphabetical order. The starting rule for an entire
document is named html_document.
a_content[A] | ::= | heading |
| | text | |
a_tag | ::= | <a> |
{a_content }0 | ||
</a> | ||
abbr_tag | ::= | <abbr> text </abbr> |
acronym_tag | ::= | <acronym> text </acronym> |
address_content | ::= | p_tag |
| | text | |
address_tag | ::= | <address> |
{address_content }0 | ||
</address> | ||
applet_content | ::= | {<param>}0 |
body_content | ||
applet_tag | ::= | <applet> applet_content </applet> |
b_tag | ::= | <b> text </b> |
basefont_tag | ::= | <basefont> body_content </basefont> |
bdo_tag | ::= | <bdo> text </bdo> |
big_tag | ::= | <big> text </big> |
blink_tag | ::= | <blink> text </blink> |
block | ::= | {block_content }0 |
block_content | ::= | <isindex> |
| | basefont_tag | |
| | blockquote_tag | |
| | center_tag | |
| | dir_tag | |
| | div_tag | |
| | dl_tag | |
| | form_tag | |
| | listing_tag | |
| | menu_tag | |
| | multicol_tag | |
| | nobr_tag | |
| | ol_tag | |
| | p_tag | |
| | pre_tag | |
| | table_tag | |
| | ul_tag | |
| | xmp_tag | |
blockquote_tag | ::= | <blockquote> body_content </blockquote> |
body_content | ::= | <bgsound> |
| | <hr> | |
| | address_tag | |
| | block | |
| | del_tag | |
| | heading | |
| | ins_tag | |
| | layer_tag | |
| | map_tag | |
| | marquee_tag | |
| | text | |
body_tag | ::= | <body> |
{body_content }0 | ||
</body> | ||
caption_tag | ::= | <caption> body_content </caption> |
center_tag | ::= | <center> body_content </center> |
cite_tag | ::= | <cite> text </cite> |
code_tag | ::= | <code> text </code> |
colgroup_content | ::= | {<col>}0 |
colgroup_tag | ::= | <colgroup> |
colgroup_content | ||
content_style | ::= | abbr_tag |
| | acronym_tag | |
| | cite_tag | |
| | code_tag | |
| | dfn_tag | |
| | em_tag | |
| | kbd_tag | |
| | q_tag | |
| | strong_tag | |
| | var_tag | |
dd_tag | ::= | <dd> flow </dd> |
del_tag | ::= | <del> flow </del> |
dfn_tag | ::= | <dfn> text </dfn> |
dir_tag[B] | ::= | <dir> |
{ li_tag } | ||
</dir> | ||
div_tag | ::= | <div> body_content </div> |
dl_content | ::= | dt_tag dd_tag |
dl_tag | ::= | <dl> |
{dl_content } | ||
</dl> | ||
dt_tag | ::= | <dt> |
text | ||
</dt> | ||
em_tag | ::= | <em> text </em> |
fieldset_tag | ::= | <fieldset> |
[ legend_tag ] | ||
{ form_content }0 | ||
</fieldset> | ||
flow | ::= | {flow_content }0 |
flow_content | ::= | block |
| | text | |
font_tag | ::= | <font> style_text </font> |
form_content[C] | ::= | <input> |
| | <keygen> | |
| | body_content | |
| | fieldset_tag | |
| | label_tag | |
| | select_tag | |
| | textarea_tag | |
form_tag | ::= | <form> |
{form_content }0 | ||
</form> | ||
frameset_content | ::= | <frame> |
| | noframes_tag | |
frameset_tag | ::= | <frameset> |
{frameset_content }0 | ||
</frameset> | ||
h1_tag | ::= | <h1> text </h1> |
h2_tag | ::= | <h2> text </h2> |
h3_tag | ::= | <h3> text </h3> |
h4_tag | ::= | <h4> text </h4> |
h5_tag | ::= | <h5> text </h5> |
h6_tag | ::= | <h6> text </h6> |
head_content | ::= | <base> |
| | <isindex> | |
| | <link> | |
| | <meta> | |
| | <nextid> | |
| | style_tag | |
| | title_tag | |
head_tag | ::= | <head> |
{head_content }0 | ||
</head> | ||
heading | ::= | h1_tag |
| | h2_tag | |
| | h3_tag | |
| | h4_tag | |
| | h5_tag | |
| | h6_tag | |
html_content | ::= | head_tag body_tag |
| | head_tag frameset_tag | |
html_document | ::= | html_tag |
html_tag | ::= | <html> html_content </html> |
i_tag | ::= | <i> text </i> |
ilayer_tag | ::= | <ilayer> body_content </ilayer> |
ins_tag | ::= | <ins> flow </ins> |
kbd_tag | ::= | <kbd> text </kbd> |
label_content[D] | ::= | <input> |
| | body_content | |
| | select_tag | |
| | textarea_tag | |
label_tag | ::= | <label> |
{label_content }0 | ||
</label> | ||
layer_tag | ::= | <layer> body_content </layer> |
legend_tag | ::= | <legend> text </legend> |
li_tag | ::= | <li> flow </li> |
listing_tag | ::= | <listing> literal_text </listing> |
map_content | ::= | {<area>}0 |
map_tag | ::= | <map> map_content </map> |
marquee_tag | ::= | <marquee> style_text </marquee> |
menu_tag[E] | ::= | <menu> |
{li_tag }0 | ||
</menu> | ||
multicol_tag | ::= | <multicol> body_content </multicol> |
nobr_tag | ::= | <nobr> text </nobr> |
noembed_tag | ::= | <noembed> text </noembed> |
noframes_tag | ::= | <noframes> |
{body_content }0 | ||
</noframes> | ||
noscript_tag | ::= | <noscript> text </noscript> |
object_content | ::= | {<param>}0 |
body_content | ||
object_tag | ::= | <object> object_content </object> |
ol_tag | ::= | <ol> |
{li_tag } | ||
</ol> | ||
optgroup_tag | ::= | <optgroup> |
{option_tag }0 | ||
</optgroup> | ||
option_tag | ::= | <option> plain_text </option> |
p_tag | ::= | <p> text </p> |
physical_style | ::= | b_tag |
| | bdo_tag | |
| | big_tag | |
| | blink_tag | |
| | font_tag | |
| | i_tag | |
| | s_tag | |
| | small_tag | |
| | span_tag | |
| | strike_tag | |
| | sub_tag | |
| | sup_tag | |
| | tt_tag | |
| | u_tag | |
pre_content | ::= | <br> |
| | <hr> | |
| | a_tag | |
| | style_text | |
pre_tag | ::= | <pre> |
{pre_content }0 | ||
</pre> | ||
q_tag | ::= | <q> text </q> |
s_tag | ::= | <s> text </s> |
samp_tag | ::= | <samp> text </samp> |
script_tag[F] | ::= | <script> plain_text </script> |
select_content | ::= | optgroup_tag |
| | option_tag | |
select_tag | ::= | <select> |
{select_content}0 | ||
</select> | ||
server_tag [G] | ::= | <server> plain_text </server> |
small_tag | ::= | <small> text </small> |
span_tag | ::= | <span> text </span> |
strike_tag | ::= | <strike> text </strike> |
strong_tag | ::= | <strong> text </strong> |
style_tag | ::= | <style> plain_text </style> |
sub_tag | ::= | <sub> text </sub> |
sup_tag | ::= | <sup> text </sup> |
table_cell | ::= | td_tag |
| | th_tag | |
table_content | ::= | <tbody> |
| | <tfoot> | |
| | <thead> | |
| | tr_tag | |
table_tag | ::= | <table> |
[caption_tag ] | ||
{colgroup_tag }0 | ||
{table_content }0 | ||
</table> | ||
td_tag | ::= | <td> body_content </td> |
text | ::= | {text_content }0 |
text_content | ::= | <br> |
| | <embed> | |
| | <iframe> | |
| | <img> | |
| | <spacer> | |
| | <wbr> | |
| | a_tag | |
| | applet_tag | |
| | content_style | |
| | ilayer_tag | |
| | noembed_tag | |
| | noscript_tag | |
| | object_tag | |
| | physical_style | |
| | plain_text | |
textarea_tag | ::= | <textarea> plain_text </textarea> |
th_tag | ::= | <th> body_content </th> |
title_tag | ::= | <title> plain_text </title> |
tr_tag | ::= | <tr> |
{table_cell }0 | ||
</tr> | ||
tt_tag | ::= | <tt> text </tt> |
u_tag | ::= | <u> text </u> |
ul_tag | ::= | <ul> |
{li_tag } | ||
</ul> | ||
var_tag | ::= | <var> text </var> |
xmp_tag | ::= | <xmp> literal_text </xmp> |
[B] * The li_tag within the
dir_tag may not contain any element found in a
block.
[D] As with the <form> tag, you cannot embed
<form> or <label>
tags within a <label> tag.
[F] A
script_tag may be placed anywhere within an HTML document, without regard to syntactic rules.