HTML: The Definitive Guide

Previous Appendix A
HTML Grammar
Next
 

A.2 The Grammar

The grammar is a composite of the HTML 2.0 standard tags and special extensions to the language as enabled by the latest versions of NCSA Mosaic, Netscape Communication's Netscape Navigator, and Microsoft's Internet Explorer.

The rules are in alphabetical order. The starting rule for an entire document is named html_document.

a_tag

::=

<a>

   

{a_content }0

   

</a>

a_content

::=

heading

 

|

text

address_tag

::=

<address>

   

{address_content }0

   

</address>

address_content

::=

p_tag

 

|

text

applet_content

::=

{<param>}0

   

body_content

applet_tag

::=

<applet>

   

applet_content

   

</applet>

a_content may not contain a_tags; you may not nest <a> tags within other <a> tags.

b_tag

::=

<b> text </b>

basefont_tag

::=

<basefont>

   

body_content

   

</basefont>

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

 

|

heading

 

|

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

::=

cite_tag

 

|

code_tag

 

|

dfn_tag

 

|

em_tag

 

|

kbd_tag

 

|

samp_tag

 

|

strong_tag

 

|

var_tag

dd_tag

::=

<dd>

   

flow

   

</dd>

dfn_tag

::=

<dfn> text </dfn>

dir_tag

::=

<dir>

   

{ li_tag }

   

</dir>

div_tag

::=

<div>

   

body_content

   

</div>

dl_content

::=

dt_tag dd_tag

The li_tag within the dir_tag may not contain any element found in a block.

dl_tag

::=

<dl>

   

{dl_content }

   

</dl>

dt_tag

::=

<dt>

   

text

   

</dt>

em_tag

::=

<em> text </em>

flow

::=

{flow_content }0

flow_content

::=

block

 

|

text

font_tag

::=

<font> style_text </font>

form_content

::=

<input>

 

|

<keygen>

 

|

body_content

 

|

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>

form_content may not contain form_tags; you may not nest one <form> within another <form>.
 

|

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>

kbd_tag

::=

<kbd> text </kbd>

layer_tag

::=

<layer>

   

body_content

   

</layer>

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

::=

<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>

option_tag

::=

<option>

   

plain_text

   

</option>

p_tag

::=

<p>

   

text

   

</p>

physical_style

::=

b_tag

 

|

big_tag

 

|

blink_tag

 

|

font_tag

 

|

i_tag

 

|

s_tag

 

|

small_tag

 

|

span_tag

The li_tag within the menu_tag may not contain any element found in a block.
 

|

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>

s_tag

::=

<s> text </s>

samp_tag

::=

<samp> text </samp>

script_tag

::=

<script> plain_text </script>

select_tag

::=

<select>

   

{option_tag }

   

</select>

server_tag

::=

<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

A script_tag may be placed anywhere within an HTML document, without regard to syntactic rules.A server_tag may be placed anywhere within an HTML document, without regard to syntactic rules.

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

 

|

plain_text

 

|

physical_style

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>


Previous Home Next
Grammatical Conventions Book Index HTML Tag Quick Reference

HTML: The Definitive Guide CGI Programming JavaScript: The Definitive Guide Programming Perl WebMaster in a Nutshell