#define td_head_misc 	TAG_script, TAG_style, TAG_meta, TAG_link, TAG_object
#define td_heading      TAG_h1, TAG_h2, TAG_h3, TAG_h4, TAG_h5, TAG_h6
#define td_list         TAG_ul, TAG_ol,
#define td_preformatted TAG_pre
#define td_fontstyle	TAG_tt, TAG_i, TAG_b, TAG_big, TAG_small
#define td_fontstyle_pre TAG_tt, TAG_i, TAG_b,
#define td_phrase   TAG_em, TAG_strong, TAG_dfn, TAG_code, TAG_samp, \
                    TAG_kbd, TAG_var, TAG_cite, TAG_abbr, TAG_acronym

#define td_special     TAG_a, TAG_img, TAG_object, TAG_br, TAG_script,\
                       TAG_map, TAG_q, TAG_sub, TAG_sup, TAG_span, TAG_bdo
#define td_special_a   TAG_img, TAG_object, TAG_br, TAG_script,\
                       TAG_map, TAG_q, TAG_sub, TAG_sup, TAG_span, TAG_bdo
#define td_special_pre TAG_br, TAG_script,\
                       TAG_map, TAG_q, TAG_span, TAG_bdo
#define td_formctrl    TAG_input, TAG_select, TAG_textarea, TAG_label,\
	               TAG_button
#define td_formctrl_label	TAG_input, TAG_select, TAG_textarea, TAG_button
#define td_inline   TAG_pcdata, td_fontstyle, td_phrase,\
                    td_special, td_formctrl

#define td_inline_a TAG_pcdata, td_fontstytle, td_phrase,
                    td_special_a, td_formctrl

#define td_inline_pre TAG_pcdata, td_fontstytle_pre, td_phrase,
                      td_special_pre, td_formctrl

#define td_inline_label TAG_pcdata, td_fontstytle_pre, td_phrase,
                        td_special_pre, td_formctrl_label

#define td_inline_button TAG_pcdata, td_fontstytle, td_phrase,
                         td_special_a,

TAGS t_inline[] = { td_inline };
TAGS t_inline_a[] = { td_inline_a };
TAGS t_inline_pre[] = { td_inline_pre };

#define td_block    TAG_p, td_heading, td_list, td_preformatted,\
                    TAG_dl, TAG_div, TD_noscript, TAG_blockquote,\
                    TAG_form, TAG_hr, TAG_table, TAG_fieldset, TAG_address

#define td_block_form TAG_p, td_heading, td_list, td_preformatted,\
                      TAG_dl, TAG_div, TD_noscript, TAG_blockquote,\
                      TAG_hr, TAG_table, TAG_fieldset, TAG_address

#define td_block_button TAG_p, td_heading, td_list, td_preformatted,\
                        TAG_dl, TAG_div, TD_noscript, TAG_blockquote,\
                        TAG_hr, TAG_table, TAG_address

#define td_flow  td_block, td_inline

TAGS t_pcdata[] = { TAG_pcdata };
TAGS t_flow[] = { td_flow };
TAGS t_body_content[] = { td_block, TAG_script, TAG_ins, TAG_del };
TAGS t_map_content[] = { td_block, TAG_area };
TAGS t_object_content[] = { TAG_param, td_flow };
TAGS t_blockquote_content[] = { td_block, TAG_script };
TAGS t_dl_content[] = { TAG_dt, TAG_dd };
TAGS t_list_content[] = { TAG_li };

TAGS t_form_content[] = { td_block_form, TAG_script };
TAGS t_label_content[] = { td_inline_label };
TAGS t_select_content[] = { TAG_optgroup, TAG_option };
TAGS t_optgroup_content[] = { TAG_option };
TAGS t_fieldset_content[] = { TAG_pcdata, TAG_legend, td_flow };
TAGS t_button_content[] = { td_inline_button, td_block_button };

TAGS t_table_content[] = { TAG_caption, TAG_colgroup, TAG_col,
                           TAG_head, TAG_foot, TAG_body };
TAGS t_thead_content[] = { TAG_tr };
TAGS t_colgroup_content[] = { TAG_col };
TAGS t_tr_content[] = { TAG_th, TAG_td };

TAGS t_head_content[] = { TAG_title, TAG_base, td_head_misc };
TAGS t_html_content[] = { TAG_head, TAG_body };

#define CT(name)	t_ ## name, (sizeof(t_ ## name) / sizeof(t_ ## name [0]))
#define EMPTY NULL,0

