summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2014-07-18 13:33:23 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2014-07-18 13:33:23 +0100
commit9aae1b6cc3ec89c96f0cdcc173405eef1d5b1c2c (patch)
treea620d0d2f56db44778157ac7925b2b8fa9899e5b
parentdb5517f4e24d0e7c39a405ce1b363c887196784a (diff)
parentd293e6e7ffdc9224ffba9593f4cc8f73701f2cd5 (diff)
downloadlibdom-9aae1b6cc3ec89c96f0cdcc173405eef1d5b1c2c.tar.gz
libdom-9aae1b6cc3ec89c96f0cdcc173405eef1d5b1c2c.tar.bz2
Merge remote-tracking branch 'origin/rupindersingh/libdom_recovered'
Reviewed-By: Daniel Silverstone <dsilvers@netsurf-browser.org>
-rw-r--r--Makefile38
-rw-r--r--include/dom/dom.h38
-rw-r--r--include/dom/html/html_anchor_element.h87
-rw-r--r--include/dom/html/html_applet_element.h78
-rw-r--r--include/dom/html/html_area_element.h62
-rw-r--r--include/dom/html/html_base_element.h16
-rw-r--r--include/dom/html/html_basefont_element.h27
-rw-r--r--include/dom/html/html_br_element.h16
-rw-r--r--include/dom/html/html_directory_element.h16
-rw-r--r--include/dom/html/html_div_element.h16
-rw-r--r--include/dom/html/html_dlist_element.h16
-rw-r--r--include/dom/html/html_document.h10
-rw-r--r--include/dom/html/html_fieldset_element.h17
-rw-r--r--include/dom/html/html_font_element.h27
-rw-r--r--include/dom/html/html_frame_element.h63
-rw-r--r--include/dom/html/html_frameset_element.h22
-rw-r--r--include/dom/html/html_heading_element.h16
-rw-r--r--include/dom/html/html_iframe_element.h75
-rw-r--r--include/dom/html/html_image_element.h84
-rw-r--r--include/dom/html/html_input_element.h4
-rw-r--r--include/dom/html/html_isindex_element.h6
-rw-r--r--include/dom/html/html_label_element.h26
-rw-r--r--include/dom/html/html_legend_element.h27
-rw-r--r--include/dom/html/html_li_element.h22
-rw-r--r--include/dom/html/html_map_element.h21
-rw-r--r--include/dom/html/html_menu_element.h16
-rw-r--r--include/dom/html/html_mod_element.h22
-rw-r--r--include/dom/html/html_object_element.h121
-rw-r--r--include/dom/html/html_olist_element.h28
-rw-r--r--include/dom/html/html_option_element.h2
-rw-r--r--include/dom/html/html_paragraph_element.h16
-rw-r--r--include/dom/html/html_param_element.h34
-rw-r--r--include/dom/html/html_pre_element.h16
-rw-r--r--include/dom/html/html_quote_element.h16
-rw-r--r--include/dom/html/html_script_element.h52
-rw-r--r--include/dom/html/html_style_element.h13
-rw-r--r--include/dom/html/html_table_element.h123
-rw-r--r--include/dom/html/html_tablecaption_element.h16
-rw-r--r--include/dom/html/html_tablecell_element.h99
-rw-r--r--include/dom/html/html_tablecol_element.h48
-rw-r--r--include/dom/html/html_tablerow_element.h62
-rw-r--r--include/dom/html/html_tablesection_element.h52
-rw-r--r--include/dom/html/html_ulist_element.h22
-rw-r--r--src/html/Makefile29
-rw-r--r--src/html/TODO88
-rw-r--r--src/html/html_anchor_element.c220
-rw-r--r--src/html/html_anchor_element.h45
-rw-r--r--src/html/html_applet_element.c191
-rw-r--r--src/html/html_applet_element.h45
-rw-r--r--src/html/html_area_element.c215
-rw-r--r--src/html/html_area_element.h45
-rw-r--r--src/html/html_base_element.c43
-rw-r--r--src/html/html_basefont_element.c177
-rw-r--r--src/html/html_basefont_element.h45
-rw-r--r--src/html/html_br_element.c155
-rw-r--r--src/html/html_br_element.h45
-rw-r--r--src/html/html_collection.c29
-rw-r--r--src/html/html_directory_element.c140
-rw-r--r--src/html/html_directory_element.h45
-rw-r--r--src/html/html_div_element.c154
-rw-r--r--src/html/html_div_element.h45
-rw-r--r--src/html/html_dlist_element.c140
-rw-r--r--src/html/html_dlist_element.h45
-rw-r--r--src/html/html_document.c384
-rw-r--r--src/html/html_document.h7
-rw-r--r--src/html/html_document_strings.h44
-rw-r--r--src/html/html_fieldset_element.c146
-rw-r--r--src/html/html_fieldset_element.h46
-rw-r--r--src/html/html_font_element.c157
-rw-r--r--src/html/html_font_element.h45
-rw-r--r--src/html/html_form_element.c2
-rw-r--r--src/html/html_frame_element.c280
-rw-r--r--src/html/html_frame_element.h47
-rw-r--r--src/html/html_frameset_element.c229
-rw-r--r--src/html/html_frameset_element.h46
-rw-r--r--src/html/html_heading_element.c156
-rw-r--r--src/html/html_heading_element.h45
-rw-r--r--src/html/html_iframe_element.c262
-rw-r--r--src/html/html_iframe_element.h48
-rw-r--r--src/html/html_image_element.c245
-rw-r--r--src/html/html_image_element.h45
-rw-r--r--src/html/html_input_element.c45
-rw-r--r--src/html/html_input_element.h2
-rw-r--r--src/html/html_isindex_element.c81
-rw-r--r--src/html/html_isindex_element.h4
-rw-r--r--src/html/html_label_element.c187
-rw-r--r--src/html/html_label_element.h47
-rw-r--r--src/html/html_legend_element.c208
-rw-r--r--src/html/html_legend_element.h46
-rw-r--r--src/html/html_li_element.c177
-rw-r--r--src/html/html_li_element.h45
-rw-r--r--src/html/html_map_element.c188
-rw-r--r--src/html/html_map_element.h47
-rw-r--r--src/html/html_menu_element.c140
-rw-r--r--src/html/html_menu_element.h45
-rw-r--r--src/html/html_mod_element.c156
-rw-r--r--src/html/html_mod_element.h45
-rw-r--r--src/html/html_object_element.c259
-rw-r--r--src/html/html_object_element.h49
-rw-r--r--src/html/html_olist_element.c201
-rw-r--r--src/html/html_olist_element.h45
-rw-r--r--src/html/html_option_element.c19
-rw-r--r--src/html/html_options_collection.c4
-rw-r--r--src/html/html_paragraph_element.c154
-rw-r--r--src/html/html_paragraph_element.h45
-rw-r--r--src/html/html_param_element.c155
-rw-r--r--src/html/html_param_element.h45
-rw-r--r--src/html/html_pre_element.c136
-rw-r--r--src/html/html_pre_element.h45
-rw-r--r--src/html/html_quote_element.c154
-rw-r--r--src/html/html_quote_element.h45
-rw-r--r--src/html/html_script_element.c213
-rw-r--r--src/html/html_script_element.h45
-rw-r--r--src/html/html_select_element.c150
-rw-r--r--src/html/html_style_element.c83
-rw-r--r--src/html/html_style_element.h2
-rw-r--r--src/html/html_table_element.c740
-rw-r--r--src/html/html_table_element.h56
-rw-r--r--src/html/html_tablecaption_element.c153
-rw-r--r--src/html/html_tablecaption_element.h45
-rw-r--r--src/html/html_tablecell_element.c306
-rw-r--r--src/html/html_tablecell_element.h47
-rw-r--r--src/html/html_tablecol_element.c181
-rw-r--r--src/html/html_tablecol_element.h45
-rw-r--r--src/html/html_tablerow_element.c368
-rw-r--r--src/html/html_tablerow_element.h46
-rw-r--r--src/html/html_tablesection_element.c279
-rw-r--r--src/html/html_tablesection_element.h47
-rw-r--r--src/html/html_text_area_element.c16
-rw-r--r--src/html/html_ulist_element.c177
-rw-r--r--src/html/html_ulist_element.h45
-rw-r--r--test/DOMTSHandler.pm121
-rw-r--r--test/Makefile3
-rw-r--r--test/dom1-interfaces.xml119
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement01.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement02.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement02.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement03.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement03.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement04.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement04.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement05.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement05.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement06.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement06.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement07.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement07.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement08.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement08.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement09.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement09.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement10.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement10.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement11.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement11.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement12.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement12.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement13.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement13.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAnchorElement14.xml (renamed from test/testcases/tests/level1/html/HTMLAnchorElement14.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement01.xml (renamed from test/testcases/tests/level1/html/HTMLAppletElement01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement02.xml (renamed from test/testcases/tests/level1/html/HTMLAppletElement02.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement03.xml (renamed from test/testcases/tests/level1/html/HTMLAppletElement03.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement04.xml (renamed from test/testcases/tests/level1/html/HTMLAppletElement04.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement05.xml (renamed from test/testcases/tests/level1/html/HTMLAppletElement05.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement06.xml (renamed from test/testcases/tests/level1/html/HTMLAppletElement06.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement07.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLAppletElement07.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement08.xml (renamed from test/testcases/tests/level1/html/HTMLAppletElement08.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement09.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLAppletElement09.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement10.xml (renamed from test/testcases/tests/level1/html/HTMLAppletElement10.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAppletElement11.xml (renamed from test/testcases/tests/level1/html/HTMLAppletElement11.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAreaElement01.xml (renamed from test/testcases/tests/level1/html/HTMLAreaElement01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAreaElement02.xml (renamed from test/testcases/tests/level1/html/HTMLAreaElement02.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAreaElement03.xml (renamed from test/testcases/tests/level1/html/HTMLAreaElement03.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAreaElement04.xml (renamed from test/testcases/tests/level1/html/HTMLAreaElement04.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAreaElement05.xml (renamed from test/testcases/tests/level1/html/HTMLAreaElement05.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAreaElement06.xml (renamed from test/testcases/tests/level1/html/HTMLAreaElement06.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAreaElement07.xml (renamed from test/testcases/tests/level1/html/HTMLAreaElement07.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLAreaElement08.xml (renamed from test/testcases/tests/level1/html/HTMLAreaElement08.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLBRElement01.xml (renamed from test/testcases/tests/level1/html/HTMLBRElement01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLBaseElement01.xml (renamed from test/testcases/tests/level1/html/HTMLBaseElement01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLBaseElement02.xml (renamed from test/testcases/tests/level1/html/HTMLBaseElement02.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLBaseFontElement01.xml (renamed from test/testcases/tests/level1/html/HTMLBaseFontElement01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLBaseFontElement02.xml (renamed from test/testcases/tests/level1/html/HTMLBaseFontElement02.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLBaseFontElement03.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLBaseFontElement03.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection01.xml.notimpl49
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection02.xml.kfail49
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection03.xml.kfail49
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection04.xml (renamed from test/testcases/tests/level1/html/HTMLCollection04.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection05.xml (renamed from test/testcases/tests/level1/html/HTMLCollection05.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection06.xml (renamed from test/testcases/tests/level1/html/HTMLCollection06.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection07.xml (renamed from test/testcases/tests/level1/html/HTMLCollection07.xml.notimpl)2
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection08.xml (renamed from test/testcases/tests/level1/html/HTMLCollection08.xml.notimpl)2
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection09.xml (renamed from test/testcases/tests/level1/html/HTMLCollection09.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection10.xml (renamed from test/testcases/tests/level1/html/HTMLCollection10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection11.xml (renamed from test/testcases/tests/level1/html/HTMLCollection11.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDirectoryElement01.xml (renamed from test/testcases/tests/level1/html/HTMLDirectoryElement01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDivElement01.xml (renamed from test/testcases/tests/level1/html/HTMLDivElement01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDlistElement01.xml (renamed from test/testcases/tests/level1/html/HTMLDlistElement01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument02.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument02.xml)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument03.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument03.xml)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument04.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument04.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument05.xml (renamed from test/testcases/tests/level1/html/HTMLDocument05.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument07.xml (renamed from test/testcases/tests/level1/html/HTMLDocument07.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument08.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument08.xml.notimpl)1
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument09.xml (renamed from test/testcases/tests/level1/html/HTMLDocument09.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument10.xml (renamed from test/testcases/tests/level1/html/HTMLDocument10.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument11.xml (renamed from test/testcases/tests/level1/html/HTMLDocument11.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument12.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument12.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument13.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument13.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument14.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument14.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument15.xml (renamed from test/testcases/tests/level1/html/HTMLDocument15.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument16.xml (renamed from test/testcases/tests/level1/html/HTMLDocument16.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument17.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument17.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument18.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument18.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument19.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument19.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument20.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument20.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLDocument21.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLDocument21.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFieldSetElement01.xml (renamed from test/testcases/tests/level1/html/HTMLFieldSetElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFieldSetElement02.xml (renamed from test/testcases/tests/level1/html/HTMLFieldSetElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFontElement01.xml (renamed from test/testcases/tests/level1/html/HTMLFontElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFontElement02.xml (renamed from test/testcases/tests/level1/html/HTMLFontElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFontElement03.xml (renamed from test/testcases/tests/level1/html/HTMLFontElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement01.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement01.xml.int-broken)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement02.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement02.xml.int-broken)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFrameElement01.xml (renamed from test/testcases/tests/level1/html/HTMLFrameElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFrameElement02.xml (renamed from test/testcases/tests/level1/html/HTMLFrameElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFrameElement03.xml (renamed from test/testcases/tests/level1/html/HTMLFrameElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFrameElement04.xml (renamed from test/testcases/tests/level1/html/HTMLFrameElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFrameElement05.xml (renamed from test/testcases/tests/level1/html/HTMLFrameElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFrameElement06.xml (renamed from test/testcases/tests/level1/html/HTMLFrameElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFrameElement07.xml (renamed from test/testcases/tests/level1/html/HTMLFrameElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFrameElement08.xml (renamed from test/testcases/tests/level1/html/HTMLFrameElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFrameSetElement01.xml (renamed from test/testcases/tests/level1/html/HTMLFrameSetElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFrameSetElement02.xml (renamed from test/testcases/tests/level1/html/HTMLFrameSetElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLHeadingElement01.xml (renamed from test/testcases/tests/level1/html/HTMLHeadingElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLHeadingElement02.xml (renamed from test/testcases/tests/level1/html/HTMLHeadingElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLHeadingElement03.xml (renamed from test/testcases/tests/level1/html/HTMLHeadingElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLHeadingElement04.xml (renamed from test/testcases/tests/level1/html/HTMLHeadingElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLHeadingElement05.xml (renamed from test/testcases/tests/level1/html/HTMLHeadingElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLHeadingElement06.xml (renamed from test/testcases/tests/level1/html/HTMLHeadingElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLIFrameElement01.xml (renamed from test/testcases/tests/level1/html/HTMLIFrameElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLIFrameElement02.xml (renamed from test/testcases/tests/level1/html/HTMLIFrameElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLIFrameElement03.xml (renamed from test/testcases/tests/level1/html/HTMLIFrameElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLIFrameElement04.xml (renamed from test/testcases/tests/level1/html/HTMLIFrameElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLIFrameElement05.xml (renamed from test/testcases/tests/level1/html/HTMLIFrameElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLIFrameElement06.xml (renamed from test/testcases/tests/level1/html/HTMLIFrameElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLIFrameElement07.xml (renamed from test/testcases/tests/level1/html/HTMLIFrameElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLIFrameElement08.xml (renamed from test/testcases/tests/level1/html/HTMLIFrameElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLIFrameElement09.xml (renamed from test/testcases/tests/level1/html/HTMLIFrameElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLIFrameElement10.xml (renamed from test/testcases/tests/level1/html/HTMLIFrameElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLImageElement01.xml (renamed from test/testcases/tests/level1/html/HTMLImageElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLImageElement02.xml (renamed from test/testcases/tests/level1/html/HTMLImageElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLImageElement03.xml (renamed from test/testcases/tests/level1/html/HTMLImageElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLImageElement04.xml (renamed from test/testcases/tests/level1/html/HTMLImageElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLImageElement07.xml (renamed from test/testcases/tests/level1/html/HTMLImageElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLImageElement08.xml (renamed from test/testcases/tests/level1/html/HTMLImageElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLImageElement09.xml (renamed from test/testcases/tests/level1/html/HTMLImageElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLImageElement10.xml (renamed from test/testcases/tests/level1/html/HTMLImageElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLInputElement21.xml (renamed from test/testcases/tests/level1/html/HTMLInputElement21.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLIElement01.xml (renamed from test/testcases/tests/level1/html/HTMLLIElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLIElement02.xml (renamed from test/testcases/tests/level1/html/HTMLLIElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLabelElement01.xml (renamed from test/testcases/tests/level1/html/HTMLLabelElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLabelElement02.xml (renamed from test/testcases/tests/level1/html/HTMLLabelElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLabelElement03.xml (renamed from test/testcases/tests/level1/html/HTMLLabelElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLabelElement04.xml (renamed from test/testcases/tests/level1/html/HTMLLabelElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLegendElement01.xml (renamed from test/testcases/tests/level1/html/HTMLLegendElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLegendElement02.xml (renamed from test/testcases/tests/level1/html/HTMLLegendElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLegendElement03.xml (renamed from test/testcases/tests/level1/html/HTMLLegendElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLegendElement04.xml (renamed from test/testcases/tests/level1/html/HTMLLegendElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLMapElement01.xml.kfail44
-rw-r--r--test/testcases/tests/level1/html/HTMLMapElement02.xml (renamed from test/testcases/tests/level1/html/HTMLMapElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLMenuElement01.xml (renamed from test/testcases/tests/level1/html/HTMLMenuElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLModElement01.xml (renamed from test/testcases/tests/level1/html/HTMLModElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLModElement02.xml (renamed from test/testcases/tests/level1/html/HTMLModElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLModElement03.xml (renamed from test/testcases/tests/level1/html/HTMLModElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLModElement04.xml (renamed from test/testcases/tests/level1/html/HTMLModElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLOListElement01.xml (renamed from test/testcases/tests/level1/html/HTMLOListElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLOListElement02.xml (renamed from test/testcases/tests/level1/html/HTMLOListElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLOListElement03.xml (renamed from test/testcases/tests/level1/html/HTMLOListElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement01.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement02.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement03.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement04.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement05.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement06.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement07.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement08.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement09.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement10.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement12.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement12.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement13.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement13.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement14.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement14.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement15.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement15.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement17.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement17.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement18.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement18.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLObjectElement19.xml (renamed from test/testcases/tests/level1/html/HTMLObjectElement19.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLOptionElement05.xml (renamed from test/testcases/tests/level1/html/HTMLOptionElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLParagraphElement01.xml (renamed from test/testcases/tests/level1/html/HTMLParagraphElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLParamElement01.xml (renamed from test/testcases/tests/level1/html/HTMLParamElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLParamElement02.xml (renamed from test/testcases/tests/level1/html/HTMLParamElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLParamElement03.xml (renamed from test/testcases/tests/level1/html/HTMLParamElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLParamElement04.xml (renamed from test/testcases/tests/level1/html/HTMLParamElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLPreElement01.xml (renamed from test/testcases/tests/level1/html/HTMLPreElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLQuoteElement01.xml (renamed from test/testcases/tests/level1/html/HTMLQuoteElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLQuoteElement02.xml (renamed from test/testcases/tests/level1/html/HTMLQuoteElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLScriptElement01.xml (renamed from test/testcases/tests/level1/html/HTMLScriptElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLScriptElement02.xml (renamed from test/testcases/tests/level1/html/HTMLScriptElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLScriptElement03.xml (renamed from test/testcases/tests/level1/html/HTMLScriptElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLScriptElement04.xml (renamed from test/testcases/tests/level1/html/HTMLScriptElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLScriptElement05.xml (renamed from test/testcases/tests/level1/html/HTMLScriptElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLScriptElement06.xml (renamed from test/testcases/tests/level1/html/HTMLScriptElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLScriptElement07.xml (renamed from test/testcases/tests/level1/html/HTMLScriptElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLSelectElement05.xml (renamed from test/testcases/tests/level1/html/HTMLSelectElement05.xml.int-broken)0
-rw-r--r--test/testcases/tests/level1/html/HTMLSelectElement16.xml (renamed from test/testcases/tests/level1/html/HTMLSelectElement16.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLSelectElement17.xml (renamed from test/testcases/tests/level1/html/HTMLSelectElement17.xml.int-broken)0
-rw-r--r--test/testcases/tests/level1/html/HTMLSelectElement18.xml (renamed from test/testcases/tests/level1/html/HTMLSelectElement18.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLSelectElement19.xml (renamed from test/testcases/tests/level1/html/HTMLSelectElement19.xml.kfail)2
-rw-r--r--test/testcases/tests/level1/html/HTMLStyleElement01.xml (renamed from test/testcases/tests/level1/html/HTMLStyleElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLStyleElement02.xml (renamed from test/testcases/tests/level1/html/HTMLStyleElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLStyleElement03.xml (renamed from test/testcases/tests/level1/html/HTMLStyleElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCaptionElement01.xml (renamed from test/testcases/tests/level1/html/HTMLTableCaptionElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement01.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement02.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement03.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement04.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement05.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement06.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement07.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement08.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement09.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement10.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement11.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement11.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement12.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement12.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement13.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement13.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement14.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement14.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement15.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement15.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement16.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement16.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement17.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement17.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement18.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement18.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement19.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement19.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement20.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement20.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement21.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement21.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement22.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement22.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement23.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement23.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement24.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement24.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement25.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement25.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement26.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement26.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement27.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement27.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement28.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement28.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement29.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement29.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableCellElement30.xml (renamed from test/testcases/tests/level1/html/HTMLTableCellElement30.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement01.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement02.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement03.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement04.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement05.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement06.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement07.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement08.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement09.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement10.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement11.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement11.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableColElement12.xml (renamed from test/testcases/tests/level1/html/HTMLTableColElement12.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement01.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement02.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement03.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement04.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement05.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement06.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement07.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement08.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement09.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement10.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement11.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement11.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement12.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement12.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement13.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement13.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement14.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement14.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement15.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement15.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement16.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement16.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement17.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement17.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement18.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement18.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement19.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement19.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement20.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement20.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement21.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement21.xml.kfail)4
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement22.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement22.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement23.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement23.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement24.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement24.xml.kfail)4
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement25.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement25.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement26.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement26.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement27.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement27.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement28.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement28.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement29.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement29.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement30.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement30.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement31.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement31.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement32.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement32.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement33.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement33.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement01.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement02.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement03.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement04.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement05.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement06.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement07.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement08.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement09.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement10.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement11.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement11.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement12.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement12.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement13.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement13.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement14.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement14.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement01.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement02.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement03.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement04.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement05.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement06.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement07.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement08.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement09.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement10.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement11.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement11.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement12.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement12.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement13.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement13.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement14.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement14.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement15.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement15.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement16.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement16.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement17.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement17.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement18.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement18.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement19.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement19.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement20.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement20.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement21.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement21.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement22.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement22.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement23.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement23.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableSectionElement24.xml (renamed from test/testcases/tests/level1/html/HTMLTableSectionElement24.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLUListElement01.xml (renamed from test/testcases/tests/level1/html/HTMLUListElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLUListElement02.xml (renamed from test/testcases/tests/level1/html/HTMLUListElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/anchor01.xml (renamed from test/testcases/tests/level1/html/anchor01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/anchor02.xml (renamed from test/testcases/tests/level1/html/anchor02.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/anchor03.xml (renamed from test/testcases/tests/level1/html/anchor03.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/anchor04.xml.kfail (renamed from test/testcases/tests/level1/html/anchor04.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/anchor05.xml (renamed from test/testcases/tests/level1/html/anchor05.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/anchor06.xml (renamed from test/testcases/tests/level1/html/anchor06.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/area01.xml (renamed from test/testcases/tests/level1/html/area01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/area02.xml (renamed from test/testcases/tests/level1/html/area02.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/area03.xml (renamed from test/testcases/tests/level1/html/area03.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/area04.xml (renamed from test/testcases/tests/level1/html/area04.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/basefont01.xml (renamed from test/testcases/tests/level1/html/basefont01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/body01.xml (renamed from test/testcases/tests/level1/html/body01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/button01.xml (renamed from test/testcases/tests/level1/html/button01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/button02.xml (renamed from test/testcases/tests/level1/html/button02.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/button03.xml (renamed from test/testcases/tests/level1/html/button03.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/button04.xml (renamed from test/testcases/tests/level1/html/button04.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/button05.xml (renamed from test/testcases/tests/level1/html/button05.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/button06.xml (renamed from test/testcases/tests/level1/html/button06.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/button07.xml (renamed from test/testcases/tests/level1/html/button07.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/button08.xml (renamed from test/testcases/tests/level1/html/button08.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/button09.xml (renamed from test/testcases/tests/level1/html/button09.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/dlist01.xml (renamed from test/testcases/tests/level1/html/dlist01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/doc01.xml (renamed from test/testcases/tests/level1/html/doc01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/files/object.html2
-rw-r--r--test/testcases/tests/level1/html/files/object.xhtml2
-rw-r--r--test/testcases/tests/level1/html/object01.xml (renamed from test/testcases/tests/level1/html/object01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object02.xml (renamed from test/testcases/tests/level1/html/object02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object03.xml (renamed from test/testcases/tests/level1/html/object03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object04.xml (renamed from test/testcases/tests/level1/html/object04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object05.xml (renamed from test/testcases/tests/level1/html/object05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object06.xml (renamed from test/testcases/tests/level1/html/object06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object07.xml (renamed from test/testcases/tests/level1/html/object07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object09.xml (renamed from test/testcases/tests/level1/html/object09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object10.xml (renamed from test/testcases/tests/level1/html/object10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object11.xml (renamed from test/testcases/tests/level1/html/object11.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object12.xml (renamed from test/testcases/tests/level1/html/object12.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object14.xml (renamed from test/testcases/tests/level1/html/object14.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/object15.xml (renamed from test/testcases/tests/level1/html/object15.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table01.xml (renamed from test/testcases/tests/level1/html/table01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table02.xml (renamed from test/testcases/tests/level1/html/table02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table03.xml (renamed from test/testcases/tests/level1/html/table03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table04.xml (renamed from test/testcases/tests/level1/html/table04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table06.xml (renamed from test/testcases/tests/level1/html/table06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table07.xml (renamed from test/testcases/tests/level1/html/table07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table08.xml (renamed from test/testcases/tests/level1/html/table08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table09.xml (renamed from test/testcases/tests/level1/html/table09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table10.xml (renamed from test/testcases/tests/level1/html/table10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table12.xml (renamed from test/testcases/tests/level1/html/table12.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table15.xml (renamed from test/testcases/tests/level1/html/table15.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table17.xml (renamed from test/testcases/tests/level1/html/table17.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table18.xml (renamed from test/testcases/tests/level1/html/table18.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table19.xml (renamed from test/testcases/tests/level1/html/table19.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table20.xml (renamed from test/testcases/tests/level1/html/table20.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table21.xml (renamed from test/testcases/tests/level1/html/table21.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table22.xml (renamed from test/testcases/tests/level1/html/table22.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table23.xml (renamed from test/testcases/tests/level1/html/table23.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table24.xml (renamed from test/testcases/tests/level1/html/table24.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table25.xml (renamed from test/testcases/tests/level1/html/table25.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table26.xml (renamed from test/testcases/tests/level1/html/table26.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table27.xml (renamed from test/testcases/tests/level1/html/table27.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table28.xml (renamed from test/testcases/tests/level1/html/table28.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table29.xml (renamed from test/testcases/tests/level1/html/table29.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table30.xml (renamed from test/testcases/tests/level1/html/table30.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table31.xml (renamed from test/testcases/tests/level1/html/table31.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table32.xml (renamed from test/testcases/tests/level1/html/table32.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table33.xml (renamed from test/testcases/tests/level1/html/table33.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table34.xml (renamed from test/testcases/tests/level1/html/table34.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table35.xml (renamed from test/testcases/tests/level1/html/table35.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table36.xml (renamed from test/testcases/tests/level1/html/table36.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table37.xml (renamed from test/testcases/tests/level1/html/table37.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table38.xml (renamed from test/testcases/tests/level1/html/table38.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table39.xml (renamed from test/testcases/tests/level1/html/table39.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table40.xml (renamed from test/testcases/tests/level1/html/table40.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table41.xml (renamed from test/testcases/tests/level1/html/table41.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table42.xml (renamed from test/testcases/tests/level1/html/table42.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table43.xml (renamed from test/testcases/tests/level1/html/table43.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table44.xml (renamed from test/testcases/tests/level1/html/table44.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table45.xml (renamed from test/testcases/tests/level1/html/table45.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table46.xml (renamed from test/testcases/tests/level1/html/table46.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table47.xml (renamed from test/testcases/tests/level1/html/table47.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table48.xml (renamed from test/testcases/tests/level1/html/table48.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table49.xml (renamed from test/testcases/tests/level1/html/table49.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table50.xml (renamed from test/testcases/tests/level1/html/table50.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table51.xml (renamed from test/testcases/tests/level1/html/table51.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table52.xml (renamed from test/testcases/tests/level1/html/table52.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table53.xml (renamed from test/testcases/tests/level1/html/table53.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/.HTMLImageElement05.xml.swpbin0 -> 12288 bytes
-rw-r--r--test/testcases/tests/level2/html/HTMLBaseFontElement03.xml2
-rw-r--r--test/testcases/tests/level2/html/HTMLBodyElement07.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLBodyElement07.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLBodyElement08.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLBodyElement08.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLBodyElement09.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLBodyElement09.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLBodyElement10.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLBodyElement10.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLBodyElement11.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLBodyElement11.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLBodyElement12.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLBodyElement12.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLDocument22.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLDocument22.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLDocument23.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLDocument23.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLDocument24.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLDocument24.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLDocument25.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLDocument25.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLDocument26.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLDocument26.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLDocument27.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLDocument27.xml)0
-rw-r--r--test/testcases/tests/level2/html/HTMLFrameElement09.xml2
-rw-r--r--test/testcases/tests/level2/html/HTMLIFrameElement11.xml2
-rw-r--r--test/testcases/tests/level2/html/HTMLTableElement39.xml.kfail (renamed from test/testcases/tests/level2/html/HTMLTableElement39.xml)5
-rw-r--r--test/testcases/tests/level2/html/files/applet.html12
-rw-r--r--test/testcases/tests/level2/html/files/applet.xhtml15
-rw-r--r--test/testcases/tests/level2/html/files/applet.xml15
-rw-r--r--test/testcases/tests/level2/html/files/applet2.html12
-rw-r--r--test/testcases/tests/level2/html/files/applet2.xhtml15
-rw-r--r--test/testcases/tests/level2/html/files/applet2.xml15
-rw-r--r--test/testcases/tests/level2/html/files/area.html14
-rw-r--r--test/testcases/tests/level2/html/files/area.xhtml17
-rw-r--r--test/testcases/tests/level2/html/files/area.xml17
-rw-r--r--test/testcases/tests/level2/html/files/area2.html15
-rw-r--r--test/testcases/tests/level2/html/files/area2.xhtml16
-rw-r--r--test/testcases/tests/level2/html/files/area2.xml16
-rw-r--r--test/testcases/tests/level2/html/files/basefont.html12
-rw-r--r--test/testcases/tests/level2/html/files/basefont.xhtml14
-rw-r--r--test/testcases/tests/level2/html/files/basefont.xml14
-rw-r--r--test/testcases/tests/level2/html/files/document.html36
-rw-r--r--test/testcases/tests/level2/html/files/document.xhtml39
-rw-r--r--test/testcases/tests/level2/html/files/document.xml39
-rw-r--r--test/testcases/tests/level2/html/files/img.html13
-rw-r--r--test/testcases/tests/level2/html/files/img.xhtml15
-rw-r--r--test/testcases/tests/level2/html/files/img.xml15
-rw-r--r--test/testcases/tests/level2/html/files/input.html60
-rw-r--r--test/testcases/tests/level2/html/files/input.xhtml62
-rw-r--r--test/testcases/tests/level2/html/files/input.xml62
-rw-r--r--test/testcases/tests/level2/html/files/object.html18
-rw-r--r--test/testcases/tests/level2/html/files/object.xhtml20
-rw-r--r--test/testcases/tests/level2/html/files/object.xml20
-rw-r--r--test/testcases/tests/level2/html/files/object2.html17
-rw-r--r--test/testcases/tests/level2/html/files/object2.xhtml20
-rw-r--r--test/testcases/tests/level2/html/files/object2.xml20
-rw-r--r--test/testcases/tests/level2/html/files/select.html44
-rw-r--r--test/testcases/tests/level2/html/files/select.xhtml41
-rw-r--r--test/testcases/tests/level2/html/files/select.xml41
-rw-r--r--test/testcases/tests/level2/html/files/table.html78
-rw-r--r--test/testcases/tests/level2/html/files/table.xhtml81
-rw-r--r--test/testcases/tests/level2/html/files/table.xml81
-rw-r--r--test/testcases/tests/level2/html/files/table1.html12
-rw-r--r--test/testcases/tests/level2/html/files/table1.xhtml15
-rw-r--r--test/testcases/tests/level2/html/files/table1.xml15
-rw-r--r--test/testcases/tests/level2/html/files/tablerow.html59
-rw-r--r--test/testcases/tests/level2/html/files/tablerow.xhtml62
-rw-r--r--test/testcases/tests/level2/html/files/tablerow.xml62
-rw-r--r--test/testcases/tests/level2/html/files/tablesection.html62
-rw-r--r--test/testcases/tests/level2/html/files/tablesection.xhtml65
-rw-r--r--test/testcases/tests/level2/html/files/tablesection.xml65
-rw-r--r--test/testcases/tests/level2/html/hasFeature02.xml.kfail (renamed from test/testcases/tests/level2/html/hasFeature02.xml)0
-rw-r--r--test/testcases/tests/level2/html/hasFeature03.xml.kfail (renamed from test/testcases/tests/level2/html/hasFeature03.xml)0
-rw-r--r--test/testcases/tests/level2/html/hasFeature04.xml.kfail (renamed from test/testcases/tests/level2/html/hasFeature04.xml)0
-rw-r--r--test/testcases/tests/level2/html/hasFeature05.xml.kfail (renamed from test/testcases/tests/level2/html/hasFeature05.xml)0
-rw-r--r--test/testcases/tests/level2/html/hasFeature06.xml.kfail (renamed from test/testcases/tests/level2/html/hasFeature06.xml)0
-rw-r--r--test/testcases/tests/level2/html/metadata.xml.kfail (renamed from test/testcases/tests/level2/html/metadata.xml)0
-rw-r--r--test/testutils/domtsasserts.c4
580 files changed, 13122 insertions, 430 deletions
diff --git a/Makefile b/Makefile
index c6bc2bd..bcbc27b 100644
--- a/Makefile
+++ b/Makefile
@@ -97,6 +97,44 @@ INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_option_element.h
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_opt_group_element.h
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_options_collection.h
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_hr_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_dlist_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_directory_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_menu_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_fieldset_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_legend_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_div_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_paragraph_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_heading_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_quote_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_pre_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_br_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_label_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_ulist_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_olist_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_li_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_font_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_mod_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_anchor_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_basefont_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_image_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_object_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_param_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_applet_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_area_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_map_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_script_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_tablecaption_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_tablecell_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_tablecol_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_tablesection_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_table_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_tablerow_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_base_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_style_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_frameset_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_frame_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_iframe_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_isindex_element.h
INSTALL_ITEMS := $(INSTALL_ITEMS) /$(LIBDIR)/pkgconfig:lib$(COMPONENT).pc.in
INSTALL_ITEMS := $(INSTALL_ITEMS) /$(LIBDIR):$(OUTPUT)
diff --git a/include/dom/dom.h b/include/dom/dom.h
index d34f27f..0dba25d 100644
--- a/include/dom/dom.h
+++ b/include/dom/dom.h
@@ -56,6 +56,44 @@
#include <dom/html/html_select_element.h>
#include <dom/html/html_options_collection.h>
#include <dom/html/html_hr_element.h>
+#include <dom/html/html_dlist_element.h>
+#include <dom/html/html_directory_element.h>
+#include <dom/html/html_menu_element.h>
+#include <dom/html/html_fieldset_element.h>
+#include <dom/html/html_legend_element.h>
+#include <dom/html/html_div_element.h>
+#include <dom/html/html_paragraph_element.h>
+#include <dom/html/html_heading_element.h>
+#include <dom/html/html_quote_element.h>
+#include <dom/html/html_pre_element.h>
+#include <dom/html/html_br_element.h>
+#include <dom/html/html_label_element.h>
+#include <dom/html/html_ulist_element.h>
+#include <dom/html/html_olist_element.h>
+#include <dom/html/html_li_element.h>
+#include <dom/html/html_font_element.h>
+#include <dom/html/html_mod_element.h>
+#include <dom/html/html_anchor_element.h>
+#include <dom/html/html_basefont_element.h>
+#include <dom/html/html_image_element.h>
+#include <dom/html/html_object_element.h>
+#include <dom/html/html_param_element.h>
+#include <dom/html/html_applet_element.h>
+#include <dom/html/html_area_element.h>
+#include <dom/html/html_map_element.h>
+#include <dom/html/html_script_element.h>
+#include <dom/html/html_tablecaption_element.h>
+#include <dom/html/html_tablecell_element.h>
+#include <dom/html/html_tablecol_element.h>
+#include <dom/html/html_tablesection_element.h>
+#include <dom/html/html_table_element.h>
+#include <dom/html/html_tablerow_element.h>
+#include <dom/html/html_base_element.h>
+#include <dom/html/html_style_element.h>
+#include <dom/html/html_frameset_element.h>
+#include <dom/html/html_frame_element.h>
+#include <dom/html/html_iframe_element.h>
+#include <dom/html/html_isindex_element.h>
/* DOM Events header */
#include <dom/events/events.h>
diff --git a/include/dom/html/html_anchor_element.h b/include/dom/html/html_anchor_element.h
index 2e182d5..c7bcdea 100644
--- a/include/dom/html/html_anchor_element.h
+++ b/include/dom/html/html_anchor_element.h
@@ -3,5 +3,92 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_anchor_element_h_
+#define dom_html_anchor_element_h_
+
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_anchor_element dom_html_anchor_element;
+
+
+dom_exception dom_html_anchor_element_get_access_key(
+ dom_html_anchor_element *anchor, dom_string **access_key);
+
+dom_exception dom_html_anchor_element_set_access_key(
+ dom_html_anchor_element *anchor, dom_string *access_key);
+
+dom_exception dom_html_anchor_element_get_charset(
+ dom_html_anchor_element *anchor, dom_string **charset);
+
+dom_exception dom_html_anchor_element_set_charset(
+ dom_html_anchor_element *anchor, dom_string *charset);
+
+dom_exception dom_html_anchor_element_get_coords(
+ dom_html_anchor_element *anchor, dom_string **coords);
+
+dom_exception dom_html_anchor_element_set_coords(
+ dom_html_anchor_element *anchor, dom_string *coords);
+
+dom_exception dom_html_anchor_element_get_href(
+ dom_html_anchor_element *anchor, dom_string **href);
+
+dom_exception dom_html_anchor_element_set_href(
+ dom_html_anchor_element *anchor, dom_string *href);
+
+dom_exception dom_html_anchor_element_get_hreflang(
+ dom_html_anchor_element *anchor, dom_string **hreflang);
+
+dom_exception dom_html_anchor_element_set_hreflang(
+ dom_html_anchor_element *anchor, dom_string *hreflang);
+
+dom_exception dom_html_anchor_element_get_name(
+ dom_html_anchor_element *anchor, dom_string **name);
+
+dom_exception dom_html_anchor_element_set_name(
+ dom_html_anchor_element *anchor, dom_string *name);
+
+dom_exception dom_html_anchor_element_get_rel(
+ dom_html_anchor_element *anchor, dom_string **rel);
+
+dom_exception dom_html_anchor_element_set_rel(
+ dom_html_anchor_element *anchor, dom_string *rel);
+
+dom_exception dom_html_anchor_element_get_rev(
+ dom_html_anchor_element *anchor, dom_string **rev);
+
+dom_exception dom_html_anchor_element_set_rev(
+ dom_html_anchor_element *anchor, dom_string *rev);
+
+dom_exception dom_html_anchor_element_get_shape(
+ dom_html_anchor_element *anchor, dom_string **shape);
+
+dom_exception dom_html_anchor_element_set_shape(
+ dom_html_anchor_element *anchor, dom_string *shape);
+
+dom_exception dom_html_anchor_element_get_target(
+ dom_html_anchor_element *anchor, dom_string **target);
+
+dom_exception dom_html_anchor_element_set_target(
+ dom_html_anchor_element *anchor, dom_string *target);
+
+dom_exception dom_html_anchor_element_get_type(
+ dom_html_anchor_element *anchor, dom_string **type);
+
+dom_exception dom_html_anchor_element_set_type(
+ dom_html_anchor_element *anchor, dom_string *type);
+
+dom_exception dom_html_anchor_element_get_tab_index(
+ dom_html_anchor_element *anchor, int32_t *tab_index);
+
+dom_exception dom_html_anchor_element_set_tab_index(
+ dom_html_anchor_element *anchor, uint32_t tab_index);
+
+dom_exception dom_html_anchor_element_blur(dom_html_anchor_element *ele);
+dom_exception dom_html_anchor_element_focus(dom_html_anchor_element *ele);
+
+#endif
diff --git a/include/dom/html/html_applet_element.h b/include/dom/html/html_applet_element.h
index 2e182d5..29e5c62 100644
--- a/include/dom/html/html_applet_element.h
+++ b/include/dom/html/html_applet_element.h
@@ -3,5 +3,83 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_applet_element_h_
+#define dom_html_applet_element_h_
+
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_applet_element dom_html_applet_element;
+
+dom_exception dom_html_applet_element_get_align(
+ dom_html_applet_element *applet, dom_string **align);
+
+dom_exception dom_html_applet_element_set_align(
+ dom_html_applet_element *applet, dom_string *align);
+
+dom_exception dom_html_applet_element_get_alt(
+ dom_html_applet_element *applet, dom_string **alt);
+
+dom_exception dom_html_applet_element_set_alt(
+ dom_html_applet_element *applet, dom_string *alt);
+
+dom_exception dom_html_applet_element_get_archive(
+ dom_html_applet_element *applet, dom_string **archive);
+
+dom_exception dom_html_applet_element_set_archive(
+ dom_html_applet_element *applet, dom_string *archive);
+
+dom_exception dom_html_applet_element_get_code(
+ dom_html_applet_element *applet, dom_string **code);
+
+dom_exception dom_html_applet_element_set_code(
+ dom_html_applet_element *applet, dom_string *code);
+
+dom_exception dom_html_applet_element_get_code_base(
+ dom_html_applet_element *applet, dom_string **code_base);
+
+dom_exception dom_html_applet_element_set_code_base(
+ dom_html_applet_element *applet, dom_string *code_base);
+
+dom_exception dom_html_applet_element_get_height(
+ dom_html_applet_element *applet, dom_string **height);
+
+dom_exception dom_html_applet_element_set_height(
+ dom_html_applet_element *applet, dom_string *height);
+
+dom_exception dom_html_applet_element_get_name(
+ dom_html_applet_element *applet, dom_string **name);
+
+dom_exception dom_html_applet_element_set_name(
+ dom_html_applet_element *applet, dom_string *name);
+
+dom_exception dom_html_applet_element_get_object(
+ dom_html_applet_element *applet, dom_string **object);
+
+dom_exception dom_html_applet_element_set_object(
+ dom_html_applet_element *applet, dom_string *object);
+
+dom_exception dom_html_applet_element_get_width(
+ dom_html_applet_element *applet, dom_string **width);
+
+dom_exception dom_html_applet_element_set_width(
+ dom_html_applet_element *applet, dom_string *width);
+
+
+dom_exception dom_html_applet_element_get_hspace(
+ dom_html_applet_element *applet, int32_t *hspace);
+
+dom_exception dom_html_applet_element_set_hspace(
+ dom_html_applet_element *applet, uint32_t hspace);
+
+dom_exception dom_html_applet_element_get_vspace(
+ dom_html_applet_element *applet, int32_t *vspace);
+
+dom_exception dom_html_applet_element_set_vspace(
+ dom_html_applet_element *applet, uint32_t vspace);
+#endif
+
diff --git a/include/dom/html/html_area_element.h b/include/dom/html/html_area_element.h
index 2e182d5..c57202b 100644
--- a/include/dom/html/html_area_element.h
+++ b/include/dom/html/html_area_element.h
@@ -3,5 +3,67 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1access_keyr99@gmail.com>
*/
+#ifndef dom_html_area_element_h_
+#define dom_html_area_element_h_
+
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+#include <dom/html/html_form_element.h>
+#include <dom/html/html_document.h>
+
+typedef struct dom_html_area_element dom_html_area_element;
+
+dom_exception dom_html_area_element_get_access_key(
+ dom_html_area_element *area, dom_string **access_key);
+
+dom_exception dom_html_area_element_set_access_key(
+ dom_html_area_element *area, dom_string *access_key);
+
+dom_exception dom_html_area_element_get_alt(
+ dom_html_area_element *area, dom_string **alt);
+
+dom_exception dom_html_area_element_set_alt(
+ dom_html_area_element *area, dom_string *alt);
+
+dom_exception dom_html_area_element_get_coords(
+ dom_html_area_element *area, dom_string **coords);
+
+dom_exception dom_html_area_element_set_coords(
+ dom_html_area_element *area, dom_string *coords);
+
+dom_exception dom_html_area_element_get_href(
+ dom_html_area_element *area, dom_string **href);
+
+dom_exception dom_html_area_element_set_href(
+ dom_html_area_element *area, dom_string *href);
+
+dom_exception dom_html_area_element_get_no_href(
+ dom_html_area_element *ele, bool *no_href);
+
+dom_exception dom_html_area_element_set_no_href(
+ dom_html_area_element *ele, bool no_href);
+
+dom_exception dom_html_area_element_get_shape(
+ dom_html_area_element *area, dom_string **shape);
+
+dom_exception dom_html_area_element_set_shape(
+ dom_html_area_element *area, dom_string *shape);
+
+dom_exception dom_html_area_element_get_tab_index(
+ dom_html_area_element *area, int32_t *tab_index);
+
+dom_exception dom_html_area_element_set_tab_index(
+ dom_html_area_element *area, uint32_t tab_index);
+
+dom_exception dom_html_area_element_get_target(
+ dom_html_area_element *area, dom_string **target);
+
+dom_exception dom_html_area_element_set_target(
+ dom_html_area_element *area, dom_string *target);
+
+#endif
diff --git a/include/dom/html/html_base_element.h b/include/dom/html/html_base_element.h
index 5ff28ee..c8283f3 100644
--- a/include/dom/html/html_base_element.h
+++ b/include/dom/html/html_base_element.h
@@ -8,7 +8,23 @@
#ifndef dom_html_base_element_h_
#define dom_html_base_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
typedef struct dom_html_base_element dom_html_base_element;
+dom_exception dom_html_base_element_get_href(
+ dom_html_base_element *element, dom_string **href);
+
+dom_exception dom_html_base_element_set_href(
+ dom_html_base_element *element, dom_string *href);
+
+dom_exception dom_html_base_element_get_target(
+ dom_html_base_element *element, dom_string **target);
+
+dom_exception dom_html_base_element_set_target(
+ dom_html_base_element *element, dom_string *target);
+
#endif
diff --git a/include/dom/html/html_basefont_element.h b/include/dom/html/html_basefont_element.h
index 2e182d5..fa60e0d 100644
--- a/include/dom/html/html_basefont_element.h
+++ b/include/dom/html/html_basefont_element.h
@@ -3,5 +3,32 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_base_font_element_h_
+#define dom_html_base_font_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_base_font_element dom_html_base_font_element;
+
+dom_exception dom_html_base_font_element_get_size(
+ dom_html_base_font_element *element, int32_t *size);
+
+dom_exception dom_html_base_font_element_set_size(
+ dom_html_base_font_element *element, uint32_t size);
+
+dom_exception dom_html_base_font_element_get_color(
+ dom_html_base_font_element *element, dom_string **color);
+
+dom_exception dom_html_base_font_element_set_color(
+ dom_html_base_font_element *element, dom_string *color);
+
+dom_exception dom_html_base_font_element_get_face(
+ dom_html_base_font_element *element, dom_string **face);
+
+dom_exception dom_html_base_font_element_set_face(
+ dom_html_base_font_element *element, dom_string *face);
+#endif
diff --git a/include/dom/html/html_br_element.h b/include/dom/html/html_br_element.h
index 2e182d5..9475e74 100644
--- a/include/dom/html/html_br_element.h
+++ b/include/dom/html/html_br_element.h
@@ -3,5 +3,21 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_br_element_h_
+#define dom_html_br_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_br_element dom_html_br_element;
+
+dom_exception dom_html_br_element_get_clear(
+ dom_html_br_element *ele, dom_string **clear);
+
+dom_exception dom_html_br_element_set_clear(
+ dom_html_br_element *ele, dom_string *clear);
+
+#endif
diff --git a/include/dom/html/html_directory_element.h b/include/dom/html/html_directory_element.h
index 2e182d5..67fa269 100644
--- a/include/dom/html/html_directory_element.h
+++ b/include/dom/html/html_directory_element.h
@@ -3,5 +3,21 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_directory_element_h_
+#define dom_html_directory_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_directory_element dom_html_directory_element;
+
+dom_exception dom_html_directory_element_get_compact(
+ dom_html_directory_element *ele, bool *compact);
+
+dom_exception dom_html_directory_element_set_compact(
+ dom_html_directory_element *ele, bool compact);
+
+#endif
diff --git a/include/dom/html/html_div_element.h b/include/dom/html/html_div_element.h
index 2e182d5..051a6d5 100644
--- a/include/dom/html/html_div_element.h
+++ b/include/dom/html/html_div_element.h
@@ -3,5 +3,21 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_div_element_h_
+#define dom_html_div_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_div_element dom_html_div_element;
+
+dom_exception dom_html_div_element_get_align(
+ dom_html_div_element *element, dom_string **align);
+
+dom_exception dom_html_div_element_set_align(
+ dom_html_div_element *element, dom_string *align);
+
+#endif
diff --git a/include/dom/html/html_dlist_element.h b/include/dom/html/html_dlist_element.h
index 2e182d5..e537994 100644
--- a/include/dom/html/html_dlist_element.h
+++ b/include/dom/html/html_dlist_element.h
@@ -3,5 +3,21 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_d_list_element_h_
+#define dom_html_d_list_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_d_list_element dom_html_d_list_element;
+
+dom_exception dom_html_d_list_element_get_compact(
+ dom_html_d_list_element *ele, bool *compact);
+
+dom_exception dom_html_d_list_element_set_compact(
+ dom_html_d_list_element *ele, bool compact);
+
+#endif
diff --git a/include/dom/html/html_document.h b/include/dom/html/html_document.h
index 1f868a5..936ea69 100644
--- a/include/dom/html/html_document.h
+++ b/include/dom/html/html_document.h
@@ -114,7 +114,7 @@ static inline dom_exception dom_html_document_get_body(dom_html_document *doc,
get_body(doc, body);
}
#define dom_html_document_get_body(d, b) \
- dom_html_document_get_title((dom_html_document *) (d), \
+ dom_html_document_get_body((dom_html_document *) (d), \
(struct dom_html_element **) (b))
static inline dom_exception dom_html_document_set_body(dom_html_document *doc,
@@ -174,7 +174,7 @@ static inline dom_exception dom_html_document_get_anchors(dom_html_document *doc
get_anchors(doc, col);
}
#define dom_html_document_get_anchors(d, c) \
- dom_html_document_get_title((dom_html_document *) (d), \
+ dom_html_document_get_anchors((dom_html_document *) (d), \
(struct dom_html_collection **) (c))
static inline dom_exception dom_html_document_get_cookie(dom_html_document *doc,
@@ -184,7 +184,7 @@ static inline dom_exception dom_html_document_get_cookie(dom_html_document *doc,
get_cookie(doc, cookie);
}
#define dom_html_document_get_cookie(d, c) \
- dom_html_document_get_title((dom_html_document *) (d), (c))
+ dom_html_document_get_cookie((dom_html_document *) (d), (c))
static inline dom_exception dom_html_document_set_cookie(dom_html_document *doc,
dom_string *cookie)
@@ -237,8 +237,8 @@ static inline dom_exception dom_html_document_get_elements_by_name(dom_html_docu
return ((dom_html_document_vtable *) ((dom_node *) doc)->vtable)->
get_elements_by_name(doc, name, list);
}
-#define dom_html_document_get_elements_by_name(d, n, l) \
- dom_html_document_get_element_by_name((dom_html_document *) (d), \
+#define dom_html_document_get_element_by_name(d, n, l) \
+ dom_html_document_get_elements_by_name((dom_html_document *) (d), \
(n), (struct dom_nodelist **) (l))
#endif
diff --git a/include/dom/html/html_fieldset_element.h b/include/dom/html/html_fieldset_element.h
index 2e182d5..26383b3 100644
--- a/include/dom/html/html_fieldset_element.h
+++ b/include/dom/html/html_fieldset_element.h
@@ -3,5 +3,22 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_field_set_element_h_
+#define dom_html_field_set_element_h_
+
+#include <stdbool.h>
+
+#include <dom/core/exceptions.h>
+
+#include <dom/html/html_form_element.h>
+
+typedef struct dom_html_field_set_element dom_html_field_set_element;
+
+struct dom_html_element;
+dom_exception dom_html_field_set_element_get_form(
+ dom_html_field_set_element *ele, dom_html_form_element **form);
+#endif
+
diff --git a/include/dom/html/html_font_element.h b/include/dom/html/html_font_element.h
index 2e182d5..b878f42 100644
--- a/include/dom/html/html_font_element.h
+++ b/include/dom/html/html_font_element.h
@@ -3,5 +3,32 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_font_element_h_
+#define dom_html_font_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_font_element dom_html_font_element;
+
+dom_exception dom_html_font_element_get_color(
+ dom_html_font_element *ele, dom_string **color);
+
+dom_exception dom_html_font_element_set_color(
+ dom_html_font_element *ele, dom_string *color);
+
+dom_exception dom_html_font_element_get_face(
+ dom_html_font_element *ele, dom_string **face);
+
+dom_exception dom_html_font_element_set_face(
+ dom_html_font_element *ele, dom_string *face);
+
+dom_exception dom_html_font_element_get_size(
+ dom_html_font_element *ele, dom_string **size);
+
+dom_exception dom_html_font_element_set_size(
+ dom_html_font_element *ele, dom_string *size);
+#endif
diff --git a/include/dom/html/html_frame_element.h b/include/dom/html/html_frame_element.h
index 2e182d5..1202f5c 100644
--- a/include/dom/html/html_frame_element.h
+++ b/include/dom/html/html_frame_element.h
@@ -3,5 +3,68 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_frame_element_h_
+#define dom_html_frame_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+#include <dom/html/html_document.h>
+typedef struct dom_html_frame_element dom_html_frame_element;
+
+dom_exception dom_html_frame_element_get_frame_border(
+ dom_html_frame_element *element, dom_string **frame_border);
+
+dom_exception dom_html_frame_element_set_frame_border(
+ dom_html_frame_element *element, dom_string *frame_border);
+
+dom_exception dom_html_frame_element_set_long_desc(
+ dom_html_frame_element *ele, dom_string *long_desc);
+
+dom_exception dom_html_frame_element_get_long_desc(
+ dom_html_frame_element *ele, dom_string **long_desc);
+
+dom_exception dom_html_frame_element_get_margin_height(
+ dom_html_frame_element *element, dom_string **margin_height);
+
+dom_exception dom_html_frame_element_set_margin_height(
+ dom_html_frame_element *element, dom_string *margin_height);
+
+dom_exception dom_html_frame_element_get_margin_width(
+ dom_html_frame_element *element, dom_string **margin_width);
+
+dom_exception dom_html_frame_element_set_margin_width(
+ dom_html_frame_element *element, dom_string *margin_width);
+
+dom_exception dom_html_frame_element_get_name(
+ dom_html_frame_element *element, dom_string **name);
+
+dom_exception dom_html_frame_element_set_name(
+ dom_html_frame_element *element, dom_string *name);
+
+dom_exception dom_html_frame_element_get_scrolling(
+ dom_html_frame_element *element, dom_string **scrolling);
+
+dom_exception dom_html_frame_element_set_scrolling(
+ dom_html_frame_element *element, dom_string *scrolling);
+
+dom_exception dom_html_frame_element_get_src(
+ dom_html_frame_element *element, dom_string **src);
+
+dom_exception dom_html_frame_element_set_src(
+ dom_html_frame_element *element, dom_string *src);
+
+dom_exception dom_html_frame_element_set_no_resize(dom_html_frame_element *ele,
+ bool no_resize);
+
+dom_exception dom_html_frame_element_get_no_resize(dom_html_frame_element *ele,
+ bool *no_resize);
+
+dom_exception dom_html_frame_element_get_content_document(
+ dom_html_frame_element *ele,
+ dom_document **content_document);
+
+#endif
diff --git a/include/dom/html/html_frameset_element.h b/include/dom/html/html_frameset_element.h
index 2e182d5..c0de3b4 100644
--- a/include/dom/html/html_frameset_element.h
+++ b/include/dom/html/html_frameset_element.h
@@ -3,5 +3,27 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_frame_set_element_h_
+#define dom_html_frame_set_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_frame_set_element dom_html_frame_set_element;
+
+dom_exception dom_html_frame_set_element_get_rows(
+ dom_html_frame_set_element *element, dom_string **rows);
+
+dom_exception dom_html_frame_set_element_set_rows(
+ dom_html_frame_set_element *element, dom_string *rows);
+
+dom_exception dom_html_frame_set_element_set_cols(
+ dom_html_frame_set_element *ele, dom_string *cols);
+
+dom_exception dom_html_frame_set_element_get_cols(
+ dom_html_frame_set_element *ele, dom_string **cols);
+
+#endif
diff --git a/include/dom/html/html_heading_element.h b/include/dom/html/html_heading_element.h
index 2e182d5..fb42b89 100644
--- a/include/dom/html/html_heading_element.h
+++ b/include/dom/html/html_heading_element.h
@@ -3,5 +3,21 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_heading_element_h_
+#define dom_html_heading_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_heading_element dom_html_heading_element;
+
+dom_exception dom_html_heading_element_get_align(
+ dom_html_heading_element *element, dom_string **align);
+
+dom_exception dom_html_heading_element_set_align(
+ dom_html_heading_element *element, dom_string *align);
+
+#endif
diff --git a/include/dom/html/html_iframe_element.h b/include/dom/html/html_iframe_element.h
index 2e182d5..f064cfe 100644
--- a/include/dom/html/html_iframe_element.h
+++ b/include/dom/html/html_iframe_element.h
@@ -3,5 +3,80 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_iframe_element_h_
+#define dom_html_iframe_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+#include <dom/html/html_document.h>
+typedef struct dom_html_iframe_element dom_html_iframe_element;
+
+dom_exception dom_html_iframe_element_get_frame_border(
+ dom_html_iframe_element *element, dom_string **frame_border);
+
+dom_exception dom_html_iframe_element_set_frame_border(
+ dom_html_iframe_element *element, dom_string *frame_border);
+
+dom_exception dom_html_iframe_element_get_align(
+ dom_html_iframe_element *element, dom_string **align);
+
+dom_exception dom_html_iframe_element_set_align(
+ dom_html_iframe_element *element, dom_string *align);
+
+dom_exception dom_html_iframe_element_set_long_desc(
+ dom_html_iframe_element *ele, dom_string *long_desc);
+
+dom_exception dom_html_iframe_element_get_long_desc(
+ dom_html_iframe_element *ele, dom_string **long_desc);
+
+dom_exception dom_html_iframe_element_get_margin_height(
+ dom_html_iframe_element *element, dom_string **margin_height);
+
+dom_exception dom_html_iframe_element_set_margin_height(
+ dom_html_iframe_element *element, dom_string *margin_height);
+
+dom_exception dom_html_iframe_element_get_margin_width(
+ dom_html_iframe_element *element, dom_string **margin_width);
+
+dom_exception dom_html_iframe_element_set_margin_width(
+ dom_html_iframe_element *element, dom_string *margin_width);
+
+dom_exception dom_html_iframe_element_get_name(
+ dom_html_iframe_element *element, dom_string **name);
+
+dom_exception dom_html_iframe_element_set_name(
+ dom_html_iframe_element *element, dom_string *name);
+
+dom_exception dom_html_iframe_element_get_scrolling(
+ dom_html_iframe_element *element, dom_string **scrolling);
+
+dom_exception dom_html_iframe_element_set_scrolling(
+ dom_html_iframe_element *element, dom_string *scrolling);
+
+dom_exception dom_html_iframe_element_get_src(
+ dom_html_iframe_element *element, dom_string **src);
+
+dom_exception dom_html_iframe_element_set_src(
+ dom_html_iframe_element *element, dom_string *src);
+
+dom_exception dom_html_iframe_element_get_height(
+ dom_html_iframe_element *element, dom_string **height);
+
+dom_exception dom_html_iframe_element_set_height(
+ dom_html_iframe_element *element, dom_string *height);
+
+dom_exception dom_html_iframe_element_get_width(
+ dom_html_iframe_element *element, dom_string **width);
+
+dom_exception dom_html_iframe_element_set_width(
+ dom_html_iframe_element *element, dom_string *width);
+
+dom_exception dom_html_iframe_element_get_content_document(
+ dom_html_iframe_element *ele,
+ dom_document **content_document);
+
+#endif
diff --git a/include/dom/html/html_image_element.h b/include/dom/html/html_image_element.h
index 2e182d5..7e3e879 100644
--- a/include/dom/html/html_image_element.h
+++ b/include/dom/html/html_image_element.h
@@ -3,5 +3,89 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_image_element_h_
+#define dom_html_image_element_h_
+
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_image_element dom_html_image_element;
+
+
+dom_exception dom_html_image_element_get_name(
+ dom_html_image_element *image, dom_string **name);
+
+dom_exception dom_html_image_element_set_name(
+ dom_html_image_element *image, dom_string *name);
+
+dom_exception dom_html_image_element_get_align(
+ dom_html_image_element *image, dom_string **align);
+
+dom_exception dom_html_image_element_set_align(
+ dom_html_image_element *image, dom_string *align);
+
+dom_exception dom_html_image_element_get_alt(
+ dom_html_image_element *image, dom_string **alt);
+
+dom_exception dom_html_image_element_set_alt(
+ dom_html_image_element *image, dom_string *alt);
+
+dom_exception dom_html_image_element_get_border(
+ dom_html_image_element *image, dom_string **border);
+
+dom_exception dom_html_image_element_set_border(
+ dom_html_image_element *image, dom_string *border);
+
+dom_exception dom_html_image_element_get_long_desc(
+ dom_html_image_element *image, dom_string **long_desc);
+
+dom_exception dom_html_image_element_set_long_desc(
+ dom_html_image_element *image, dom_string *long_desc);
+
+dom_exception dom_html_image_element_get_src(
+ dom_html_image_element *image, dom_string **src);
+
+dom_exception dom_html_image_element_set_src(
+ dom_html_image_element *image, dom_string *src);
+
+dom_exception dom_html_image_element_get_use_map(
+ dom_html_image_element *image, dom_string **use_map);
+
+dom_exception dom_html_image_element_set_use_map(
+ dom_html_image_element *image, dom_string *use_map);
+
+dom_exception dom_html_image_element_get_height(
+ dom_html_image_element *image, int32_t *height);
+
+dom_exception dom_html_image_element_set_height(
+ dom_html_image_element *image, uint32_t height);
+
+dom_exception dom_html_image_element_get_hspace(
+ dom_html_image_element *image, int32_t *hspace);
+
+dom_exception dom_html_image_element_set_hspace(
+ dom_html_image_element *image, uint32_t hspace);
+
+dom_exception dom_html_image_element_get_vspace(
+ dom_html_image_element *image, int32_t *vspace);
+
+dom_exception dom_html_image_element_set_vspace(
+ dom_html_image_element *image, uint32_t vspace);
+
+dom_exception dom_html_image_element_get_width(
+ dom_html_image_element *image, int32_t *width);
+
+dom_exception dom_html_image_element_set_width(
+ dom_html_image_element *image, uint32_t width);
+
+dom_exception dom_html_image_element_get_is_map(
+ dom_html_image_element *ele, bool *is_map);
+
+dom_exception dom_html_image_element_set_is_map(
+ dom_html_image_element *ele, bool is_map);
+
+#endif
diff --git a/include/dom/html/html_input_element.h b/include/dom/html/html_input_element.h
index eb6aecd..086e1cb 100644
--- a/include/dom/html/html_input_element.h
+++ b/include/dom/html/html_input_element.h
@@ -85,10 +85,10 @@ dom_exception dom_html_input_element_set_read_only(
dom_html_input_element *input, bool read_only);
dom_exception dom_html_input_element_get_size(
- dom_html_input_element *input, dom_string **size);
+ dom_html_input_element *input, int32_t *size);
dom_exception dom_html_input_element_set_size(
- dom_html_input_element *input, dom_string *size);
+ dom_html_input_element *input, uint32_t size);
dom_exception dom_html_input_element_get_src(
dom_html_input_element *input, dom_string **src);
diff --git a/include/dom/html/html_isindex_element.h b/include/dom/html/html_isindex_element.h
index 4961ccc..d41a149 100644
--- a/include/dom/html/html_isindex_element.h
+++ b/include/dom/html/html_isindex_element.h
@@ -9,6 +9,7 @@
#define dom_html_isindex_element_h_
#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
struct dom_html_form_element;
@@ -22,5 +23,10 @@ typedef struct dom_html_isindex_element dom_html_isindex_element;
dom_exception dom_html_isindex_element_get_form(dom_html_isindex_element *ele,
struct dom_html_form_element **form);
+dom_exception dom_html_isindex_element_get_prompt(dom_html_isindex_element *ele,
+ dom_string **prompt);
+
+dom_exception dom_html_isindex_element_set_prompt(dom_html_isindex_element *ele,
+ dom_string *prompt);
#endif
diff --git a/include/dom/html/html_label_element.h b/include/dom/html/html_label_element.h
index 2e182d5..6aca45d 100644
--- a/include/dom/html/html_label_element.h
+++ b/include/dom/html/html_label_element.h
@@ -5,3 +5,29 @@
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
*/
+#ifndef dom_html_label_element_h_
+#define dom_html_label_element_h_
+
+#include <stdbool.h>
+
+#include <dom/core/exceptions.h>
+
+#include <dom/html/html_form_element.h>
+
+typedef struct dom_html_label_element dom_html_label_element;
+
+dom_exception dom_html_label_element_get_access_key(
+ dom_html_label_element *ele, dom_string **access_key);
+dom_exception dom_html_label_element_set_access_key(
+ dom_html_label_element *ele, dom_string *access_key);
+
+dom_exception dom_html_label_element_get_html_for(
+ dom_html_label_element *ele, dom_string **html_for);
+dom_exception dom_html_label_element_set_html_for(
+ dom_html_label_element *ele, dom_string *html_for);
+
+dom_exception dom_html_label_element_get_form(
+ dom_html_label_element *ele, dom_html_form_element **form);
+
+#endif
+
diff --git a/include/dom/html/html_legend_element.h b/include/dom/html/html_legend_element.h
index 2e182d5..caf34a6 100644
--- a/include/dom/html/html_legend_element.h
+++ b/include/dom/html/html_legend_element.h
@@ -3,5 +3,32 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_legend_element_h_
+#define dom_html_legend_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+#include <dom/html/html_form_element.h>
+
+typedef struct dom_html_legend_element dom_html_legend_element;
+
+dom_exception dom_html_legend_element_get_form(
+ dom_html_legend_element *ele, dom_html_form_element **form);
+
+dom_exception dom_html_legend_element_get_access_key(
+ dom_html_legend_element *element, dom_string **access_key);
+
+dom_exception dom_html_legend_element_set_access_key(
+ dom_html_legend_element *element, dom_string *access_key);
+
+dom_exception dom_html_legend_element_get_align(
+ dom_html_legend_element *element, dom_string **align);
+
+dom_exception dom_html_legend_element_set_align(
+ dom_html_legend_element *ele, dom_string *align);
+
+#endif
diff --git a/include/dom/html/html_li_element.h b/include/dom/html/html_li_element.h
index 2e182d5..465bb98 100644
--- a/include/dom/html/html_li_element.h
+++ b/include/dom/html/html_li_element.h
@@ -3,5 +3,27 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_li_element_h_
+#define dom_html_li_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_li_element dom_html_li_element;
+
+dom_exception dom_html_li_element_get_value(
+ dom_html_li_element *ele, int32_t *value);
+
+dom_exception dom_html_li_element_set_value(
+ dom_html_li_element *ele, uint32_t value);
+
+dom_exception dom_html_li_element_get_type(
+ dom_html_li_element *ele, dom_string **type);
+
+dom_exception dom_html_li_element_set_type(
+ dom_html_li_element *ele, dom_string *type);
+
+#endif
diff --git a/include/dom/html/html_map_element.h b/include/dom/html/html_map_element.h
index 2e182d5..6abdee5 100644
--- a/include/dom/html/html_map_element.h
+++ b/include/dom/html/html_map_element.h
@@ -3,5 +3,26 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_map_element_h_
+#define dom_html_map_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+#include <dom/html/html_collection.h>
+
+typedef struct dom_html_map_element dom_html_map_element;
+
+dom_exception dom_html_map_element_get_name(
+ dom_html_map_element *ele, dom_string **name);
+
+dom_exception dom_html_map_element_set_name(
+ dom_html_map_element *ele, dom_string *name);
+
+dom_exception dom_html_map_element_get_areas(
+ dom_html_map_element *ele, dom_html_collection **areas);
+
+#endif
diff --git a/include/dom/html/html_menu_element.h b/include/dom/html/html_menu_element.h
index 2e182d5..f4dad74 100644
--- a/include/dom/html/html_menu_element.h
+++ b/include/dom/html/html_menu_element.h
@@ -3,5 +3,21 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_menu_element_h_
+#define dom_html_menu_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_menu_element dom_html_menu_element;
+
+dom_exception dom_html_menu_element_get_compact(
+ dom_html_menu_element *ele, bool *compact);
+
+dom_exception dom_html_menu_element_set_compact(
+ dom_html_menu_element *ele, bool compact);
+
+#endif
diff --git a/include/dom/html/html_mod_element.h b/include/dom/html/html_mod_element.h
index 2e182d5..99c4f2e 100644
--- a/include/dom/html/html_mod_element.h
+++ b/include/dom/html/html_mod_element.h
@@ -3,5 +3,27 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_mod_element_h_
+#define dom_html_mod_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_mod_element dom_html_mod_element;
+
+dom_exception dom_html_mod_element_get_cite(
+ dom_html_mod_element *ele, dom_string **cite);
+
+dom_exception dom_html_mod_element_set_cite(
+ dom_html_mod_element *ele, dom_string *cite);
+
+dom_exception dom_html_mod_element_get_date_time(
+ dom_html_mod_element *ele, dom_string **date_time);
+
+dom_exception dom_html_mod_element_set_date_time(
+ dom_html_mod_element *ele, dom_string *date_time);
+
+#endif
diff --git a/include/dom/html/html_object_element.h b/include/dom/html/html_object_element.h
index 2e182d5..0263e85 100644
--- a/include/dom/html/html_object_element.h
+++ b/include/dom/html/html_object_element.h
@@ -3,5 +3,126 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_object_element_h_
+#define dom_html_object_element_h_
+
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+#include <dom/html/html_form_element.h>
+#include <dom/html/html_document.h>
+
+typedef struct dom_html_object_element dom_html_object_element;
+
+dom_exception dom_html_object_element_get_form(
+ dom_html_object_element *ele, dom_html_form_element **form);
+
+dom_exception dom_html_object_element_get_code(
+ dom_html_object_element *object, dom_string **code);
+
+dom_exception dom_html_object_element_set_code(
+ dom_html_object_element *object, dom_string *code);
+
+dom_exception dom_html_object_element_get_align(
+ dom_html_object_element *object, dom_string **align);
+
+dom_exception dom_html_object_element_set_align(
+ dom_html_object_element *object, dom_string *align);
+
+dom_exception dom_html_object_element_get_archive(
+ dom_html_object_element *object, dom_string **archive);
+
+dom_exception dom_html_object_element_set_archive(
+ dom_html_object_element *object, dom_string *archive);
+
+dom_exception dom_html_object_element_get_border(
+ dom_html_object_element *object, dom_string **border);
+
+dom_exception dom_html_object_element_set_border(
+ dom_html_object_element *object, dom_string *border);
+
+dom_exception dom_html_object_element_get_code_base(
+ dom_html_object_element *object, dom_string **code_base);
+
+dom_exception dom_html_object_element_set_code_base(
+ dom_html_object_element *object, dom_string *code_base);
+
+dom_exception dom_html_object_element_get_code_type(
+ dom_html_object_element *object, dom_string **code_type);
+
+dom_exception dom_html_object_element_set_code_type(
+ dom_html_object_element *object, dom_string *code_type);
+
+dom_exception dom_html_object_element_get_data(
+ dom_html_object_element *object, dom_string **data);
+
+dom_exception dom_html_object_element_set_data(
+ dom_html_object_element *object, dom_string *data);
+
+dom_exception dom_html_object_element_get_declare(
+ dom_html_object_element *ele, bool *declare);
+
+dom_exception dom_html_object_element_set_declare(
+ dom_html_object_element *ele, bool declare);
+
+dom_exception dom_html_object_element_get_height(
+ dom_html_object_element *object, dom_string **height);
+
+dom_exception dom_html_object_element_set_height(
+ dom_html_object_element *object, dom_string *height);
+
+dom_exception dom_html_object_element_get_name(
+ dom_html_object_element *object, dom_string **name);
+
+dom_exception dom_html_object_element_set_name(
+ dom_html_object_element *object, dom_string *name);
+
+dom_exception dom_html_object_element_get_standby(
+ dom_html_object_element *object, dom_string **standby);
+
+dom_exception dom_html_object_element_set_standby(
+ dom_html_object_element *object, dom_string *standby);
+
+dom_exception dom_html_object_element_get_type(
+ dom_html_object_element *object, dom_string **type);
+
+dom_exception dom_html_object_element_set_type(
+ dom_html_object_element *object, dom_string *type);
+
+dom_exception dom_html_object_element_get_use_map(
+ dom_html_object_element *object, dom_string **use_map);
+
+dom_exception dom_html_object_element_set_use_map(
+ dom_html_object_element *object, dom_string *use_map);
+
+dom_exception dom_html_object_element_get_width(
+ dom_html_object_element *object, dom_string **width);
+
+dom_exception dom_html_object_element_set_width(
+ dom_html_object_element *object, dom_string *width);
+
+dom_exception dom_html_object_element_get_hspace(
+ dom_html_object_element *object, int32_t *hspace);
+
+dom_exception dom_html_object_element_set_hspace(
+ dom_html_object_element *object, uint32_t hspace);
+
+dom_exception dom_html_object_element_get_tab_index(
+ dom_html_object_element *object, int32_t *tab_index);
+
+dom_exception dom_html_object_element_set_tab_index(
+ dom_html_object_element *object, uint32_t tab_index);
+
+dom_exception dom_html_object_element_get_vspace(
+ dom_html_object_element *object, int32_t *vspace);
+
+dom_exception dom_html_object_element_set_vspace(
+ dom_html_object_element *object, uint32_t vspace);
+
+dom_exception dom_html_object_element_get_content_document(
+ dom_html_object_element *object, dom_document **content_document);
+#endif
diff --git a/include/dom/html/html_olist_element.h b/include/dom/html/html_olist_element.h
index 2e182d5..3d1511e 100644
--- a/include/dom/html/html_olist_element.h
+++ b/include/dom/html/html_olist_element.h
@@ -3,5 +3,33 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_o_list_element_h_
+#define dom_html_o_list_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_o_list_element dom_html_o_list_element;
+
+dom_exception dom_html_o_list_element_get_compact(
+ dom_html_o_list_element *ele, bool *compact);
+
+dom_exception dom_html_o_list_element_set_compact(
+ dom_html_o_list_element *ele, bool compact);
+
+dom_exception dom_html_o_list_element_get_start(
+ dom_html_o_list_element *ele, int32_t *start);
+
+dom_exception dom_html_o_list_element_set_start(
+ dom_html_o_list_element *ele, uint32_t start);
+
+dom_exception dom_html_o_list_element_get_type(
+ dom_html_o_list_element *ele, dom_string **type);
+
+dom_exception dom_html_o_list_element_set_type(
+ dom_html_o_list_element *ele, dom_string *type);
+
+#endif
diff --git a/include/dom/html/html_option_element.h b/include/dom/html/html_option_element.h
index 53ba286..aa0d11c 100644
--- a/include/dom/html/html_option_element.h
+++ b/include/dom/html/html_option_element.h
@@ -28,7 +28,7 @@ dom_exception dom_html_option_element_get_text(
dom_html_option_element *option, dom_string **text);
dom_exception dom_html_option_element_get_index(
- dom_html_option_element *option, unsigned long *index);
+ dom_html_option_element *option, int32_t *index);
dom_exception dom_html_option_element_get_disabled(
dom_html_option_element *option, bool *disabled);
diff --git a/include/dom/html/html_paragraph_element.h b/include/dom/html/html_paragraph_element.h
index 2e182d5..c0e228a 100644
--- a/include/dom/html/html_paragraph_element.h
+++ b/include/dom/html/html_paragraph_element.h
@@ -3,5 +3,21 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_paragraph_element_h_
+#define dom_html_paragraph_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_paragraph_element dom_html_paragraph_element;
+
+dom_exception dom_html_paragraph_element_get_align(
+ dom_html_paragraph_element *element, dom_string **align);
+
+dom_exception dom_html_paragraph_element_set_align(
+ dom_html_paragraph_element *element, dom_string *align);
+
+#endif
diff --git a/include/dom/html/html_param_element.h b/include/dom/html/html_param_element.h
index 2e182d5..be12789 100644
--- a/include/dom/html/html_param_element.h
+++ b/include/dom/html/html_param_element.h
@@ -3,5 +3,39 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_param_element_h_
+#define dom_html_param_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_param_element dom_html_param_element;
+
+dom_exception dom_html_param_element_get_name(
+ dom_html_param_element *element, dom_string **name);
+
+dom_exception dom_html_param_element_set_name(
+ dom_html_param_element *element, dom_string *name);
+
+dom_exception dom_html_param_element_get_type(
+ dom_html_param_element *element, dom_string **type);
+
+dom_exception dom_html_param_element_set_type(
+ dom_html_param_element *ele, dom_string *type);
+
+dom_exception dom_html_param_element_get_value(
+ dom_html_param_element *ele, dom_string **value);
+
+dom_exception dom_html_param_element_set_value(
+ dom_html_param_element *ele, dom_string *value);
+
+dom_exception dom_html_param_element_get_value_type(
+ dom_html_param_element *ele, dom_string **value_type);
+
+dom_exception dom_html_param_element_set_value_type(
+ dom_html_param_element *ele, dom_string *value_type);
+
+#endif
diff --git a/include/dom/html/html_pre_element.h b/include/dom/html/html_pre_element.h
index 2e182d5..bd72701 100644
--- a/include/dom/html/html_pre_element.h
+++ b/include/dom/html/html_pre_element.h
@@ -3,5 +3,21 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_pre_element_h_
+#define dom_html_pre_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_pre_element dom_html_pre_element;
+
+dom_exception dom_html_pre_element_get_width(
+ dom_html_pre_element *element, int32_t *width);
+
+dom_exception dom_html_pre_element_set_width(
+ dom_html_pre_element *element, uint32_t width);
+
+#endif
diff --git a/include/dom/html/html_quote_element.h b/include/dom/html/html_quote_element.h
index 2e182d5..7d88eef 100644
--- a/include/dom/html/html_quote_element.h
+++ b/include/dom/html/html_quote_element.h
@@ -3,5 +3,21 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_quote_element_h_
+#define dom_html_quote_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_quote_element dom_html_quote_element;
+
+dom_exception dom_html_quote_element_get_cite(
+ dom_html_quote_element *element, dom_string **cite);
+
+dom_exception dom_html_quote_element_set_cite(
+ dom_html_quote_element *element, dom_string *cite);
+
+#endif
diff --git a/include/dom/html/html_script_element.h b/include/dom/html/html_script_element.h
index 2e182d5..b7df3aa 100644
--- a/include/dom/html/html_script_element.h
+++ b/include/dom/html/html_script_element.h
@@ -3,5 +3,57 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_script_element_h_
+#define dom_html_script_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_script_element dom_html_script_element;
+
+dom_exception dom_html_script_element_get_defer(
+ dom_html_script_element *ele, bool *defer);
+
+dom_exception dom_html_script_element_set_defer(
+ dom_html_script_element *ele, bool defer);
+
+dom_exception dom_html_script_element_get_text(
+ dom_html_script_element *element, dom_string **text);
+
+dom_exception dom_html_script_element_set_text(
+ dom_html_script_element *element, dom_string *text);
+
+dom_exception dom_html_script_element_get_html_for(
+ dom_html_script_element *element, dom_string **html_for);
+
+dom_exception dom_html_script_element_set_html_for(
+ dom_html_script_element *element, dom_string *html_for);
+
+dom_exception dom_html_script_element_get_event(
+ dom_html_script_element *element, dom_string **event);
+
+dom_exception dom_html_script_element_set_event(
+ dom_html_script_element *ele, dom_string *event);
+
+dom_exception dom_html_script_element_get_charset(
+ dom_html_script_element *ele, dom_string **charset);
+
+dom_exception dom_html_script_element_set_charset(
+ dom_html_script_element *ele, dom_string *charset);
+
+dom_exception dom_html_script_element_get_src(
+ dom_html_script_element *ele, dom_string **src);
+
+dom_exception dom_html_script_element_set_src(
+ dom_html_script_element *ele, dom_string *src);
+
+dom_exception dom_html_script_element_get_type(
+ dom_html_script_element *ele, dom_string **type);
+
+dom_exception dom_html_script_element_set_type(
+ dom_html_script_element *ele, dom_string *type);
+
+#endif
diff --git a/include/dom/html/html_style_element.h b/include/dom/html/html_style_element.h
index 868a043..5b3cd41 100644
--- a/include/dom/html/html_style_element.h
+++ b/include/dom/html/html_style_element.h
@@ -10,6 +10,7 @@
#include <stdbool.h>
#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
typedef struct dom_html_style_element dom_html_style_element;
@@ -19,5 +20,17 @@ dom_exception dom_html_style_element_get_disabled(dom_html_style_element *ele,
dom_exception dom_html_style_element_set_disabled(dom_html_style_element *ele,
bool disabled);
+dom_exception dom_html_style_element_get_media(dom_html_style_element *ele,
+ dom_string **media);
+
+dom_exception dom_html_style_element_set_media(dom_html_style_element *ele,
+ dom_string *media);
+
+dom_exception dom_html_style_element_get_type(dom_html_style_element *ele,
+ dom_string **type);
+
+dom_exception dom_html_style_element_set_type(dom_html_style_element *ele,
+ dom_string *type);
+
#endif
diff --git a/include/dom/html/html_table_element.h b/include/dom/html/html_table_element.h
index 2e182d5..6fcd7ed 100644
--- a/include/dom/html/html_table_element.h
+++ b/include/dom/html/html_table_element.h
@@ -3,5 +3,128 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_table_element_h_
+#define dom_html_table_element_h_
+
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+#include<dom/html/html_element.h>
+#include<dom/html/html_tablecaption_element.h>
+#include<dom/html/html_tablesection_element.h>
+#include<dom/html/html_tablerow_element.h>
+
+typedef struct dom_html_table_element dom_html_table_element;
+
+dom_exception dom_html_table_element_get_caption(
+ dom_html_table_element *element, dom_html_table_caption_element **caption);
+
+dom_exception dom_html_table_element_set_caption(
+ dom_html_table_element *element, dom_html_table_caption_element *caption);
+
+dom_exception dom_html_table_element_get_t_head(
+ dom_html_table_element *element, dom_html_table_section_element **t_head);
+
+dom_exception dom_html_table_element_set_t_head(
+ dom_html_table_element *element, dom_html_table_section_element *t_head);
+
+dom_exception dom_html_table_element_get_t_foot(
+ dom_html_table_element *element, dom_html_table_section_element **t_foot);
+
+dom_exception dom_html_table_element_set_t_foot(
+ dom_html_table_element *element, dom_html_table_section_element *t_foot);
+
+dom_exception dom_html_table_element_get_rows(
+ dom_html_table_element *element, dom_html_collection **rows);
+
+dom_exception dom_html_table_element_get_t_bodies(
+ dom_html_table_element *element, dom_html_collection **t_bodies);
+
+dom_exception dom_html_table_element_get_align(
+ dom_html_table_element *table, dom_string **align);
+
+dom_exception dom_html_table_element_set_align(
+ dom_html_table_element *table, dom_string *align);
+
+dom_exception dom_html_table_element_get_bg_color(
+ dom_html_table_element *table, dom_string **bg_color);
+
+dom_exception dom_html_table_element_set_bg_color(
+ dom_html_table_element *table, dom_string *bg_color);
+
+dom_exception dom_html_table_element_get_border(
+ dom_html_table_element *table, dom_string **border);
+
+dom_exception dom_html_table_element_set_border(
+ dom_html_table_element *table, dom_string *border);
+
+dom_exception dom_html_table_element_get_cell_padding(
+ dom_html_table_element *table, dom_string **cell_padding);
+
+dom_exception dom_html_table_element_set_cell_padding(
+ dom_html_table_element *table, dom_string *cell_padding);
+
+dom_exception dom_html_table_element_get_cell_spacing(
+ dom_html_table_element *table, dom_string **cell_spacing);
+
+dom_exception dom_html_table_element_set_cell_spacing(
+ dom_html_table_element *table, dom_string *cell_spacing);
+
+dom_exception dom_html_table_element_get_frame(
+ dom_html_table_element *table, dom_string **frame);
+
+dom_exception dom_html_table_element_set_frame(
+ dom_html_table_element *table, dom_string *frame);
+
+dom_exception dom_html_table_element_get_rules(
+ dom_html_table_element *table, dom_string **rules);
+
+dom_exception dom_html_table_element_set_rules(
+ dom_html_table_element *table, dom_string *rules);
+
+dom_exception dom_html_table_element_get_summary(
+ dom_html_table_element *table, dom_string **summary);
+
+dom_exception dom_html_table_element_set_summary(
+ dom_html_table_element *table, dom_string *summary);
+
+dom_exception dom_html_table_element_get_width(
+ dom_html_table_element *table, dom_string **width);
+
+dom_exception dom_html_table_element_set_width(
+ dom_html_table_element *table, dom_string *width);
+
+dom_exception dom_html_table_element_create_caption(
+ dom_html_table_element *element,
+ dom_html_element **caption);
+
+dom_exception dom_html_table_element_delete_caption(
+ dom_html_table_element *element);
+
+dom_exception dom_html_table_element_create_t_head(
+ dom_html_table_element *element,
+ dom_html_element **t_head);
+
+dom_exception dom_html_table_element_delete_t_head(
+ dom_html_table_element *element);
+
+dom_exception dom_html_table_element_create_t_foot(
+ dom_html_table_element *element,
+ dom_html_element **t_foot);
+
+dom_exception dom_html_table_element_delete_t_foot(
+ dom_html_table_element *element);
+
+dom_exception dom_html_table_element_insert_row(
+ dom_html_table_element *element,
+ int32_t index, dom_html_element **row);
+
+dom_exception dom_html_table_element_delete_row(
+ dom_html_table_element *element,
+ int32_t index);
+
+#endif
diff --git a/include/dom/html/html_tablecaption_element.h b/include/dom/html/html_tablecaption_element.h
index 2e182d5..412efae 100644
--- a/include/dom/html/html_tablecaption_element.h
+++ b/include/dom/html/html_tablecaption_element.h
@@ -3,5 +3,21 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_table_caption_element_h_
+#define dom_html_table_caption_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_table_caption_element dom_html_table_caption_element;
+
+dom_exception dom_html_table_caption_element_get_align(
+ dom_html_table_caption_element *element, dom_string **align);
+
+dom_exception dom_html_table_caption_element_set_align(
+ dom_html_table_caption_element *element, dom_string *align);
+
+#endif
diff --git a/include/dom/html/html_tablecell_element.h b/include/dom/html/html_tablecell_element.h
index 2e182d5..938d148 100644
--- a/include/dom/html/html_tablecell_element.h
+++ b/include/dom/html/html_tablecell_element.h
@@ -3,5 +3,104 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1bg_colorr99@gmail.com>
*/
+#ifndef dom_html_table_cell_element_h_
+#define dom_html_table_cell_element_h_
+
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_table_cell_element dom_html_table_cell_element;
+
+dom_exception dom_html_table_cell_element_get_cell_index(
+ dom_html_table_cell_element *table_cell, int32_t *cell_index);
+
+dom_exception dom_html_table_cell_element_get_abbr(
+ dom_html_table_cell_element *table_cell, dom_string **abbr);
+
+dom_exception dom_html_table_cell_element_set_abbr(
+ dom_html_table_cell_element *table_cell, dom_string *abbr);
+
+dom_exception dom_html_table_cell_element_get_align(
+ dom_html_table_cell_element *table_cell, dom_string **align);
+
+dom_exception dom_html_table_cell_element_set_align(
+ dom_html_table_cell_element *table_cell, dom_string *align);
+
+dom_exception dom_html_table_cell_element_get_axis(
+ dom_html_table_cell_element *table_cell, dom_string **axis);
+
+dom_exception dom_html_table_cell_element_set_axis(
+ dom_html_table_cell_element *table_cell, dom_string *axis);
+
+dom_exception dom_html_table_cell_element_get_bg_color(
+ dom_html_table_cell_element *table_cell, dom_string **bg_color);
+
+dom_exception dom_html_table_cell_element_set_bg_color(
+ dom_html_table_cell_element *table_cell, dom_string *bg_color);
+
+dom_exception dom_html_table_cell_element_get_ch(
+ dom_html_table_cell_element *table_cell, dom_string **ch);
+
+dom_exception dom_html_table_cell_element_set_ch(
+ dom_html_table_cell_element *table_cell, dom_string *ch);
+
+dom_exception dom_html_table_cell_element_get_ch_off(
+ dom_html_table_cell_element *table_cell, dom_string **ch_off);
+
+dom_exception dom_html_table_cell_element_set_ch_off(
+ dom_html_table_cell_element *table_cell, dom_string *ch_off);
+
+dom_exception dom_html_table_cell_element_get_headers(
+ dom_html_table_cell_element *table_cell, dom_string **headers);
+
+dom_exception dom_html_table_cell_element_set_headers(
+ dom_html_table_cell_element *table_cell, dom_string *headers);
+
+dom_exception dom_html_table_cell_element_get_height(
+ dom_html_table_cell_element *table_cell, dom_string **height);
+
+dom_exception dom_html_table_cell_element_set_height(
+ dom_html_table_cell_element *table_cell, dom_string *height);
+
+dom_exception dom_html_table_cell_element_get_scope(
+ dom_html_table_cell_element *table_cell, dom_string **scope);
+
+dom_exception dom_html_table_cell_element_set_scope(
+ dom_html_table_cell_element *table_cell, dom_string *scope);
+
+dom_exception dom_html_table_cell_element_get_v_align(
+ dom_html_table_cell_element *table_cell, dom_string **v_align);
+
+dom_exception dom_html_table_cell_element_set_v_align(
+ dom_html_table_cell_element *table_cell, dom_string *v_align);
+
+dom_exception dom_html_table_cell_element_get_width(
+ dom_html_table_cell_element *table_cell, dom_string **width);
+
+dom_exception dom_html_table_cell_element_set_width(
+ dom_html_table_cell_element *table_cell, dom_string *width);
+
+dom_exception dom_html_table_cell_element_get_col_span(
+ dom_html_table_cell_element *table_cell, int32_t *col_span);
+
+dom_exception dom_html_table_cell_element_set_col_span(
+ dom_html_table_cell_element *table_cell, uint32_t col_span);
+
+dom_exception dom_html_table_cell_element_get_row_span(
+ dom_html_table_cell_element *table_cell, int32_t *row_span);
+
+dom_exception dom_html_table_cell_element_set_row_span(
+ dom_html_table_cell_element *table_cell, uint32_t row_span);
+
+dom_exception dom_html_table_cell_element_get_no_wrap(
+ dom_html_table_cell_element *ele, bool *no_wrap);
+
+dom_exception dom_html_table_cell_element_set_no_wrap(
+ dom_html_table_cell_element *ele, bool no_wrap);
+
+#endif
+
diff --git a/include/dom/html/html_tablecol_element.h b/include/dom/html/html_tablecol_element.h
index 2e182d5..56865a9 100644
--- a/include/dom/html/html_tablecol_element.h
+++ b/include/dom/html/html_tablecol_element.h
@@ -3,5 +3,53 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1v_alignr99@gmail.com>
*/
+#ifndef dom_html_table_col_element_h_
+#define dom_html_table_col_element_h_
+
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_table_col_element dom_html_table_col_element;
+
+dom_exception dom_html_table_col_element_get_align(
+ dom_html_table_col_element *table_col, dom_string **align);
+
+dom_exception dom_html_table_col_element_set_align(
+ dom_html_table_col_element *table_col, dom_string *align);
+
+dom_exception dom_html_table_col_element_get_ch(
+ dom_html_table_col_element *table_col, dom_string **ch);
+
+dom_exception dom_html_table_col_element_set_ch(
+ dom_html_table_col_element *table_col, dom_string *ch);
+
+dom_exception dom_html_table_col_element_get_ch_off(
+ dom_html_table_col_element *table_col, dom_string **ch_off);
+
+dom_exception dom_html_table_col_element_set_ch_off(
+ dom_html_table_col_element *table_col, dom_string *ch_off);
+
+dom_exception dom_html_table_col_element_get_v_align(
+ dom_html_table_col_element *table_col, dom_string **v_align);
+
+dom_exception dom_html_table_col_element_set_v_align(
+ dom_html_table_col_element *table_col, dom_string *v_align);
+
+dom_exception dom_html_table_col_element_get_width(
+ dom_html_table_col_element *table_col, dom_string **width);
+
+dom_exception dom_html_table_col_element_set_width(
+ dom_html_table_col_element *table_col, dom_string *width);
+
+dom_exception dom_html_table_col_element_get_span(
+ dom_html_table_col_element *table_col, int32_t *span);
+
+dom_exception dom_html_table_col_element_set_span(
+ dom_html_table_col_element *table_col, uint32_t span);
+
+#endif
+
diff --git a/include/dom/html/html_tablerow_element.h b/include/dom/html/html_tablerow_element.h
index 2e182d5..897e243 100644
--- a/include/dom/html/html_tablerow_element.h
+++ b/include/dom/html/html_tablerow_element.h
@@ -3,5 +3,67 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_table_row_element_h_
+#define dom_html_table_row_element_h_
+
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+#include<dom/html/html_element.h>
+#include<dom/html/html_collection.h>
+
+typedef struct dom_html_table_row_element dom_html_table_row_element;
+
+dom_exception dom_html_table_row_element_get_align(
+ dom_html_table_row_element *table, dom_string **align);
+
+dom_exception dom_html_table_row_element_set_align(
+ dom_html_table_row_element *table, dom_string *align);
+
+dom_exception dom_html_table_row_element_get_bg_color(
+ dom_html_table_row_element *table, dom_string **bg_color);
+
+dom_exception dom_html_table_row_element_set_bg_color(
+ dom_html_table_row_element *table, dom_string *bg_color);
+
+dom_exception dom_html_table_row_element_get_ch(
+ dom_html_table_row_element *table, dom_string **ch);
+
+dom_exception dom_html_table_row_element_set_ch(
+ dom_html_table_row_element *table, dom_string *ch);
+
+dom_exception dom_html_table_row_element_get_ch_off(
+ dom_html_table_row_element *table, dom_string **ch_off);
+
+dom_exception dom_html_table_row_element_set_ch_off(
+ dom_html_table_row_element *table, dom_string *ch_off);
+
+dom_exception dom_html_table_row_element_get_v_align(
+ dom_html_table_row_element *table, dom_string **v_align);
+
+dom_exception dom_html_table_row_element_set_v_align(
+ dom_html_table_row_element *table, dom_string *v_align);
+
+dom_exception dom_html_table_row_element_get_row_index(
+ dom_html_table_row_element *table, int32_t *index);
+
+dom_exception dom_html_table_row_element_get_section_row_index(
+ dom_html_table_row_element *table_row, int32_t *section_row_index);
+
+dom_exception dom_html_table_row_element_get_cells(
+ dom_html_table_row_element *element,
+ dom_html_collection **cells);
+
+dom_exception dom_html_table_row_element_delete_cell(
+ dom_html_table_row_element *element,
+ int32_t index);
+
+dom_exception dom_html_table_row_element_insert_cell(
+ dom_html_table_row_element *element,
+ int32_t index, dom_html_element **cell);
+
+#endif
diff --git a/include/dom/html/html_tablesection_element.h b/include/dom/html/html_tablesection_element.h
index 2e182d5..bceec18 100644
--- a/include/dom/html/html_tablesection_element.h
+++ b/include/dom/html/html_tablesection_element.h
@@ -3,5 +3,57 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1v_alignr99@gmail.com>
*/
+#ifndef dom_html_table_section_element_h_
+#define dom_html_table_section_element_h_
+
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+#include <dom/html/html_collection.h>
+#include <dom/html/html_element.h>
+
+#include <dom/html/html_tablerow_element.h>
+
+typedef struct dom_html_table_section_element dom_html_table_section_element;
+
+dom_exception dom_html_table_section_element_get_align(
+ dom_html_table_section_element *table_section, dom_string **align);
+
+dom_exception dom_html_table_section_element_set_align(
+ dom_html_table_section_element *table_section, dom_string *align);
+
+dom_exception dom_html_table_section_element_get_ch(
+ dom_html_table_section_element *table_section, dom_string **ch);
+
+dom_exception dom_html_table_section_element_set_ch(
+ dom_html_table_section_element *table_section, dom_string *ch);
+
+dom_exception dom_html_table_section_element_get_ch_off(
+ dom_html_table_section_element *table_section, dom_string **ch_off);
+
+dom_exception dom_html_table_section_element_set_ch_off(
+ dom_html_table_section_element *table_section, dom_string *ch_off);
+
+dom_exception dom_html_table_section_element_get_v_align(
+ dom_html_table_section_element *table_section, dom_string **v_align);
+
+dom_exception dom_html_table_section_element_set_v_align(
+ dom_html_table_section_element *table_section, dom_string *v_align);
+
+dom_exception dom_html_table_section_element_get_rows(
+ dom_html_table_section_element *table_section, dom_html_collection **rows);
+
+dom_exception dom_html_table_section_element_insert_row(
+ dom_html_table_section_element *element,
+ int32_t index, dom_html_element **new_row);
+
+dom_exception dom_html_table_section_element_delete_row(
+ dom_html_table_section_element *element,
+ int32_t index);
+
+#endif
+
diff --git a/include/dom/html/html_ulist_element.h b/include/dom/html/html_ulist_element.h
index 2e182d5..c5daa6a 100644
--- a/include/dom/html/html_ulist_element.h
+++ b/include/dom/html/html_ulist_element.h
@@ -3,5 +3,27 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_html_u_list_element_h_
+#define dom_html_u_list_element_h_
+#include <stdbool.h>
+#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
+
+typedef struct dom_html_u_list_element dom_html_u_list_element;
+
+dom_exception dom_html_u_list_element_get_compact(
+ dom_html_u_list_element *ele, bool *compact);
+
+dom_exception dom_html_u_list_element_set_compact(
+ dom_html_u_list_element *ele, bool compact);
+
+dom_exception dom_html_u_list_element_get_type(
+ dom_html_u_list_element *ele, dom_string **type);
+
+dom_exception dom_html_u_list_element_set_type(
+ dom_html_u_list_element *ele, dom_string *type);
+
+#endif
diff --git a/src/html/Makefile b/src/html/Makefile
index 5226b53..c98ce9a 100644
--- a/src/html/Makefile
+++ b/src/html/Makefile
@@ -3,24 +3,23 @@ DIR_SOURCES := \
html_document.c html_collection.c html_options_collection.c \
html_element.c html_html_element.c html_head_element.c \
html_link_element.c html_title_element.c html_meta_element.c \
- html_base_element.c html_isindex_element.c html_style_element.c \
+ html_base_element.c html_style_element.c \
html_body_element.c html_form_element.c html_select_element.c \
html_button_element.c html_input_element.c html_text_area_element.c \
- html_opt_group_element.c html_option_element.c html_hr_element.c
+ html_opt_group_element.c html_option_element.c html_hr_element.c \
+ html_dlist_element.c html_directory_element.c html_menu_element.c \
+ html_fieldset_element.c html_legend_element.c html_div_element.c \
+ html_paragraph_element.c html_heading_element.c html_quote_element.c \
+ html_pre_element.c html_br_element.c html_label_element.c \
+ html_ulist_element.c html_olist_element.c html_li_element.c \
+ html_font_element.c html_mod_element.c html_anchor_element.c \
+ html_basefont_element.c html_image_element.c html_object_element.c \
+ html_param_element.c html_applet_element.c html_area_element.c \
+ html_map_element.c html_script_element.c html_tablecaption_element.c \
+ html_tablecell_element.c html_tablecol_element.c html_tablesection_element.c \
+ html_table_element.c html_tablerow_element.c html_frameset_element.c \
+ html_frame_element.c html_iframe_element.c html_isindex_element.c \
UNINMPLEMENTED_SOURCES := \
- html_label_element.c html_fieldset_element.c \
- html_legend_element.c html_ulist_element.c html_olist_element.c \
- html_dlist_element.c html_directory_element.c html_menu_element.c \
- html_li_element.c html_div_element.c html_paragraph_element.c \
- html_heading_element.c html_quote_element.c html_pre_element.c \
- html_br_element.c html_basefont_element.c html_font_element.c \
- html_mod_element.c html_anchor_element.c \
- html_image_element.c html_object_element.c html_param_element.c \
- html_applet_element.c html_map_element.c html_area_element.c \
- html_script_element.c html_table_element.c html_tablecaption_element.c \
- html_tablecol_element.c html_tablesection_element.c html_tablerow_element.c \
- html_tablecell_element.c html_frameset_element.c html_frame_element.c \
- html_iframe_element.c
include $(NSBUILD)/Makefile.subdir
diff --git a/src/html/TODO b/src/html/TODO
index 37ade2c..b55a6d7 100644
--- a/src/html/TODO
+++ b/src/html/TODO
@@ -4,54 +4,54 @@ as far as the test suite is concerned.
HTMLElement html_element DONE
HTMLHtmlElement html_html_element DONE
HTMLHeadElement html_head_element DONE
-HTMLLinkElement html_link_element MISSING
+HTMLLinkElement html_link_element DONE
HTMLTitleElement html_title_element DONE
-HTMLMetaElement html_meta_element MISSING
-HTMLBaseElement html_base_element MISSING
+HTMLMetaElement html_meta_element DONE
+HTMLBaseElement html_base_element DONE
HTMLIsIndexElement html_isindex_element MISSING
-HTMLStyleElement html_style_element MISSING
-HTMLBodyElement html_body_element MISSING
+HTMLStyleElement html_style_element DONE
+HTMLBodyElement html_body_element DONE
HTMLFormElement html_form_element DONE
-HTMLSelectElement html_select_element MISSING
-HTMLOptGroupElement html_optgroup_element MISSING
-HTMLOptionElement html_option_element MISSING
-HTMLInputElement html_input_element MISSING
-HTMLTextAreaElement html_textarea_element MISSING
-HTMLButtonElement html_button_element MISSING
-HTMLLabelElement html_label_element MISSING
-HTMLFieldSetElement html_fieldset_element MISSING
-HTMLLegendElement html_legend_element MISSING
-HTMLUListElement html_ulist_element MISSING
-HTMLOListElement html_olist_element MISSING
-HTMLDListElement html_dlist_element MISSING
-HTMLDirectoryElement html_directory_element MISSING
-HTMLMenuElement html_menu_element MISSING
-HTMLLIElement html_li_element MISSING
-HTMLBlockquoteElement html_blockquote_element MISSING
-HTMLDivElement html_div_element MISSING
-HTMLParagraphElement html_paragraph_element MISSING
-HTMLHeadingElement html_heading_element MISSING
-HTMLQuoteElement html_quote_element MISSING
-HTMLPreElement html_pre_element MISSING
-HTMLBRElement html_br_element MISSING
-HTMLBaseFontElement html_basefont_element MISSING
-HTMLFontElement html_font_element MISSING
+HTMLSelectElement html_select_element DONE
+HTMLOptGroupElement html_optgroup_element DONE
+HTMLOptionElement html_option_element DONE
+HTMLInputElement html_input_element DONE
+HTMLTextAreaElement html_textarea_element DONE
+HTMLButtonElement html_button_element DONE
+HTMLLabelElement html_label_element DONE
+HTMLFieldSetElement html_fieldset_element DONE
+HTMLLegendElement html_legend_element DONE
+HTMLUListElement html_ulist_element DONE
+HTMLOListElement html_olist_element DONE
+HTMLDListElement html_dlist_element DONE
+HTMLDirectoryElement html_directory_element DONE
+HTMLMenuElement html_menu_element DONE
+HTMLLIElement html_li_element DONE
+HTMLBlockquoteElement html_blockquote_element DONE
+HTMLDivElement html_div_element DONE
+HTMLParagraphElement html_paragraph_element DONE
+HTMLHeadingElement html_heading_element DONE
+HTMLQuoteElement html_quote_element DONE
+HTMLPreElement html_pre_element DONE
+HTMLBRElement html_br_element DONE
+HTMLBaseFontElement html_basefont_element DONE
+HTMLFontElement html_font_element DONE
HTMLHRElement html_hr_element DONE
-HTMLModElement html_mod_element MISSING
-HTMLAnchorElement html_anchor_element MISSING
-HTMLImageElement html_image_element MISSING
-HTMLObjectElement html_object_element MISSING
-HTMLParamElement html_param_element MISSING
-HTMLAppletElement html_applet_element MISSING
-HTMLMapElement html_map_element MISSING
-HTMLAreaElement html_area_element MISSING
-HTMLScriptElement html_script_element MISSING
-HTMLTableElement html_table_element MISSING
-HTMLTableCaptionElement html_tablecaption_element MISSING
-HTMLTableColElement html_tablecol_element MISSING
-HTMLTableSectionElement html_tablesection_element MISSING
-HTMLTableRowElement html_tablerow_element MISSING
-HTMLTableCellElement html_tablecell_element MISSING
+HTMLModElement html_mod_element DONE
+HTMLAnchorElement html_anchor_element DONE
+HTMLImageElement html_image_element DONE
+HTMLObjectElement html_object_element DONE
+HTMLParamElement html_param_element DONE
+HTMLAppletElement html_applet_element DONE
+HTMLMapElement html_map_element DONE
+HTMLAreaElement html_area_element DONE
+HTMLScriptElement html_script_element DONE
+HTMLTableElement html_table_element DONE
+HTMLTableCaptionElement html_tablecaption_element DONE
+HTMLTableColElement html_tablecol_element DONE
+HTMLTableSectionElement html_tablesection_element DONE
+HTMLTableRowElement html_tablerow_element DONE
+HTMLTableCellElement html_tablecell_element DONE
HTMLFrameSetElement html_frameset_element MISSING
HTMLFrameElement html_frame_element MISSING
HTMLIFrameElement html_iframe_element MISSING
diff --git a/src/html/html_anchor_element.c b/src/html/html_anchor_element.c
index 2e182d5..77f8cef 100644
--- a/src/html/html_anchor_element.c
+++ b/src/html/html_anchor_element.c
@@ -3,5 +3,225 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_anchor_element.h>
+
+#include "html/html_document.h"
+#include "html/html_anchor_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_ANCHOR_ELEMENT
+ },
+ DOM_HTML_ANCHOR_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_anchor_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_anchor_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_anchor_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_anchor_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_anchor_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_anchor_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_anchor_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_anchor_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_anchor_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_A],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_anchor_element object
+ *
+ * \param ele The dom_html_anchor_element object
+ */
+void _dom_html_anchor_element_finalise(struct dom_html_anchor_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_anchor_element object
+ *
+ * \param ele The dom_html_anchor_element object
+ */
+void _dom_html_anchor_element_destroy(struct dom_html_anchor_element *ele)
+{
+ _dom_html_anchor_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_anchor_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_anchor_element_destroy(dom_node_internal *node)
+{
+ _dom_html_anchor_element_destroy((struct dom_html_anchor_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_anchor_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_anchor_element_get_##attr( \
+ dom_html_anchor_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_anchor_element_set_##attr( \
+ dom_html_anchor_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(access_key);
+SIMPLE_GET_SET(charset);
+SIMPLE_GET_SET(coords);
+SIMPLE_GET_SET(href);
+SIMPLE_GET_SET(hreflang);
+SIMPLE_GET_SET(name);
+SIMPLE_GET_SET(rel);
+SIMPLE_GET_SET(rev);
+SIMPLE_GET_SET(shape);
+SIMPLE_GET_SET(target);
+SIMPLE_GET_SET(type);
+
+dom_exception dom_html_anchor_element_get_tab_index(
+ dom_html_anchor_element *anchor, int32_t *tab_index)
+{
+ return dom_html_element_get_int32_t_property(&anchor->base, "tabindex",
+ SLEN("tabindex"), tab_index);
+}
+
+dom_exception dom_html_anchor_element_set_tab_index(
+ dom_html_anchor_element *anchor, uint32_t tab_index)
+{
+ return dom_html_element_set_int32_t_property(&anchor->base, "tabindex",
+ SLEN("tabindex"), tab_index);
+}
+
+
+/**
+ * Blur this control
+ *
+ * \param ele The form object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_anchor_element_blur(dom_html_anchor_element *ele)
+{
+ struct dom_html_document *doc =
+ (dom_html_document *) dom_node_get_owner(ele);
+ bool success = false;
+ assert(doc != NULL);
+
+ /* This event does not bubble & is non-cancelable. Mentioned in w3 specs. More research is needed to prove why. */
+ return _dom_dispatch_generic_event((dom_document *) doc,
+ (dom_event_target *) ele,
+ doc->memoised[hds_blur], false,
+ false, &success);
+}
+
+/**
+ * Focus this control
+ *
+ * \param ele The form object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_anchor_element_focus(dom_html_anchor_element *ele)
+{
+ struct dom_html_document *doc =
+ (dom_html_document *) dom_node_get_owner(ele);
+ bool success = false;
+ assert(doc != NULL);
+
+ /* This event does not bubble & is non-cancelable. Mentioned in w3 specs. More research is needed to prove why. */
+ return _dom_dispatch_generic_event((dom_document *)doc,
+ (dom_event_target *) ele,
+ doc->memoised[hds_focus], false,
+ false, &success);
+}
+
diff --git a/src/html/html_anchor_element.h b/src/html/html_anchor_element.h
index 2e182d5..a9f5b5b 100644
--- a/src/html/html_anchor_element.h
+++ b/src/html/html_anchor_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_anchor_element_h_
+#define dom_internal_html_anchor_element_h_
+
+#include <dom/html/html_anchor_element.h>
+
+#include "html/html_element.h"
+
+struct dom_html_anchor_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_anchor_element object */
+dom_exception _dom_html_anchor_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_anchor_element **ele);
+
+/* Initialise a dom_html_anchor_element object */
+dom_exception _dom_html_anchor_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_anchor_element *ele);
+
+/* Finalise a dom_html_anchor_element object */
+void _dom_html_anchor_element_finalise(struct dom_html_anchor_element *ele);
+
+/* Destroy a dom_html_anchor_element object */
+void _dom_html_anchor_element_destroy(struct dom_html_anchor_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_anchor_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_anchor_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_anchor_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_ANCHOR_ELEMENT_PROTECT_VTABLE \
+ _dom_html_anchor_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_ANCHOR_ELEMENT \
+ _dom_virtual_html_anchor_element_destroy, \
+ _dom_html_anchor_element_copy
+
+#endif
diff --git a/src/html/html_applet_element.c b/src/html/html_applet_element.c
index 2e182d5..9f6c16f 100644
--- a/src/html/html_applet_element.c
+++ b/src/html/html_applet_element.c
@@ -3,5 +3,196 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_applet_element.h>
+
+#include "html/html_document.h"
+#include "html/html_applet_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_APPLET_ELEMENT
+ },
+ DOM_HTML_APPLET_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_applet_element applet
+ *
+ * \param doc The document applet
+ * \param ele The returned element applet
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_applet_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_applet_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_applet_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_applet_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_applet_element applet
+ *
+ * \param doc The document applet
+ * \param ele The dom_html_applet_element applet
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_applet_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_applet_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_APPLET],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_applet_element applet
+ *
+ * \param ele The dom_html_applet_element applet
+ */
+void _dom_html_applet_element_finalise(struct dom_html_applet_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_applet_element applet
+ *
+ * \param ele The dom_html_applet_element applet
+ */
+void _dom_html_applet_element_destroy(struct dom_html_applet_element *ele)
+{
+ _dom_html_applet_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_applet_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_applet_element_destroy(dom_node_internal *node)
+{
+ _dom_html_applet_element_destroy((struct dom_html_applet_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_applet_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_applet_element_get_##attr( \
+ dom_html_applet_element *element, \
+ dom_string **attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_applet_element_set_##attr( \
+ dom_html_applet_element *element, \
+ dom_string *attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(align);
+SIMPLE_GET_SET(alt);
+SIMPLE_GET_SET(archive);
+SIMPLE_GET_SET(code);
+SIMPLE_GET_SET(code_base);
+SIMPLE_GET_SET(height);
+SIMPLE_GET_SET(name);
+SIMPLE_GET_SET(object);
+SIMPLE_GET_SET(width);
+
+dom_exception dom_html_applet_element_get_hspace(
+ dom_html_applet_element *applet, int32_t *hspace)
+{
+ return dom_html_element_get_int32_t_property(&applet->base, "hspace",
+ SLEN("hspace"), hspace);
+}
+
+dom_exception dom_html_applet_element_set_hspace(
+ dom_html_applet_element *applet, uint32_t hspace)
+{
+ return dom_html_element_set_int32_t_property(&applet->base, "hspace",
+ SLEN("hspace"), hspace);
+}
+
+dom_exception dom_html_applet_element_get_vspace(
+ dom_html_applet_element *applet, int32_t *vspace)
+{
+ return dom_html_element_get_int32_t_property(&applet->base, "vspace",
+ SLEN("vspace"), vspace);
+}
+
+dom_exception dom_html_applet_element_set_vspace(
+ dom_html_applet_element *applet, uint32_t vspace)
+{
+ return dom_html_element_set_int32_t_property(&applet->base, "vspace",
+ SLEN("vspace"), vspace);
+}
+
diff --git a/src/html/html_applet_element.h b/src/html/html_applet_element.h
index 2e182d5..21e6d7a 100644
--- a/src/html/html_applet_element.h
+++ b/src/html/html_applet_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_applet_element_h_
+#define dom_internal_html_applet_element_h_
+
+#include <dom/html/html_applet_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_applet_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_applet_element object */
+dom_exception _dom_html_applet_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_applet_element **ele);
+
+/* Initialise a dom_html_applet_element object */
+dom_exception _dom_html_applet_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_applet_element *ele);
+
+/* Finalise a dom_html_applet_element object */
+void _dom_html_applet_element_finalise(struct dom_html_applet_element *ele);
+
+/* Destroy a dom_html_applet_element object */
+void _dom_html_applet_element_destroy(struct dom_html_applet_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_applet_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_applet_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_applet_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_APPLET_ELEMENT_PROTECT_VTABLE \
+ _dom_html_applet_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_APPLET_ELEMENT \
+ _dom_virtual_html_applet_element_destroy, \
+ _dom_html_applet_element_copy
+
+#endif
diff --git a/src/html/html_area_element.c b/src/html/html_area_element.c
index 2e182d5..85a2a3e 100644
--- a/src/html/html_area_element.c
+++ b/src/html/html_area_element.c
@@ -3,5 +3,220 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_area_element.h>
+
+#include "html/html_document.h"
+#include "html/html_area_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_AREA_ELEMENT
+ },
+ DOM_HTML_AREA_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_area_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_area_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_area_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_area_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_area_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_area_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_area_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_area_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_area_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_AREA],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_area_element object
+ *
+ * \param ele The dom_html_area_element object
+ */
+void _dom_html_area_element_finalise(struct dom_html_area_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_area_element object
+ *
+ * \param ele The dom_html_area_element object
+ */
+void _dom_html_area_element_destroy(struct dom_html_area_element *ele)
+{
+ _dom_html_area_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the no_href property
+ *
+ * \param ele The dom_html_area_element object
+ * \param no_href The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_area_element_get_no_href(dom_html_area_element *ele,
+ bool *no_href)
+{
+ return dom_html_element_get_bool_property(&ele->base, "nohref",
+ SLEN("nohref"), no_href);
+}
+
+/**
+ * Set the no_href property
+ *
+ * \param ele The dom_html_area_element object
+ * \param no_href The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_area_element_set_no_href(dom_html_area_element *ele,
+ bool no_href)
+{
+ return dom_html_element_set_bool_property(&ele->base, "nohref",
+ SLEN("nohref"), no_href);
+}
+
+/**
+ * Set the tab_index property
+ *
+ * \param ele The dom_html_area_element object
+ * \param no_href The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_area_element_get_tab_index(
+ dom_html_area_element *area, int32_t *tab_index)
+{
+ return dom_html_element_get_int32_t_property(&area->base, "tabindex",
+ SLEN("tabindex"), tab_index);
+}
+
+/**
+ * Set the tab_index property
+ *
+ * \param ele The dom_html_area_element object
+ * \param no_href The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_area_element_set_tab_index(
+ dom_html_area_element *area, uint32_t tab_index)
+{
+ return dom_html_element_set_int32_t_property(&area->base, "tabindex",
+ SLEN("tabindex"), tab_index);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_area_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_area_element_destroy(dom_node_internal *node)
+{
+ _dom_html_area_element_destroy((struct dom_html_area_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_area_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_area_element_get_##attr( \
+ dom_html_area_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_area_element_set_##attr( \
+ dom_html_area_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(access_key);
+SIMPLE_GET_SET(alt);
+SIMPLE_GET_SET(coords);
+SIMPLE_GET_SET(href);
+SIMPLE_GET_SET(shape);
+SIMPLE_GET_SET(target);
diff --git a/src/html/html_area_element.h b/src/html/html_area_element.h
index 2e182d5..a45d1df 100644
--- a/src/html/html_area_element.h
+++ b/src/html/html_area_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_area_element_h_
+#define dom_internal_html_area_element_h_
+
+#include <dom/html/html_area_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_area_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_area_element object */
+dom_exception _dom_html_area_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_area_element **ele);
+
+/* Initialise a dom_html_area_element object */
+dom_exception _dom_html_area_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_area_element *ele);
+
+/* Finalise a dom_html_area_element object */
+void _dom_html_area_element_finalise(struct dom_html_area_element *ele);
+
+/* Destroy a dom_html_area_element object */
+void _dom_html_area_element_destroy(struct dom_html_area_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_area_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_area_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_area_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_AREA_ELEMENT_PROTECT_VTABLE \
+ _dom_html_area_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_AREA_ELEMENT \
+ _dom_virtual_html_area_element_destroy, \
+ _dom_html_area_element_copy
+
+#endif
diff --git a/src/html/html_base_element.c b/src/html/html_base_element.c
index 150ef37..6be8e3a 100644
--- a/src/html/html_base_element.c
+++ b/src/html/html_base_element.c
@@ -7,6 +7,7 @@
#include <stdlib.h>
+#include "html/html_document.h"
#include "html/html_base_element.h"
#include "core/node.h"
@@ -118,3 +119,45 @@ dom_exception _dom_html_base_element_copy(dom_node_internal *old,
return _dom_html_element_copy(old, copy);
}
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_base_element_get_##attr( \
+ dom_html_base_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_base_element_set_##attr( \
+ dom_html_base_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(href);
+SIMPLE_GET_SET(target);
diff --git a/src/html/html_basefont_element.c b/src/html/html_basefont_element.c
index 2e182d5..7aa20a0 100644
--- a/src/html/html_basefont_element.c
+++ b/src/html/html_basefont_element.c
@@ -3,5 +3,182 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+#include <dom/html/html_basefont_element.h>
+
+#include "html/html_document.h"
+#include "html/html_basefont_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_BASE_FONT_ELEMENT
+ },
+ DOM_HTML_BASE_FONT_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_base_font_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_base_font_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_base_font_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_base_font_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_base_font_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_base_font_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_base_font_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_base_font_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_base_font_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_BASEFONT],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_base_font_element object
+ *
+ * \param ele The dom_html_base_font_element object
+ */
+void _dom_html_base_font_element_finalise(struct dom_html_base_font_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_base_font_element object
+ *
+ * \param ele The dom_html_base_font_element object
+ */
+void _dom_html_base_font_element_destroy(struct dom_html_base_font_element *ele)
+{
+ _dom_html_base_font_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the width Property
+ *
+ * \param base_font The dom_html_base_font_element object
+ */
+dom_exception dom_html_base_font_element_get_size(
+ dom_html_base_font_element *base_font, int32_t *size)
+{
+ return dom_html_element_get_int32_t_property(&base_font->base, "size",
+ SLEN("size"), size);
+}
+
+/**
+ * Set the width Property
+ *
+ * \param base_font The dom_html_base_font_element object
+ */
+dom_exception dom_html_base_font_element_set_size(
+ dom_html_base_font_element *base_font, uint32_t size)
+{
+ return dom_html_element_set_int32_t_property(&base_font->base, "size",
+ SLEN("size"), size);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_base_font_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_base_font_element_destroy(dom_node_internal *node)
+{
+ _dom_html_base_font_element_destroy((struct dom_html_base_font_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_base_font_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_base_font_element_get_##attr( \
+ dom_html_base_font_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_base_font_element_set_##attr( \
+ dom_html_base_font_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+SIMPLE_GET_SET(color);
+SIMPLE_GET_SET(face);
diff --git a/src/html/html_basefont_element.h b/src/html/html_basefont_element.h
index 2e182d5..e6427ec 100644
--- a/src/html/html_basefont_element.h
+++ b/src/html/html_basefont_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_basefont_element_h_
+#define dom_internal_html_basefont_element_h_
+
+#include <dom/html/html_basefont_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_base_font_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_base_font_element object */
+dom_exception _dom_html_base_font_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_base_font_element **ele);
+
+/* Initialise a dom_html_base_font_element object */
+dom_exception _dom_html_base_font_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_base_font_element *ele);
+
+/* Finalise a dom_html_base_font_element object */
+void _dom_html_base_font_element_finalise(struct dom_html_base_font_element *ele);
+
+/* Destroy a dom_html_base_font_element object */
+void _dom_html_base_font_element_destroy(struct dom_html_base_font_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_base_font_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_base_font_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_base_font_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_BASE_FONT_ELEMENT_PROTECT_VTABLE \
+ _dom_html_base_font_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_BASE_FONT_ELEMENT \
+ _dom_virtual_html_base_font_element_destroy, \
+ _dom_html_base_font_element_copy
+
+#endif
diff --git a/src/html/html_br_element.c b/src/html/html_br_element.c
index 2e182d5..fbc133e 100644
--- a/src/html/html_br_element.c
+++ b/src/html/html_br_element.c
@@ -3,5 +3,160 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_br_element.h>
+
+#include "html/html_document.h"
+#include "html/html_br_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_BR_ELEMENT
+ },
+ DOM_HTML_BR_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_br_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_br_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_br_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_br_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_br_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_br_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_br_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_br_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_br_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_BR],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_br_element object
+ *
+ * \param ele The dom_html_br_element object
+ */
+void _dom_html_br_element_finalise(struct dom_html_br_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_br_element object
+ *
+ * \param ele The dom_html_br_element object
+ */
+void _dom_html_br_element_destroy(struct dom_html_br_element *ele)
+{
+ _dom_html_br_element_finalise(ele);
+ free(ele);
+}
+
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_br_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_br_element_destroy(dom_node_internal *node)
+{
+ _dom_html_br_element_destroy((struct dom_html_br_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_br_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_br_element_get_##attr( \
+ dom_html_br_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_br_element_set_##attr( \
+ dom_html_br_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(clear);
diff --git a/src/html/html_br_element.h b/src/html/html_br_element.h
index 2e182d5..ff2df3d 100644
--- a/src/html/html_br_element.h
+++ b/src/html/html_br_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_br_element_h_
+#define dom_internal_html_br_element_h_
+
+#include <dom/html/html_br_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_br_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_br_element object */
+dom_exception _dom_html_br_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_br_element **ele);
+
+/* Initialise a dom_html_br_element object */
+dom_exception _dom_html_br_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_br_element *ele);
+
+/* Finalise a dom_html_br_element object */
+void _dom_html_br_element_finalise(struct dom_html_br_element *ele);
+
+/* Destroy a dom_html_br_element object */
+void _dom_html_br_element_destroy(struct dom_html_br_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_br_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_br_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_br_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_BR_ELEMENT_PROTECT_VTABLE \
+ _dom_html_br_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_BR_ELEMENT \
+ _dom_virtual_html_br_element_destroy, \
+ _dom_html_br_element_copy
+
+#endif
diff --git a/src/html/html_collection.c b/src/html/html_collection.c
index a99297f..43a26c5 100644
--- a/src/html/html_collection.c
+++ b/src/html/html_collection.c
@@ -11,6 +11,7 @@
#include <libwapcaplet/libwapcaplet.h>
#include "html/html_collection.h"
+#include "html/html_document.h"
#include "core/node.h"
#include "core/element.h"
@@ -25,7 +26,7 @@
* \param doc The document
* \param root The root element of the collection
* \param ic The callback function used to determin whether certain node
- * beint32_ts to the collection
+ * belongs to the collection
* \param col The result collection object
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
@@ -132,7 +133,7 @@ dom_exception dom_html_collection_get_length(dom_html_collection *col,
/* No children and siblings */
struct dom_node_internal *parent = node->parent;
- while (parent != col->root &&
+ while (node != col->root &&
node == parent->last_child) {
node = parent;
parent = parent->parent;
@@ -182,7 +183,7 @@ dom_exception dom_html_collection_item(dom_html_collection *col,
/* No children and siblings */
struct dom_node_internal *parent = n->parent;
- while (parent != col->root &&
+ while (n != col->root &&
n == parent->last_child) {
n = parent;
parent = parent->parent;
@@ -212,8 +213,8 @@ dom_exception dom_html_collection_named_item(dom_html_collection *col,
dom_string *name, struct dom_node **node)
{
struct dom_node_internal *n = col->root;
+ dom_html_document *doc = (dom_html_document *)dom_node_get_owner(n);
dom_exception err;
-
while (n != NULL) {
if (n->type == DOM_ELEMENT_NODE &&
col->ic(n, col->ctx) == true) {
@@ -235,6 +236,22 @@ dom_exception dom_html_collection_named_item(dom_html_collection *col,
if (id != NULL)
dom_string_unref(id);
+
+ /* Check for Name attr if id not matched/found */
+ dom_string *id_name = NULL;
+ err = _dom_element_get_attribute((dom_element *)n,
+ doc->memoised[hds_name], &id_name);
+ if(err != DOM_NO_ERR) {
+ return err;
+ }
+ if (id_name != NULL && dom_string_isequal(name, id_name)) {
+ *node = (struct dom_node *) n;
+ dom_node_ref(n);
+ dom_string_unref(id_name);
+
+ return DOM_NO_ERR;
+ }
+
}
/* Depth first iterating */
@@ -246,13 +263,13 @@ dom_exception dom_html_collection_named_item(dom_html_collection *col,
/* No children and siblings */
struct dom_node_internal *parent = n->parent;
- while (parent != col->root &&
+ while (n != col->root &&
n == parent->last_child) {
n = parent;
parent = parent->parent;
}
- if (parent == col->root)
+ if (n == col->root)
n = NULL;
else
n = n->next;
diff --git a/src/html/html_directory_element.c b/src/html/html_directory_element.c
index 2e182d5..4e0d9e0 100644
--- a/src/html/html_directory_element.c
+++ b/src/html/html_directory_element.c
@@ -3,5 +3,145 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_directory_element.h>
+
+#include "html/html_document.h"
+#include "html/html_directory_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_DIRECTORY_ELEMENT
+ },
+ DOM_HTML_DIRECTORY_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_directory_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_directory_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_directory_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_directory_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_directory_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_directory_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_directory_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_directory_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_directory_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_DIRECTORY],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_directory_element object
+ *
+ * \param ele The dom_html_directory_element object
+ */
+void _dom_html_directory_element_finalise(struct dom_html_directory_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_directory_element object
+ *
+ * \param ele The dom_html_directory_element object
+ */
+void _dom_html_directory_element_destroy(struct dom_html_directory_element *ele)
+{
+ _dom_html_directory_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the compact property
+ *
+ * \param ele The dom_html_directory_element object
+ * \param compact The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_directory_element_get_compact(dom_html_directory_element *ele,
+ bool *compact)
+{
+ return dom_html_element_get_bool_property(&ele->base, "compact",
+ SLEN("compact"), compact);
+}
+
+/**
+ * Set the compact property
+ *
+ * \param ele The dom_html_directory_element object
+ * \param compact The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_directory_element_set_compact(dom_html_directory_element *ele,
+ bool compact)
+{
+ return dom_html_element_set_bool_property(&ele->base, "compact",
+ SLEN("compact"), compact);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_directory_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_directory_element_destroy(dom_node_internal *node)
+{
+ _dom_html_directory_element_destroy((struct dom_html_directory_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_directory_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
diff --git a/src/html/html_directory_element.h b/src/html/html_directory_element.h
index 2e182d5..9f3fe2b 100644
--- a/src/html/html_directory_element.h
+++ b/src/html/html_directory_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_directory_element_h_
+#define dom_internal_html_directory_element_h_
+
+#include <dom/html/html_directory_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_directory_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_directory_element object */
+dom_exception _dom_html_directory_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_directory_element **ele);
+
+/* Initialise a dom_html_directory_element object */
+dom_exception _dom_html_directory_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_directory_element *ele);
+
+/* Finalise a dom_html_directory_element object */
+void _dom_html_directory_element_finalise(struct dom_html_directory_element *ele);
+
+/* Destroy a dom_html_directory_element object */
+void _dom_html_directory_element_destroy(struct dom_html_directory_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_directory_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_directory_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_directory_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_DIRECTORY_ELEMENT_PROTECT_VTABLE \
+ _dom_html_directory_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_DIRECTORY_ELEMENT \
+ _dom_virtual_html_directory_element_destroy, \
+ _dom_html_directory_element_copy
+
+#endif
diff --git a/src/html/html_div_element.c b/src/html/html_div_element.c
index 2e182d5..0c689d6 100644
--- a/src/html/html_div_element.c
+++ b/src/html/html_div_element.c
@@ -3,5 +3,159 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_div_element.h>
+
+#include "html/html_document.h"
+#include "html/html_div_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_DIV_ELEMENT
+ },
+ DOM_HTML_DIV_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_div_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_div_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_div_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_div_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_div_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_div_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_div_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_div_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_div_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_DIV],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_div_element object
+ *
+ * \param ele The dom_html_div_element object
+ */
+void _dom_html_div_element_finalise(struct dom_html_div_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_div_element object
+ *
+ * \param ele The dom_html_div_element object
+ */
+void _dom_html_div_element_destroy(struct dom_html_div_element *ele)
+{
+ _dom_html_div_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_div_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_div_element_destroy(dom_node_internal *node)
+{
+ _dom_html_div_element_destroy((struct dom_html_div_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_div_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_div_element_get_##attr( \
+ dom_html_div_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_div_element_set_##attr( \
+ dom_html_div_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(align);
diff --git a/src/html/html_div_element.h b/src/html/html_div_element.h
index 2e182d5..62d1c3f 100644
--- a/src/html/html_div_element.h
+++ b/src/html/html_div_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_div_element_h_
+#define dom_internal_html_div_element_h_
+
+#include <dom/html/html_div_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_div_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_div_element object */
+dom_exception _dom_html_div_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_div_element **ele);
+
+/* Initialise a dom_html_div_element object */
+dom_exception _dom_html_div_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_div_element *ele);
+
+/* Finalise a dom_html_div_element object */
+void _dom_html_div_element_finalise(struct dom_html_div_element *ele);
+
+/* Destroy a dom_html_div_element object */
+void _dom_html_div_element_destroy(struct dom_html_div_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_div_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_div_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_div_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_DIV_ELEMENT_PROTECT_VTABLE \
+ _dom_html_div_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_DIV_ELEMENT \
+ _dom_virtual_html_div_element_destroy, \
+ _dom_html_div_element_copy
+
+#endif
diff --git a/src/html/html_dlist_element.c b/src/html/html_dlist_element.c
index 2e182d5..f63accc 100644
--- a/src/html/html_dlist_element.c
+++ b/src/html/html_dlist_element.c
@@ -3,5 +3,145 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_dlist_element.h>
+
+#include "html/html_document.h"
+#include "html/html_dlist_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_DL_ELEMENT
+ },
+ DOM_HTML_DL_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_d_list_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_d_list_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_d_list_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_d_list_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_d_list_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_d_list_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_d_list_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_d_list_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_d_list_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_DL],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_d_list_element object
+ *
+ * \param ele The dom_html_d_list_element object
+ */
+void _dom_html_d_list_element_finalise(struct dom_html_d_list_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_d_list_element object
+ *
+ * \param ele The dom_html_d_list_element object
+ */
+void _dom_html_d_list_element_destroy(struct dom_html_d_list_element *ele)
+{
+ _dom_html_d_list_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the compact property
+ *
+ * \param ele The dom_html_d_list_element object
+ * \param compact The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_d_list_element_get_compact(dom_html_d_list_element *ele,
+ bool *compact)
+{
+ return dom_html_element_get_bool_property(&ele->base, "compact",
+ SLEN("compact"), compact);
+}
+
+/**
+ * Set the compact property
+ *
+ * \param ele The dom_html_d_list_element object
+ * \param compact The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_d_list_element_set_compact(dom_html_d_list_element *ele,
+ bool compact)
+{
+ return dom_html_element_set_bool_property(&ele->base, "compact",
+ SLEN("compact"), compact);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_d_list_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_d_list_element_destroy(dom_node_internal *node)
+{
+ _dom_html_d_list_element_destroy((struct dom_html_d_list_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_d_list_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
diff --git a/src/html/html_dlist_element.h b/src/html/html_dlist_element.h
index 2e182d5..8e40dca 100644
--- a/src/html/html_dlist_element.h
+++ b/src/html/html_dlist_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_d_list_element_h_
+#define dom_internal_html_d_list_element_h_
+
+#include <dom/html/html_dlist_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_d_list_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_d_list_element object */
+dom_exception _dom_html_d_list_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_d_list_element **ele);
+
+/* Initialise a dom_html_d_list_element object */
+dom_exception _dom_html_d_list_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_d_list_element *ele);
+
+/* Finalise a dom_html_d_list_element object */
+void _dom_html_d_list_element_finalise(struct dom_html_d_list_element *ele);
+
+/* Destroy a dom_html_d_list_element object */
+void _dom_html_d_list_element_destroy(struct dom_html_d_list_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_d_list_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_d_list_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_d_list_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_DL_ELEMENT_PROTECT_VTABLE \
+ _dom_html_d_list_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_DL_ELEMENT \
+ _dom_virtual_html_d_list_element_destroy, \
+ _dom_html_d_list_element_copy
+
+#endif
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 0da16bb..6adfedd 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -25,6 +25,42 @@
#include "html/html_option_element.h"
#include "html/html_select_element.h"
#include "html/html_hr_element.h"
+#include "html/html_dlist_element.h"
+#include "html/html_directory_element.h"
+#include "html/html_menu_element.h"
+#include "html/html_fieldset_element.h"
+#include "html/html_legend_element.h"
+#include "html/html_paragraph_element.h"
+#include "html/html_heading_element.h"
+#include "html/html_quote_element.h"
+#include "html/html_pre_element.h"
+#include "html/html_br_element.h"
+#include "html/html_label_element.h"
+#include "html/html_ulist_element.h"
+#include "html/html_olist_element.h"
+#include "html/html_li_element.h"
+#include "html/html_font_element.h"
+#include "html/html_mod_element.h"
+#include "html/html_anchor_element.h"
+#include "html/html_basefont_element.h"
+#include "html/html_image_element.h"
+#include "html/html_object_element.h"
+#include "html/html_param_element.h"
+#include "html/html_applet_element.h"
+#include "html/html_map_element.h"
+#include "html/html_area_element.h"
+#include "html/html_script_element.h"
+#include "html/html_tablecaption_element.h"
+#include "html/html_tablecell_element.h"
+#include "html/html_tablecol_element.h"
+#include "html/html_tablesection_element.h"
+#include "html/html_table_element.h"
+#include "html/html_tablerow_element.h"
+#include "html/html_style_element.h"
+#include "html/html_frameset_element.h"
+#include "html/html_frame_element.h"
+#include "html/html_iframe_element.h"
+#include "html/html_isindex_element.h"
#include "core/attr.h"
#include "core/string.h"
@@ -91,16 +127,17 @@ dom_exception _dom_html_document_initialise(dom_html_document *doc,
doc->domain = NULL;
doc->url = NULL;
doc->cookie = NULL;
-
+ doc->body = NULL;
+
doc->memoised = calloc(sizeof(dom_string *), hds_COUNT);
if (doc->memoised == NULL) {
error = DOM_NO_MEM_ERR;
goto out;
}
-
+
#define HTML_DOCUMENT_STRINGS_ACTION(attr,str) \
error = dom_string_create_interned((const uint8_t *) #str, \
- SLEN(#str), &doc->memoised[hds_##attr]); \
+ SLEN(#str), &doc->memoised[hds_##attr]); \
if (error != DOM_NO_ERR) { \
goto out; \
}
@@ -224,6 +261,127 @@ _dom_html_document_create_element_internal(dom_html_document *html,
} else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_HR])) {
exc = _dom_html_hr_element_create(html, namespace, prefix,
(dom_html_hr_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_DL])) {
+ exc = _dom_html_d_list_element_create(html, namespace, prefix,
+ (dom_html_d_list_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_DIRECTORY])) {
+ exc = _dom_html_directory_element_create(html, namespace, prefix,
+ (dom_html_directory_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_MENU])) {
+ exc = _dom_html_menu_element_create(html, namespace, prefix,
+ (dom_html_menu_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_FIELDSET])) {
+ exc = _dom_html_field_set_element_create(html, namespace, prefix,
+ (dom_html_field_set_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_LEGEND])) {
+ exc = _dom_html_legend_element_create(html, namespace, prefix,
+ (dom_html_legend_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_P])) {
+ exc = _dom_html_paragraph_element_create(html, namespace, prefix,
+ (dom_html_paragraph_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_H1]) ||
+ dom_string_caseless_isequal(tag_name, html->memoised[hds_H2]) ||
+ dom_string_caseless_isequal(tag_name, html->memoised[hds_H3]) ||
+ dom_string_caseless_isequal(tag_name, html->memoised[hds_H4]) ||
+ dom_string_caseless_isequal(tag_name, html->memoised[hds_H5]) ||
+ dom_string_caseless_isequal(tag_name, html->memoised[hds_H6])
+ ) {
+ exc = _dom_html_heading_element_create(html, tag_name, namespace, prefix,
+ (dom_html_heading_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_Q])) {
+ exc = _dom_html_quote_element_create(html, namespace, prefix,
+ (dom_html_quote_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_PRE])) {
+ exc = _dom_html_pre_element_create(html, namespace, prefix,
+ (dom_html_pre_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_BR])) {
+ exc = _dom_html_br_element_create(html, namespace, prefix,
+ (dom_html_br_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_LABEL])) {
+ exc = _dom_html_label_element_create(html, namespace, prefix,
+ (dom_html_label_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_UL])) {
+ exc = _dom_html_u_list_element_create(html, namespace, prefix,
+ (dom_html_u_list_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_OL])) {
+ exc = _dom_html_o_list_element_create(html, namespace, prefix,
+ (dom_html_o_list_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_LI])) {
+ exc = _dom_html_li_element_create(html, namespace, prefix,
+ (dom_html_li_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_FONT])) {
+ exc = _dom_html_font_element_create(html, namespace, prefix,
+ (dom_html_font_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_DEL]) ||
+ dom_string_caseless_isequal(tag_name, html->memoised[hds_INS])) {
+ exc = _dom_html_mod_element_create(html, tag_name, namespace,
+ prefix, (dom_html_mod_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_A])) {
+ exc = _dom_html_anchor_element_create(html, namespace, prefix,
+ (dom_html_anchor_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_BASEFONT])) {
+ exc = _dom_html_base_font_element_create(html, namespace, prefix,
+ (dom_html_base_font_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_IMG])) {
+ exc = _dom_html_image_element_create(html, namespace, prefix,
+ (dom_html_image_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_OBJECT])) {
+ exc = _dom_html_object_element_create(html, namespace, prefix,
+ (dom_html_object_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_PARAM])) {
+ exc = _dom_html_param_element_create(html, namespace, prefix,
+ (dom_html_param_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_APPLET])) {
+ exc = _dom_html_applet_element_create(html, namespace, prefix,
+ (dom_html_applet_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_MAP])) {
+ exc = _dom_html_map_element_create(html, namespace, prefix,
+ (dom_html_map_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_AREA])) {
+ exc = _dom_html_area_element_create(html, namespace, prefix,
+ (dom_html_area_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_SCRIPT])) {
+ exc = _dom_html_script_element_create(html, namespace, prefix,
+ (dom_html_script_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_CAPTION])) {
+ exc = _dom_html_table_caption_element_create(html, namespace, prefix,
+ (dom_html_table_caption_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_TD]) ||
+ dom_string_caseless_isequal(tag_name, html->memoised[hds_TH])
+ ) {
+ exc = _dom_html_table_cell_element_create(html, tag_name, namespace, prefix,
+ (dom_html_table_cell_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_COL])||
+ dom_string_caseless_isequal(tag_name, html->memoised[hds_COLGROUP])
+ ) {
+ exc = _dom_html_table_col_element_create(html, tag_name, namespace, prefix,
+ (dom_html_table_col_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_THEAD])||
+ dom_string_caseless_isequal(tag_name, html->memoised[hds_TBODY])||
+ dom_string_caseless_isequal(tag_name, html->memoised[hds_TFOOT])) {
+ exc = _dom_html_table_section_element_create(html, tag_name, namespace, prefix,
+ (dom_html_table_section_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_TABLE])) {
+ exc = _dom_html_table_element_create(html, namespace, prefix,
+ (dom_html_table_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_TD])) {
+ exc = _dom_html_table_row_element_create(html, namespace, prefix,
+ (dom_html_table_row_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_STYLE])) {
+ exc = _dom_html_style_element_create(html,
+ (dom_html_style_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_FRAMESET])) {
+ exc = _dom_html_frame_set_element_create(html, namespace, prefix,
+ (dom_html_frame_set_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_FRAME])) {
+ exc = _dom_html_frame_element_create(html, namespace, prefix,
+ (dom_html_frame_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_IFRAME])) {
+ exc = _dom_html_iframe_element_create(html, namespace, prefix,
+ (dom_html_iframe_element **) result);
+ } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_ISINDEX])) {
+ exc = _dom_html_isindex_element_create(html, namespace, prefix,
+ (dom_html_isindex_element **) result);
} else {
exc = _dom_html_element_create(html, tag_name, namespace,
prefix, result);
@@ -486,57 +644,193 @@ dom_exception _dom_html_document_get_url(dom_html_document *doc,
dom_exception _dom_html_document_get_body(dom_html_document *doc,
struct dom_html_element **body)
{
- UNUSED(doc);
- UNUSED(body);
+ dom_exception exc = DOM_NO_ERR;
- return DOM_NOT_SUPPORTED_ERR;
+ if (doc->body != NULL) {
+ *body = doc->body;
+ } else {
+ dom_element *node;
+ dom_nodelist *nodes;
+ uint32_t len;
+
+ exc = dom_document_get_elements_by_tag_name(doc,
+ doc->memoised[hds_BODY],
+ &nodes);
+ if (exc != DOM_NO_ERR) {
+ return exc;
+ }
+
+ exc = dom_nodelist_get_length(nodes, &len);
+ if (exc != DOM_NO_ERR) {
+ dom_nodelist_unref(nodes);
+ return exc;
+ }
+
+ if (len == 0) {
+ exc = dom_document_get_elements_by_tag_name(doc,
+ doc->memoised[hds_FRAMESET],
+ &nodes);
+ if (exc != DOM_NO_ERR) {
+ return exc;
+ }
+ exc = dom_nodelist_get_length(nodes, &len);
+ if (exc != DOM_NO_ERR) {
+ dom_nodelist_unref(nodes);
+ return exc;
+ }
+ if(len == 0) {
+ dom_nodelist_unref(nodes);
+ return DOM_NO_ERR;
+ }
+ }
+
+ exc = dom_nodelist_item(nodes, 0, (void *) &node);
+ dom_nodelist_unref(nodes);
+ if (exc != DOM_NO_ERR) {
+ return exc;
+ }
+
+ *body = (dom_html_element *)node;
+ dom_node_unref(node);
+ }
+
+ return exc;
}
dom_exception _dom_html_document_set_body(dom_html_document *doc,
struct dom_html_element *body)
{
- UNUSED(doc);
- UNUSED(body);
+ doc->body = body;
+ return DOM_NO_ERR;
+}
- return DOM_NOT_SUPPORTED_ERR;
+/**
+ * Callback for creating the images collection
+ *
+ * \param node The dom_node_internal object
+ * \param ctx The dom_html_document object (void *)
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+bool images_callback(struct dom_node_internal *node, void *ctx)
+{
+ if(node->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_IMG])) {
+ return true;
+ }
+ return false;
}
dom_exception _dom_html_document_get_images(dom_html_document *doc,
struct dom_html_collection **col)
{
- UNUSED(doc);
- UNUSED(col);
+ dom_html_document *root;
+ dom_exception err;
+ err = dom_document_get_document_element(doc, &root);
+ if (err != DOM_NO_ERR)
+ return err;
- return DOM_NOT_SUPPORTED_ERR;
+ return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ images_callback, doc, col);
+}
+
+bool applet_callback(struct dom_node_internal * node, void *ctx)
+{
+ if(node->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_APPLET])) {
+ return true;
+ }
+ return false;
+}
+/**
+ * Callback for creating the applets collection
+ *
+ * \param node The dom_node_internal object
+ * \param ctx The dom_html_document object (void *)
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+bool applets_callback(struct dom_node_internal *node, void *ctx)
+{
+ if(node->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_OBJECT])) {
+ uint32_t len = 0;
+ dom_html_collection *applets;
+ _dom_html_collection_create(ctx, node,
+ applet_callback, ctx, &applets);
+
+ dom_html_collection_get_length(applets, &len);
+ if(len != 0)
+ return true;
+ }
+ return false;
}
dom_exception _dom_html_document_get_applets(dom_html_document *doc,
struct dom_html_collection **col)
{
- UNUSED(doc);
- UNUSED(col);
+ dom_html_document *root;
+ dom_exception err;
+ err = dom_document_get_document_element(doc, &root);
+ if (err != DOM_NO_ERR)
+ return err;
- return DOM_NOT_SUPPORTED_ERR;
+ return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ applets_callback, doc, col);
+}
+
+/**
+ * Callback for creating the links collection
+ *
+ * \param node The dom_node_internal object
+ * \param ctx The dom_html_document object (void *)
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+bool links_callback(struct dom_node_internal *node, void *ctx)
+{
+ if(node->type == DOM_ELEMENT_NODE &&
+ (dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_A]) ||
+ dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_AREA]))
+ ) {
+ bool has_value = false;
+ dom_exception err;
+
+ err = dom_element_has_attribute(node,
+ ((dom_html_document *)ctx)->memoised[hds_href], &has_value);
+ if(err !=DOM_NO_ERR)
+ return err;
+
+ if(has_value)
+ return true;
+ }
+ return false;
}
dom_exception _dom_html_document_get_links(dom_html_document *doc,
struct dom_html_collection **col)
{
- UNUSED(doc);
- UNUSED(col);
+ dom_html_document *root;
+ dom_exception err;
+ err = dom_document_get_document_element(doc, &root);
+ if (err != DOM_NO_ERR)
+ return err;
- return DOM_NOT_SUPPORTED_ERR;
+ return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ links_callback, doc, col);
}
static bool __dom_html_document_node_is_form(dom_node_internal *node,
- void *ctx)
+ void *ctx)
{
dom_html_document *doc = (dom_html_document *)node->owner;
-
+
UNUSED(ctx);
-
+
return dom_string_caseless_isequal(node->name,
- doc->memoised[hds_FORM]);
+ doc->memoised[hds_FORM]);
}
dom_exception _dom_html_document_get_forms(dom_html_document *doc,
@@ -564,13 +858,43 @@ dom_exception _dom_html_document_get_forms(dom_html_document *doc,
return DOM_NO_ERR;
}
+/**
+ * Callback for creating the anchors collection
+ *
+ * \param node The dom_node_internal object
+ * \param ctx The dom_html_document object (void *)
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+bool anchors_callback(struct dom_node_internal *node, void *ctx)
+{
+ if(node->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_A])) {
+ bool has_value = false;
+ dom_exception err;
+
+ err = dom_element_has_attribute(node,
+ ((dom_html_document *)ctx)->memoised[hds_name], &has_value);
+ if(err !=DOM_NO_ERR)
+ return err;
+
+ if(has_value)
+ return true;
+ }
+ return false;
+}
+
dom_exception _dom_html_document_get_anchors(dom_html_document *doc,
struct dom_html_collection **col)
{
- UNUSED(doc);
- UNUSED(col);
+ dom_html_document *root;
+ dom_exception err;
+ err = dom_document_get_document_element(doc, &root);
+ if (err != DOM_NO_ERR)
+ return err;
- return DOM_NOT_SUPPORTED_ERR;
+ return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ anchors_callback, doc, col);
}
dom_exception _dom_html_document_get_cookie(dom_html_document *doc,
@@ -578,7 +902,7 @@ dom_exception _dom_html_document_get_cookie(dom_html_document *doc,
{
UNUSED(doc);
UNUSED(cookie);
-
+ /*todo implement this after updating client interface */
return DOM_NOT_SUPPORTED_ERR;
}
@@ -588,6 +912,7 @@ dom_exception _dom_html_document_set_cookie(dom_html_document *doc,
UNUSED(doc);
UNUSED(cookie);
+ /*todo implement this after updating client interface */
return DOM_NOT_SUPPORTED_ERR;
}
@@ -595,13 +920,14 @@ dom_exception _dom_html_document_open(dom_html_document *doc)
{
UNUSED(doc);
+ /*todo implement this after updating client interface */
return DOM_NOT_SUPPORTED_ERR;
}
dom_exception _dom_html_document_close(dom_html_document *doc)
{
UNUSED(doc);
-
+ /*todo implement this after updating client interface */
return DOM_NOT_SUPPORTED_ERR;
}
@@ -611,6 +937,7 @@ dom_exception _dom_html_document_write(dom_html_document *doc,
UNUSED(doc);
UNUSED(text);
+ /*todo implement this after updating client interface */
return DOM_NOT_SUPPORTED_ERR;
}
@@ -620,6 +947,7 @@ dom_exception _dom_html_document_writeln(dom_html_document *doc,
UNUSED(doc);
UNUSED(text);
+ /*todo implement this after _dom_html_document_write */
return DOM_NOT_SUPPORTED_ERR;
}
@@ -629,7 +957,7 @@ dom_exception _dom_html_document_get_elements_by_name(dom_html_document *doc,
UNUSED(doc);
UNUSED(name);
UNUSED(list);
-
+ /*todo implement after updating core nodelist interface */
return DOM_NOT_SUPPORTED_ERR;
}
diff --git a/src/html/html_document.h b/src/html/html_document.h
index 67250f5..c00529b 100644
--- a/src/html/html_document.h
+++ b/src/html/html_document.h
@@ -9,6 +9,7 @@
#define dom_internal_html_document_h_
#include <dom/html/html_document.h>
+#include <dom/html/html_element.h>
#include "core/document.h"
@@ -23,6 +24,7 @@ struct dom_html_document {
dom_string *domain; /**< HTML document domain */
dom_string *url; /**< HTML document URL */
dom_string *cookie; /**< HTML document cookie */
+ dom_html_element *body; /**< HTML BodyElement */
/** Cached strings for html objects to use */
dom_string **memoised;
@@ -126,6 +128,11 @@ dom_exception _dom_html_document_create_attribute(dom_document *doc,
dom_exception _dom_html_document_create_attribute_ns(dom_document *doc,
dom_string *namespace, dom_string *qname,
dom_attr **result);
+bool images_callback(struct dom_node_internal *node, void *ctx);
+bool applets_callback(struct dom_node_internal *node, void *ctx);
+bool applet_callback(struct dom_node_internal *node, void *ctx);
+bool links_callback(struct dom_node_internal *node, void *ctx);
+bool anchors_callback(struct dom_node_internal *node, void *ctx);
#define DOM_DOCUMENT_VTABLE_HTML \
_dom_document_get_doctype, \
diff --git a/src/html/html_document_strings.h b/src/html/html_document_strings.h
index 8e9d79e..35fca73 100644
--- a/src/html/html_document_strings.h
+++ b/src/html/html_document_strings.h
@@ -65,6 +65,8 @@ HTML_DOCUMENT_STRINGS_ACTION1(method)
/* HTML_DOCUMENT_STRINGS_ACTION1(target) */
/* Useful attributes used by HTMLButtonElement */
HTML_DOCUMENT_STRINGS_ACTION(access_key,accesskey)
+/* Useful attributes used by HTMLBrElement */
+HTML_DOCUMENT_STRINGS_ACTION1(clear)
/* HTML_DOCUMENT_STRINGS_ACTION1(name) */
/* HTML_DOCUMENT_STRINGS_ACTION1(type) */
HTML_DOCUMENT_STRINGS_ACTION1(value)
@@ -81,7 +83,47 @@ HTML_DOCUMENT_STRINGS_ACTION(read_only,readonly)
HTML_DOCUMENT_STRINGS_ACTION1(size)
HTML_DOCUMENT_STRINGS_ACTION1(src)
HTML_DOCUMENT_STRINGS_ACTION1(width)
+HTML_DOCUMENT_STRINGS_ACTION1(compact)
+HTML_DOCUMENT_STRINGS_ACTION1(cite)
+HTML_DOCUMENT_STRINGS_ACTION1(color)
+HTML_DOCUMENT_STRINGS_ACTION1(face)
+HTML_DOCUMENT_STRINGS_ACTION1(coords)
+HTML_DOCUMENT_STRINGS_ACTION1(shape)
+HTML_DOCUMENT_STRINGS_ACTION1(border)
+HTML_DOCUMENT_STRINGS_ACTION1(code)
+HTML_DOCUMENT_STRINGS_ACTION1(archive)
+HTML_DOCUMENT_STRINGS_ACTION1(data)
+HTML_DOCUMENT_STRINGS_ACTION1(height)
+HTML_DOCUMENT_STRINGS_ACTION1(standby)
+HTML_DOCUMENT_STRINGS_ACTION1(object)
+HTML_DOCUMENT_STRINGS_ACTION1(event)
+HTML_DOCUMENT_STRINGS_ACTION1(defer)
+HTML_DOCUMENT_STRINGS_ACTION1(abbr)
+HTML_DOCUMENT_STRINGS_ACTION1(axis)
+HTML_DOCUMENT_STRINGS_ACTION1(headers)
+HTML_DOCUMENT_STRINGS_ACTION1(scope)
+HTML_DOCUMENT_STRINGS_ACTION1(frame)
+HTML_DOCUMENT_STRINGS_ACTION1(rules)
+HTML_DOCUMENT_STRINGS_ACTION1(summary)
+HTML_DOCUMENT_STRINGS_ACTION1(prompt)
+HTML_DOCUMENT_STRINGS_ACTION1(rows)
+HTML_DOCUMENT_STRINGS_ACTION1(cols)
+HTML_DOCUMENT_STRINGS_ACTION1(scrolling)
HTML_DOCUMENT_STRINGS_ACTION(tab_index,tabindex)
+HTML_DOCUMENT_STRINGS_ACTION(html_for,for)
+HTML_DOCUMENT_STRINGS_ACTION(date_time,datetime)
+HTML_DOCUMENT_STRINGS_ACTION(long_desc,longdesc)
+HTML_DOCUMENT_STRINGS_ACTION(code_base,codebase)
+HTML_DOCUMENT_STRINGS_ACTION(code_type,codetype)
+HTML_DOCUMENT_STRINGS_ACTION(value_type,valuetype)
+HTML_DOCUMENT_STRINGS_ACTION(v_align,valign)
+HTML_DOCUMENT_STRINGS_ACTION(ch,char)
+HTML_DOCUMENT_STRINGS_ACTION(ch_off,charoff)
+HTML_DOCUMENT_STRINGS_ACTION(cell_padding,cellpadding)
+HTML_DOCUMENT_STRINGS_ACTION(cell_spacing,cellspacing)
+HTML_DOCUMENT_STRINGS_ACTION(frame_border,frameborder)
+HTML_DOCUMENT_STRINGS_ACTION(margin_height,marginheight)
+HTML_DOCUMENT_STRINGS_ACTION(margin_width,marginwidth)
/* HTML_DOCUMENT_STRINGS_ACTION1(type) */
HTML_DOCUMENT_STRINGS_ACTION(use_map,usemap)
/* HTML_DOCUMENT_STRINGS_ACTION1(value) */
@@ -126,7 +168,7 @@ HTML_DOCUMENT_STRINGS_ACTION1(LEGEND)
HTML_DOCUMENT_STRINGS_ACTION1(UL)
HTML_DOCUMENT_STRINGS_ACTION1(OL)
HTML_DOCUMENT_STRINGS_ACTION1(DL)
-HTML_DOCUMENT_STRINGS_ACTION1(DIR)
+HTML_DOCUMENT_STRINGS_ACTION1(DIRECTORY)
HTML_DOCUMENT_STRINGS_ACTION1(MENU)
HTML_DOCUMENT_STRINGS_ACTION1(LI)
HTML_DOCUMENT_STRINGS_ACTION1(BLOCKQUOTE)
diff --git a/src/html/html_fieldset_element.c b/src/html/html_fieldset_element.c
index 2e182d5..2ab873e 100644
--- a/src/html/html_fieldset_element.c
+++ b/src/html/html_fieldset_element.c
@@ -3,5 +3,151 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_fieldset_element.h>
+
+#include "html/html_document.h"
+#include "html/html_fieldset_element.h"
+
+#include "core/node.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_FIELDSET_ELEMENT
+ },
+ DOM_HTML_FIELDSET_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_field_set_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_field_set_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_field_set_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_field_set_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_field_set_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_field_set_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_field_set_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_field_set_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_field_set_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_FIELDSET],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_field_set_element object
+ *
+ * \param ele The dom_html_field_set_element object
+ */
+void _dom_html_field_set_element_finalise(struct dom_html_field_set_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_field_set_element object
+ *
+ * \param ele The dom_html_field_set_element object
+ */
+void _dom_html_field_set_element_destroy(struct dom_html_field_set_element *ele)
+{
+ _dom_html_field_set_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_field_set_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_field_set_element_destroy(dom_node_internal *node)
+{
+ _dom_html_field_set_element_destroy((struct dom_html_field_set_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_field_set_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/**
+ * Get the dom_html_form_element object
+ *
+ * \param field_set The dom_html_legend_element object
+ * \param form The returned dom_html_form_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+
+dom_exception dom_html_field_set_element_get_form(
+ dom_html_field_set_element *field_set, dom_html_form_element **form)
+{
+ dom_html_document *doc =
+ (dom_html_document *) ((dom_node_internal *) field_set)->owner;
+ dom_node_internal *form_tmp = ((dom_node_internal *) field_set)->parent;
+
+ /* Search ancestor chain for FIELDSET element */
+ while (form_tmp != NULL) {
+ if (form_tmp->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(form_tmp->name,
+ doc->memoised[hds_FORM]))
+ break;
+
+ form_tmp = form_tmp->parent;
+ }
+
+ if (form_tmp != NULL) {
+ *form = (dom_html_form_element *) form_tmp;
+ return DOM_NO_ERR;
+ }
+
+ *form = NULL;
+
+ return DOM_NO_ERR;
+}
diff --git a/src/html/html_fieldset_element.h b/src/html/html_fieldset_element.h
index 2e182d5..8ae1d59 100644
--- a/src/html/html_fieldset_element.h
+++ b/src/html/html_fieldset_element.h
@@ -3,5 +3,51 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_field_set_element_h_
+#define dom_internal_html_field_set_element_h_
+
+#include <dom/html/html_fieldset_element.h>
+
+#include "html/html_element.h"
+
+struct dom_html_field_set_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_field_set_element object */
+dom_exception _dom_html_field_set_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_field_set_element **ele);
+
+/* Initialise a dom_html_field_set_element object */
+dom_exception _dom_html_field_set_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_field_set_element *ele);
+
+/* Finalise a dom_html_field_set_element object */
+void _dom_html_field_set_element_finalise(struct dom_html_field_set_element *ele);
+
+/* Destroy a dom_html_field_set_element object */
+void _dom_html_field_set_element_destroy(struct dom_html_field_set_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_field_set_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_field_set_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_field_set_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_FIELDSET_ELEMENT_PROTECT_VTABLE \
+ _dom_html_field_set_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_FIELDSET_ELEMENT \
+ _dom_virtual_html_field_set_element_destroy, \
+ _dom_html_field_set_element_copy
+
+#endif
+
diff --git a/src/html/html_font_element.c b/src/html/html_font_element.c
index 2e182d5..aadcb22 100644
--- a/src/html/html_font_element.c
+++ b/src/html/html_font_element.c
@@ -3,5 +3,162 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_font_element.h>
+
+#include "html/html_document.h"
+#include "html/html_font_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_FONT_ELEMENT
+ },
+ DOM_HTML_FONT_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_font_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_font_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_font_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_font_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_font_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_font_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_font_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_font_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_font_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_FONT],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_font_element object
+ *
+ * \param ele The dom_html_font_element object
+ */
+void _dom_html_font_element_finalise(struct dom_html_font_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_font_element object
+ *
+ * \param ele The dom_html_font_element object
+ */
+void _dom_html_font_element_destroy(struct dom_html_font_element *ele)
+{
+ _dom_html_font_element_finalise(ele);
+ free(ele);
+}
+
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_font_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_font_element_destroy(dom_node_internal *node)
+{
+ _dom_html_font_element_destroy((struct dom_html_font_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_font_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_font_element_get_##attr( \
+ dom_html_font_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_font_element_set_##attr( \
+ dom_html_font_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(color);
+SIMPLE_GET_SET(face);
+SIMPLE_GET_SET(size);
diff --git a/src/html/html_font_element.h b/src/html/html_font_element.h
index 2e182d5..42a2ec4 100644
--- a/src/html/html_font_element.h
+++ b/src/html/html_font_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_font_element_h_
+#define dom_internal_html_font_element_h_
+
+#include <dom/html/html_font_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_font_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_font_element object */
+dom_exception _dom_html_font_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_font_element **ele);
+
+/* Initialise a dom_html_font_element object */
+dom_exception _dom_html_font_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_font_element *ele);
+
+/* Finalise a dom_html_font_element object */
+void _dom_html_font_element_finalise(struct dom_html_font_element *ele);
+
+/* Destroy a dom_html_font_element object */
+void _dom_html_font_element_destroy(struct dom_html_font_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_font_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_font_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_font_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_FONT_ELEMENT_PROTECT_VTABLE \
+ _dom_html_font_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_FONT_ELEMENT \
+ _dom_virtual_html_font_element_destroy, \
+ _dom_html_font_element_copy
+
+#endif
diff --git a/src/html/html_form_element.c b/src/html/html_form_element.c
index 333cf74..0606ba6 100644
--- a/src/html/html_form_element.c
+++ b/src/html/html_form_element.c
@@ -281,7 +281,7 @@ static bool _dom_is_form_control(struct dom_node_internal *node, void *ctx)
assert(node->type == DOM_ELEMENT_NODE);
- /* Form controls are INPUT TEXTAREA SELECT and BUTTON */
+ /* Form controls are INPUT TEXTAREA SELECT and BUTTON*/
if (dom_string_caseless_isequal(node->name,
doc->memoised[hds_INPUT]))
return ((dom_html_input_element *)node)->form == form;
diff --git a/src/html/html_frame_element.c b/src/html/html_frame_element.c
index 2e182d5..16534b5 100644
--- a/src/html/html_frame_element.c
+++ b/src/html/html_frame_element.c
@@ -3,5 +3,285 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_frame_element.h>
+
+#include "html/html_document.h"
+#include "html/html_frame_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_FRAME_ELEMENT
+ },
+ DOM_HTML_FRAME_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_frame_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_frame_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_frame_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_frame_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_frame_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_frame_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_frame_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_frame_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_frame_element *ele)
+{
+ dom_string *scrolling_default = NULL;
+ dom_exception err;
+ err = dom_string_create((const uint8_t *) "auto", SLEN("auto"), &scrolling_default);
+ if (err != DOM_NO_ERR)
+ return err;
+
+
+ dom_string *frame_border_default = NULL;
+ err = dom_string_create((const uint8_t *) "1", SLEN("1"), &frame_border_default);
+ if (err != DOM_NO_ERR)
+ return err;
+
+ err = _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_FRAME],
+ namespace, prefix);
+
+ ele->scrolling_default = scrolling_default;
+ ele->frame_border_default = frame_border_default;
+
+ return err;
+}
+
+/**
+ * Finalise a dom_html_frame_element object
+ *
+ * \param ele The dom_html_frame_element object
+ */
+void _dom_html_frame_element_finalise(struct dom_html_frame_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_frame_element object
+ *
+ * \param ele The dom_html_frame_element object
+ */
+void _dom_html_frame_element_destroy(struct dom_html_frame_element *ele)
+{
+ _dom_html_frame_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the no_resize property
+ *
+ * \param ele The dom_html_frame_element object
+ * \param no_resize The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_frame_element_get_no_resize(dom_html_frame_element *ele,
+ bool *no_resize)
+{
+ return dom_html_element_get_bool_property(&ele->base, "noresize",
+ SLEN("noresize"), no_resize);
+}
+
+/**
+ * Set the no_resize property
+ *
+ * \param ele The dom_html_frame_element object
+ * \param no_resize The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_frame_element_set_no_resize(dom_html_frame_element *ele,
+ bool no_resize)
+{
+ return dom_html_element_set_bool_property(&ele->base, "noresize",
+ SLEN("noresize"), no_resize);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_frame_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_frame_element_destroy(dom_node_internal *node)
+{
+ _dom_html_frame_element_destroy((struct dom_html_frame_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_frame_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_frame_element_get_##attr( \
+ dom_html_frame_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_frame_element_set_##attr( \
+ dom_html_frame_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(long_desc);
+SIMPLE_GET_SET(name);
+SIMPLE_GET_SET(src);
+SIMPLE_SET(frame_border);
+SIMPLE_GET_SET(margin_width);
+SIMPLE_GET_SET(margin_height);
+SIMPLE_SET(scrolling);
+
+
+/**
+ * Get the frame_border property
+ *
+ * \param ele The dom_html_frame_element object
+ * \param frame_border The returned status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_frame_element_get_frame_border(
+ dom_html_frame_element *ele,
+ dom_string **frame_border)
+{
+ dom_html_document *doc;
+ bool has_value = false;
+ dom_exception err;
+
+ doc = (dom_html_document *) ((dom_node_internal *) ele)->owner;
+
+ err = dom_element_has_attribute(ele,
+ doc->memoised[hds_frame_border], &has_value);
+ if(err !=DOM_NO_ERR)
+ return err;
+
+ if(has_value) {
+ return dom_element_get_attribute(ele,
+ doc->memoised[hds_frame_border], frame_border);
+ }
+
+ *frame_border = ele->frame_border_default;
+ if (*frame_border != NULL)
+ dom_string_ref(*frame_border);
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get the frame_border property
+ *
+ * \param ele The dom_html_frame_element object
+ * \param scrolling The returned status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_frame_element_get_scrolling(
+ dom_html_frame_element *ele,
+ dom_string **scrolling)
+{
+ dom_html_document *doc;
+ bool has_value = false;
+ dom_exception err;
+
+ doc = (dom_html_document *) ((dom_node_internal *) ele)->owner;
+
+ err = dom_element_has_attribute(ele,
+ doc->memoised[hds_scrolling], &has_value);
+ if(err !=DOM_NO_ERR)
+ return err;
+
+ if(has_value) {
+ return dom_element_get_attribute(ele,
+ doc->memoised[hds_scrolling], scrolling);
+ }
+
+ *scrolling = ele->scrolling_default;
+ if (*scrolling != NULL)
+ dom_string_ref(*scrolling);
+ return DOM_NO_ERR;
+}
+
+dom_exception dom_html_frame_element_get_content_document(
+ dom_html_frame_element *ele,
+ dom_document **content_document)
+{
+ *content_document = dom_node_get_owner(ele);
+ return DOM_NO_ERR;
+}
diff --git a/src/html/html_frame_element.h b/src/html/html_frame_element.h
index 2e182d5..c313cbc 100644
--- a/src/html/html_frame_element.h
+++ b/src/html/html_frame_element.h
@@ -3,5 +3,52 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_frame_element_h_
+#define dom_internal_html_frame_element_h_
+
+#include <dom/html/html_frame_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_frame_element {
+ struct dom_html_element base;
+ /**< The base class */
+ dom_string *scrolling_default;
+ dom_string *frame_border_default;
+};
+
+/* Create a dom_html_frame_element object */
+dom_exception _dom_html_frame_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_frame_element **ele);
+
+/* Initialise a dom_html_frame_element object */
+dom_exception _dom_html_frame_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_frame_element *ele);
+
+/* Finalise a dom_html_frame_element object */
+void _dom_html_frame_element_finalise(struct dom_html_frame_element *ele);
+
+/* Destroy a dom_html_frame_element object */
+void _dom_html_frame_element_destroy(struct dom_html_frame_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_frame_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_frame_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_frame_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_FRAME_ELEMENT_PROTECT_VTABLE \
+ _dom_html_frame_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_FRAME_ELEMENT \
+ _dom_virtual_html_frame_element_destroy, \
+ _dom_html_frame_element_copy
+
+#endif
diff --git a/src/html/html_frameset_element.c b/src/html/html_frameset_element.c
index 2e182d5..b096156 100644
--- a/src/html/html_frameset_element.c
+++ b/src/html/html_frameset_element.c
@@ -3,5 +3,234 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+#include <dom/html/html_frameset_element.h>
+
+#include "html/html_document.h"
+#include "html/html_frameset_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_FRAME_SET_ELEMENT
+ },
+ DOM_HTML_FRAME_SET_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_frame_set_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_frame_set_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_frame_set_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_frame_set_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_frame_set_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_frame_set_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_frame_set_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_frame_set_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_frame_set_element *ele)
+{
+ dom_string *cols_rows_default = NULL;
+ dom_exception err;
+ err = dom_string_create((const uint8_t *) "100%", SLEN("100%"), &cols_rows_default);
+ if (err != DOM_NO_ERR)
+ return err;
+
+ err = _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_FRAMESET],
+ namespace, prefix);
+ ele->cols_rows_default = cols_rows_default;
+ return err;
+}
+
+/**
+ * Finalise a dom_html_frame_set_element object
+ *
+ * \param ele The dom_html_frame_set_element object
+ */
+void _dom_html_frame_set_element_finalise(struct dom_html_frame_set_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_frame_set_element object
+ *
+ * \param ele The dom_html_frame_set_element object
+ */
+void _dom_html_frame_set_element_destroy(struct dom_html_frame_set_element *ele)
+{
+ _dom_html_frame_set_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_frame_set_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_frame_set_element_destroy(dom_node_internal *node)
+{
+ _dom_html_frame_set_element_destroy((struct dom_html_frame_set_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_frame_set_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_frame_set_element_get_##attr( \
+ dom_html_frame_set_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_frame_set_element_set_##attr( \
+ dom_html_frame_set_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_SET(rows);
+SIMPLE_SET(cols);
+
+/**
+ * Get the rows property
+ *
+ * \param ele The dom_html_frame_set_element object
+ * \param rows The returned status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_frame_set_element_get_rows(
+ dom_html_frame_set_element *ele,
+ dom_string **rows)
+{
+ dom_html_document *doc;
+ bool has_value = false;
+ dom_exception err;
+
+ doc = (dom_html_document *) ((dom_node_internal *) ele)->owner;
+
+ err = dom_element_has_attribute(ele,
+ doc->memoised[hds_rows], &has_value);
+ if(err !=DOM_NO_ERR)
+ return err;
+
+ if(has_value) {
+ return dom_element_get_attribute(ele,
+ doc->memoised[hds_rows], rows);
+ }
+
+ *rows = ele->cols_rows_default;
+ if (*rows != NULL)
+ dom_string_ref(*rows);
+
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get the cols property
+ *
+ * \param ele The dom_html_frame_set_element object
+ * \param cols The returned status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_frame_set_element_get_cols(
+ dom_html_frame_set_element *ele,
+ dom_string **cols)
+{
+ dom_html_document *doc;
+ bool has_value = false;
+ dom_exception err;
+
+ doc = (dom_html_document *) ((dom_node_internal *) ele)->owner;
+
+ err = dom_element_has_attribute(ele,
+ doc->memoised[hds_cols], &has_value);
+ if(err !=DOM_NO_ERR)
+ return err;
+
+ if(has_value) {
+ return dom_element_get_attribute(ele,
+ doc->memoised[hds_cols], cols);
+ }
+
+ *cols = ele->cols_rows_default;
+ if (*cols != NULL)
+ dom_string_ref(*cols);
+ return DOM_NO_ERR;
+}
diff --git a/src/html/html_frameset_element.h b/src/html/html_frameset_element.h
index 2e182d5..fd1c255 100644
--- a/src/html/html_frameset_element.h
+++ b/src/html/html_frameset_element.h
@@ -3,5 +3,51 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_frame_set_element_h_
+#define dom_internal_html_frame_set_element_h_
+
+#include <dom/html/html_frameset_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_frame_set_element {
+ struct dom_html_element base;
+ /**< The base class */
+ dom_string *cols_rows_default;
+};
+
+/* Create a dom_html_frame_set_element object */
+dom_exception _dom_html_frame_set_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_frame_set_element **ele);
+
+/* Initialise a dom_html_frame_set_element object */
+dom_exception _dom_html_frame_set_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_frame_set_element *ele);
+
+/* Finalise a dom_html_frame_set_element object */
+void _dom_html_frame_set_element_finalise(struct dom_html_frame_set_element *ele);
+
+/* Destroy a dom_html_frame_set_element object */
+void _dom_html_frame_set_element_destroy(struct dom_html_frame_set_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_frame_set_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_frame_set_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_frame_set_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_FRAME_SET_ELEMENT_PROTECT_VTABLE \
+ _dom_html_frame_set_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_FRAME_SET_ELEMENT \
+ _dom_virtual_html_frame_set_element_destroy, \
+ _dom_html_frame_set_element_copy
+
+#endif
diff --git a/src/html/html_heading_element.c b/src/html/html_heading_element.c
index 2e182d5..ba2842f 100644
--- a/src/html/html_heading_element.c
+++ b/src/html/html_heading_element.c
@@ -3,5 +3,161 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_heading_element.h>
+
+#include "html/html_document.h"
+#include "html/html_heading_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_HEADING_ELEMENT
+ },
+ DOM_HTML_HEADING_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_heading_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_heading_element_create(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace,
+ dom_string *prefix, struct dom_html_heading_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_heading_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_heading_element_initialise(doc,
+ tag_name, namespace,
+ prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_heading_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_heading_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_heading_element_initialise(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace,
+ dom_string *prefix, struct dom_html_heading_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ tag_name, namespace,
+ prefix);
+}
+
+/**
+ * Finalise a dom_html_heading_element object
+ *
+ * \param ele The dom_html_heading_element object
+ */
+void _dom_html_heading_element_finalise(struct dom_html_heading_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_heading_element object
+ *
+ * \param ele The dom_html_heading_element object
+ */
+void _dom_html_heading_element_destroy(struct dom_html_heading_element *ele)
+{
+ _dom_html_heading_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_heading_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_heading_element_destroy(dom_node_internal *node)
+{
+ _dom_html_heading_element_destroy((struct dom_html_heading_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_heading_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_heading_element_get_##attr( \
+ dom_html_heading_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_heading_element_set_##attr( \
+ dom_html_heading_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(align);
diff --git a/src/html/html_heading_element.h b/src/html/html_heading_element.h
index 2e182d5..fdd1c25 100644
--- a/src/html/html_heading_element.h
+++ b/src/html/html_heading_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_heading_element_h_
+#define dom_internal_html_heading_element_h_
+
+#include <dom/html/html_heading_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_heading_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_heading_element object */
+dom_exception _dom_html_heading_element_create(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace,
+ dom_string *prefix, struct dom_html_heading_element **ele);
+
+/* Initialise a dom_html_heading_element object */
+dom_exception _dom_html_heading_element_initialise(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace,
+ dom_string *prefix, struct dom_html_heading_element *ele);
+
+/* Finalise a dom_html_heading_element object */
+void _dom_html_heading_element_finalise(struct dom_html_heading_element *ele);
+
+/* Destroy a dom_html_heading_element object */
+void _dom_html_heading_element_destroy(struct dom_html_heading_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_heading_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_heading_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_heading_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_HEADING_ELEMENT_PROTECT_VTABLE \
+ _dom_html_heading_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_HEADING_ELEMENT \
+ _dom_virtual_html_heading_element_destroy, \
+ _dom_html_heading_element_copy
+
+#endif
diff --git a/src/html/html_iframe_element.c b/src/html/html_iframe_element.c
index 2e182d5..6f15b3e 100644
--- a/src/html/html_iframe_element.c
+++ b/src/html/html_iframe_element.c
@@ -3,5 +3,267 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_iframe_element.h>
+
+#include "html/html_document.h"
+#include "html/html_iframe_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_IFRAME_ELEMENT
+ },
+ DOM_HTML_IFRAME_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_iframe_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_iframe_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_iframe_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_iframe_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_iframe_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_iframe_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_iframe_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_iframe_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_iframe_element *ele)
+{
+ dom_string *scrolling_default = NULL;
+ dom_exception err;
+ err = dom_string_create((const uint8_t *) "auto", SLEN("auto"), &scrolling_default);
+ if (err != DOM_NO_ERR)
+ return err;
+
+
+ dom_string *frame_border_default = NULL;
+ err = dom_string_create((const uint8_t *) "1", SLEN("1"), &frame_border_default);
+ if (err != DOM_NO_ERR)
+ return err;
+
+ err = _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_IFRAME],
+ namespace, prefix);
+
+ ele->scrolling_default = scrolling_default;
+ ele->frame_border_default = frame_border_default;
+
+ return err;
+}
+
+/**
+ * Finalise a dom_html_iframe_element object
+ *
+ * \param ele The dom_html_iframe_element object
+ */
+void _dom_html_iframe_element_finalise(struct dom_html_iframe_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_iframe_element object
+ *
+ * \param ele The dom_html_iframe_element object
+ */
+void _dom_html_iframe_element_destroy(struct dom_html_iframe_element *ele)
+{
+ _dom_html_iframe_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_iframe_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_iframe_element_destroy(dom_node_internal *node)
+{
+ _dom_html_iframe_element_destroy((struct dom_html_iframe_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_iframe_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_iframe_element_get_##attr( \
+ dom_html_iframe_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_iframe_element_set_##attr( \
+ dom_html_iframe_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(long_desc);
+SIMPLE_GET_SET(align);
+SIMPLE_GET_SET(name);
+SIMPLE_GET_SET(src);
+SIMPLE_GET_SET(margin_width);
+SIMPLE_GET_SET(margin_height);
+SIMPLE_SET(scrolling);
+SIMPLE_SET(frame_border);
+SIMPLE_GET_SET(width);
+SIMPLE_GET_SET(height);
+
+
+/**
+ * Get the frame_border property
+ *
+ * \param ele The dom_html_iframe_element object
+ * \param iframe_border The returned status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_iframe_element_get_frame_border(
+ dom_html_iframe_element *ele,
+ dom_string **frame_border)
+{
+ dom_html_document *doc;
+ bool has_value = false;
+ dom_exception err;
+
+ doc = (dom_html_document *) ((dom_node_internal *) ele)->owner;
+
+ err = dom_element_has_attribute(ele,
+ doc->memoised[hds_frame_border], &has_value);
+ if(err !=DOM_NO_ERR)
+ return err;
+
+ if(has_value) {
+ return dom_element_get_attribute(ele,
+ doc->memoised[hds_frame_border], frame_border);
+ }
+
+ *frame_border = ele->frame_border_default;
+ if (*frame_border != NULL)
+ dom_string_ref(*frame_border);
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get the frame_border property
+ *
+ * \param ele The dom_html_iframe_element object
+ * \param scrolling The returned status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_iframe_element_get_scrolling(
+ dom_html_iframe_element *ele,
+ dom_string **scrolling)
+{
+ dom_html_document *doc;
+ bool has_value = false;
+ dom_exception err;
+
+ doc = (dom_html_document *) ((dom_node_internal *) ele)->owner;
+
+ err = dom_element_has_attribute(ele,
+ doc->memoised[hds_scrolling], &has_value);
+ if(err !=DOM_NO_ERR)
+ return err;
+
+ if(has_value) {
+ return dom_element_get_attribute(ele,
+ doc->memoised[hds_scrolling], scrolling);
+ }
+
+ *scrolling = ele->scrolling_default;
+ if (*scrolling != NULL)
+ dom_string_ref(*scrolling);
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get the frame_border property
+ *
+ * \param ele The dom_html_iframe_element object
+ * \param content_document The returned status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_iframe_element_get_content_document(
+ dom_html_iframe_element *ele,
+ dom_document **content_document)
+{
+ *content_document = dom_node_get_owner(ele);
+ return DOM_NO_ERR;
+}
diff --git a/src/html/html_iframe_element.h b/src/html/html_iframe_element.h
index 2e182d5..dafc9e1 100644
--- a/src/html/html_iframe_element.h
+++ b/src/html/html_iframe_element.h
@@ -3,5 +3,53 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_iframe_element_h_
+#define dom_internal_html_iframe_element_h_
+
+#include <dom/html/html_iframe_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_iframe_element {
+ struct dom_html_element base;
+ /**< The base class */
+ dom_string *scrolling_default;
+ dom_string *frame_border_default;
+};
+
+/* Create a dom_html_iframe_element object */
+dom_exception _dom_html_iframe_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_iframe_element **ele);
+
+/* Initialise a dom_html_iframe_element object */
+dom_exception _dom_html_iframe_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_iframe_element *ele);
+
+/* Finalise a dom_html_iframe_element object */
+void _dom_html_iframe_element_finalise(struct dom_html_iframe_element *ele);
+
+/* Destroy a dom_html_iframe_element object */
+void _dom_html_iframe_element_destroy(struct dom_html_iframe_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_iframe_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_iframe_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_iframe_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_IFRAME_ELEMENT_PROTECT_VTABLE \
+ _dom_html_iframe_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_IFRAME_ELEMENT \
+ _dom_virtual_html_iframe_element_destroy, \
+ _dom_html_iframe_element_copy
+
+#endif
+
diff --git a/src/html/html_image_element.c b/src/html/html_image_element.c
index 2e182d5..77bdd27 100644
--- a/src/html/html_image_element.c
+++ b/src/html/html_image_element.c
@@ -3,5 +3,250 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_image_element.h>
+
+#include "html/html_document.h"
+#include "html/html_image_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_IMAGE_ELEMENT
+ },
+ DOM_HTML_IMAGE_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_image_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_image_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_image_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_image_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_image_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_image_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_image_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_image_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_image_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_IMG],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_image_element object
+ *
+ * \param ele The dom_html_image_element object
+ */
+void _dom_html_image_element_finalise(struct dom_html_image_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_image_element object
+ *
+ * \param ele The dom_html_image_element object
+ */
+void _dom_html_image_element_destroy(struct dom_html_image_element *ele)
+{
+ _dom_html_image_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_image_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_image_element_destroy(dom_node_internal *node)
+{
+ _dom_html_image_element_destroy((struct dom_html_image_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_image_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_image_element_get_##attr( \
+ dom_html_image_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_image_element_set_##attr( \
+ dom_html_image_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(name);
+SIMPLE_GET_SET(align);
+SIMPLE_GET_SET(alt);
+SIMPLE_GET_SET(border);
+SIMPLE_GET_SET(long_desc);
+SIMPLE_GET_SET(src);
+SIMPLE_GET_SET(use_map);
+
+dom_exception dom_html_image_element_get_height(
+ dom_html_image_element *image, int32_t *height)
+{
+ return dom_html_element_get_int32_t_property(&image->base, "height",
+ SLEN("height"), height);
+}
+
+dom_exception dom_html_image_element_set_height(
+ dom_html_image_element *image, uint32_t height)
+{
+ return dom_html_element_set_int32_t_property(&image->base, "height",
+ SLEN("height"), height);
+}
+
+dom_exception dom_html_image_element_get_hspace(
+ dom_html_image_element *image, int32_t *hspace)
+{
+ return dom_html_element_get_int32_t_property(&image->base, "hspace",
+ SLEN("hspace"), hspace);
+}
+
+dom_exception dom_html_image_element_set_hspace(
+ dom_html_image_element *image, uint32_t hspace)
+{
+ return dom_html_element_set_int32_t_property(&image->base, "hspace",
+ SLEN("hspace"), hspace);
+}
+
+dom_exception dom_html_image_element_get_vspace(
+ dom_html_image_element *image, int32_t *vspace)
+{
+ return dom_html_element_get_int32_t_property(&image->base, "vspace",
+ SLEN("cspace"), vspace);
+}
+
+dom_exception dom_html_image_element_set_vspace(
+ dom_html_image_element *image, uint32_t vspace)
+{
+ return dom_html_element_set_int32_t_property(&image->base, "vspace",
+ SLEN("vsapce"), vspace);
+}
+
+dom_exception dom_html_image_element_get_width(
+ dom_html_image_element *image, int32_t *width)
+{
+ return dom_html_element_get_int32_t_property(&image->base, "width",
+ SLEN("width"), width);
+}
+
+dom_exception dom_html_image_element_set_width(
+ dom_html_image_element *image, uint32_t width)
+{
+ return dom_html_element_set_int32_t_property(&image->base, "width",
+ SLEN("width"), width);
+}
+
+/**
+ * Get the is_map property
+ *
+ * \param ele The dom_html_image_element object
+ * \param is_map The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_image_element_get_is_map(dom_html_image_element *ele,
+ bool *is_map)
+{
+ return dom_html_element_get_bool_property(&ele->base, "ismap",
+ SLEN("ismap"), is_map);
+}
+
+/**
+ * Set the is_map property
+ *
+ * \param ele The dom_html_image_element object
+ * \param is_map The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_image_element_set_is_map(dom_html_image_element *ele,
+ bool is_map)
+{
+ return dom_html_element_set_bool_property(&ele->base, "ismap",
+ SLEN("ismap"), is_map);
+}
+
diff --git a/src/html/html_image_element.h b/src/html/html_image_element.h
index 2e182d5..ac73a1b 100644
--- a/src/html/html_image_element.h
+++ b/src/html/html_image_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_image_element_h_
+#define dom_internal_html_image_element_h_
+
+#include <dom/html/html_image_element.h>
+
+#include "html/html_element.h"
+
+struct dom_html_image_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_image_element object */
+dom_exception _dom_html_image_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_image_element **ele);
+
+/* Initialise a dom_html_image_element object */
+dom_exception _dom_html_image_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_image_element *ele);
+
+/* Finalise a dom_html_image_element object */
+void _dom_html_image_element_finalise(struct dom_html_image_element *ele);
+
+/* Destroy a dom_html_image_element object */
+void _dom_html_image_element_destroy(struct dom_html_image_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_image_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_image_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_image_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_IMAGE_ELEMENT_PROTECT_VTABLE \
+ _dom_html_image_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_IMAGE_ELEMENT \
+ _dom_virtual_html_image_element_destroy, \
+ _dom_html_image_element_copy
+
+#endif
diff --git a/src/html/html_input_element.c b/src/html/html_input_element.c
index bab79f2..84079f7 100644
--- a/src/html/html_input_element.c
+++ b/src/html/html_input_element.c
@@ -65,6 +65,8 @@ dom_exception _dom_html_input_element_initialise(struct dom_html_document *doc,
ele->default_checked_set = false;
ele->default_value = NULL;
ele->default_value_set = false;
+ ele->checked = false;
+ ele->checked_set = false;
return _dom_html_element_initialise(doc, &ele->base,
doc->memoised[hds_INPUT],
@@ -166,6 +168,11 @@ dom_exception dom_html_input_element_set_read_only(dom_html_input_element *ele,
dom_exception dom_html_input_element_get_checked(dom_html_input_element *ele,
bool *checked)
{
+ if(ele->checked_set) {
+ *checked = ele->checked;
+ return DOM_NO_ERR;
+ }
+
return dom_html_element_get_bool_property(&ele->base, "checked",
SLEN("checked"), checked);
}
@@ -349,12 +356,24 @@ SIMPLE_GET_SET(access_key);
SIMPLE_GET_SET(align);
SIMPLE_GET_SET(alt);
SIMPLE_GET_SET(name);
-SIMPLE_GET_SET(size);
SIMPLE_GET_SET(src);
SIMPLE_GET(type);
SIMPLE_GET_SET(use_map);
SIMPLE_GET_SET(value);
+dom_exception dom_html_input_element_get_size(
+ dom_html_input_element *input, int32_t *size)
+{
+ return dom_html_element_get_int32_t_property(&input->base, "size",
+ SLEN("size"), size);
+}
+
+dom_exception dom_html_input_element_set_size(
+ dom_html_input_element *input, uint32_t size)
+{
+ return dom_html_element_set_int32_t_property(&input->base, "size",
+ SLEN("size"), size);
+}
dom_exception dom_html_input_element_get_tab_index(
dom_html_input_element *input, int32_t *tab_index)
{
@@ -435,11 +454,11 @@ dom_exception dom_html_input_element_focus(dom_html_input_element *ele)
bool success = false;
assert(doc != NULL);
- /** \todo Is this event (a) default (b) bubbling and (c) cancelable? */
+ /** \this event doesnt bubble and is non-cancelable src:wikipedia*/
return _dom_dispatch_generic_event((dom_document *)doc,
(dom_event_target *) ele,
- doc->memoised[hds_focus], true,
- true, &success);
+ doc->memoised[hds_focus], false,
+ false, &success);
}
/**
@@ -455,11 +474,11 @@ dom_exception dom_html_input_element_select(dom_html_input_element *ele)
bool success = false;
assert(doc != NULL);
- /** \todo Is this event (a) default (b) bubbling and (c) cancelable? */
+ /** \this event bubbles and non-cancelable src:wikipedia*/
return _dom_dispatch_generic_event((dom_document *)doc,
(dom_event_target *) ele,
doc->memoised[hds_select], true,
- true, &success);
+ false, &success);
}
/**
@@ -473,13 +492,21 @@ dom_exception dom_html_input_element_click(dom_html_input_element *ele)
struct dom_html_document *doc =
(dom_html_document *) dom_node_get_owner(ele);
bool success = false;
+ dom_exception err;
assert(doc != NULL);
- /** \todo Is this is meant to check/uncheck boxes, radios etc */
- /** \todo Is this event (a) default (b) bubbling and (c) cancelable? */
- return _dom_dispatch_generic_event((dom_document *)doc,
+
+ /** \This event bubbles & is cancelable src:Wikipedia*/
+ err = _dom_dispatch_generic_event((dom_document *)doc,
(dom_event_target *) ele,
doc->memoised[hds_click], true,
true, &success);
+ if(err != DOM_NO_ERR)
+ return err;
+
+ ele->checked = true;
+ ele->checked_set = true;
+
+ return DOM_NO_ERR;
}
diff --git a/src/html/html_input_element.h b/src/html/html_input_element.h
index 72c7d51..b818b2e 100644
--- a/src/html/html_input_element.h
+++ b/src/html/html_input_element.h
@@ -21,6 +21,8 @@ struct dom_html_input_element {
bool default_checked_set; /**< Whether default_checked has been set */
dom_string *default_value; /**< Initial value */
bool default_value_set; /**< Whether default_value has been set */
+ bool checked; /**< Whether the element has been checked by a click */
+ bool checked_set;
};
/* Create a dom_html_input_element object */
diff --git a/src/html/html_isindex_element.c b/src/html/html_isindex_element.c
index 6dc96b9..e79e011 100644
--- a/src/html/html_isindex_element.c
+++ b/src/html/html_isindex_element.c
@@ -7,9 +7,13 @@
#include <stdlib.h>
+#include <dom/html/html_isindex_element.h>
+
+#include "html/html_document.h"
#include "html/html_isindex_element.h"
#include "core/node.h"
+#include "core/attr.h"
#include "utils/utils.h"
static struct dom_element_protected_vtable _protect_vtable = {
@@ -22,55 +26,41 @@ static struct dom_element_protected_vtable _protect_vtable = {
/**
* Create a dom_html_isindex_element object
*
- * \param doc The document object
- * \param form The form element which contains this element
- * \param ele The returned element object
+ * \param doc The document object
+ * \param ele The returned element object
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
dom_exception _dom_html_isindex_element_create(struct dom_html_document *doc,
- struct dom_html_form_element *form,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_isindex_element **ele)
{
struct dom_node_internal *node;
-
*ele = malloc(sizeof(dom_html_isindex_element));
if (*ele == NULL)
return DOM_NO_MEM_ERR;
-
+
/* Set up vtables */
node = (struct dom_node_internal *) *ele;
node->base.vtable = &_dom_html_element_vtable;
node->vtable = &_protect_vtable;
- return _dom_html_isindex_element_initialise(doc, form, *ele);
+ return _dom_html_isindex_element_initialise(doc, namespace, prefix, *ele);
}
/**
* Initialise a dom_html_isindex_element object
*
- * \param doc The document object
- * \param form The form element which contains this element
- * \param ele The dom_html_isindex_element object
+ * \param doc The document object
+ * \param ele The dom_html_isindex_element object
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
dom_exception _dom_html_isindex_element_initialise(struct dom_html_document *doc,
- struct dom_html_form_element *form,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_isindex_element *ele)
{
- dom_string *name = NULL;
- dom_exception err;
-
- UNUSED(form);
-
- err = dom_string_create((const uint8_t *) "ISINDEX", SLEN("ISINDEX"),
- &name);
- if (err != DOM_NO_ERR)
- return err;
-
- err = _dom_html_element_initialise(doc, &ele->base, name, NULL, NULL);
- dom_string_unref(name);
-
- return err;
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_ISINDEX],
+ namespace, prefix);
}
/**
@@ -125,7 +115,46 @@ dom_exception _dom_html_isindex_element_copy(dom_node_internal *old,
return _dom_html_element_copy(old, copy);
}
-
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_isindex_element_get_##attr( \
+ dom_html_isindex_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_isindex_element_set_##attr( \
+ dom_html_isindex_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+SIMPLE_GET_SET(prompt);
/*-----------------------------------------------------------------------*/
/* Public APIs */
diff --git a/src/html/html_isindex_element.h b/src/html/html_isindex_element.h
index 12ad26e..a39170b 100644
--- a/src/html/html_isindex_element.h
+++ b/src/html/html_isindex_element.h
@@ -19,12 +19,12 @@ struct dom_html_isindex_element {
/* Create a dom_html_isindex_element object */
dom_exception _dom_html_isindex_element_create(struct dom_html_document *doc,
- struct dom_html_form_element *form,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_isindex_element **ele);
/* Initialise a dom_html_isindex_element object */
dom_exception _dom_html_isindex_element_initialise(struct dom_html_document *doc,
- struct dom_html_form_element *form,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_isindex_element *ele);
/* Finalise a dom_html_isindex_element object */
diff --git a/src/html/html_label_element.c b/src/html/html_label_element.c
index 2e182d5..1ffbf71 100644
--- a/src/html/html_label_element.c
+++ b/src/html/html_label_element.c
@@ -3,5 +3,192 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include "html/html_document.h"
+#include "html/html_label_element.h"
+
+#include "core/node.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_LABEL_ELEMENT
+ },
+ DOM_HTML_LABEL_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_label_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_label_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_label_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_label_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_label_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_label_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_label_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_label_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_label_element *ele)
+{
+ ele->form = NULL;
+
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_LABEL],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_label_element object
+ *
+ * \param ele The dom_html_label_element object
+ */
+void _dom_html_label_element_finalise(struct dom_html_label_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_label_element object
+ *
+ * \param ele The dom_html_label_element object
+ */
+void _dom_html_label_element_destroy(struct dom_html_label_element *ele)
+{
+ _dom_html_label_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_label_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_label_element_destroy(dom_node_internal *node)
+{
+ _dom_html_label_element_destroy((struct dom_html_label_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_label_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/**
+ * Get the dom_html_form_element object
+ *
+ * \param label The dom_html_label_element object
+ * \param form The returned dom_htmlform_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_label_element_get_form(
+ dom_html_label_element *label, dom_html_form_element **form)
+{
+ dom_html_document *doc
+ = (dom_html_document *) ((dom_node_internal *) label)->owner;
+ dom_node_internal *form_tmp = ((dom_node_internal *) label)->parent;
+
+ /* Search ancestor chain for FIELDSET element */
+ while (form_tmp != NULL) {
+ if (form_tmp->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(form_tmp->name,
+ doc->memoised[hds_FORM]))
+ break;
+
+ form_tmp = form_tmp->parent;
+ }
+
+ if (form_tmp != NULL) {
+ *form = (dom_html_form_element *) form_tmp;
+ return DOM_NO_ERR;
+ }
+
+ *form = NULL;
+
+ return DOM_NO_ERR;
+}
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_label_element_get_##attr( \
+ dom_html_label_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_label_element_set_##attr( \
+ dom_html_label_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+SIMPLE_GET_SET(access_key);
+SIMPLE_GET_SET(html_for);
+
diff --git a/src/html/html_label_element.h b/src/html/html_label_element.h
index 2e182d5..e28b453 100644
--- a/src/html/html_label_element.h
+++ b/src/html/html_label_element.h
@@ -3,5 +3,52 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_label_element_h_
+#define dom_internal_html_label_element_h_
+
+#include <dom/html/html_label_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_label_element {
+ struct dom_html_element base;
+ /**< The base class */
+ dom_html_form_element *form;
+ /**< The form associated with label */
+};
+
+/* Create a dom_html_label_element object */
+dom_exception _dom_html_label_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_label_element **ele);
+
+/* Initialise a dom_html_label_element object */
+dom_exception _dom_html_label_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_label_element *ele);
+
+/* Finalise a dom_html_label_element object */
+void _dom_html_label_element_finalise(struct dom_html_label_element *ele);
+
+/* Destroy a dom_html_label_element object */
+void _dom_html_label_element_destroy(struct dom_html_label_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_label_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_label_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_label_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_LABEL_ELEMENT_PROTECT_VTABLE \
+ _dom_html_label_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_LABEL_ELEMENT \
+ _dom_virtual_html_label_element_destroy, \
+ _dom_html_label_element_copy
+
+#endif
diff --git a/src/html/html_legend_element.c b/src/html/html_legend_element.c
index 2e182d5..2d0e939 100644
--- a/src/html/html_legend_element.c
+++ b/src/html/html_legend_element.c
@@ -3,5 +3,213 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_legend_element.h>
+#include <dom/html/html_fieldset_element.h>
+
+#include "html/html_document.h"
+#include "html/html_legend_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_LEGEND_ELEMENT
+ },
+ DOM_HTML_LEGEND_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_legend_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_legend_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_legend_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_legend_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_legend_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_legend_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_legend_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_legend_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_legend_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_LEGEND],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_legend_element object
+ *
+ * \param ele The dom_html_legend_element object
+ */
+void _dom_html_legend_element_finalise(struct dom_html_legend_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_legend_element object
+ *
+ * \param ele The dom_html_legend_element object
+ */
+void _dom_html_legend_element_destroy(struct dom_html_legend_element *ele)
+{
+ _dom_html_legend_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the dom_html_form_element object
+ *
+ * \param legend The dom_html_legend_element object
+ * \param form The returned dom_html_form_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_legend_element_get_form(
+ dom_html_legend_element *legend, dom_html_form_element **form)
+{
+ dom_html_document *doc
+ = (dom_html_document *) ((dom_node_internal *) legend)->owner;
+ dom_node_internal *field_set = ((dom_node_internal *) legend)->parent;
+
+ /* Search ancestor chain for FIELDSET element */
+ while (field_set != NULL) {
+ if (field_set->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(field_set->name,
+ doc->memoised[hds_FIELDSET]))
+ break;
+
+ field_set = field_set->parent;
+ }
+
+ if (field_set != NULL) {
+ return dom_html_field_set_element_get_form((dom_html_field_set_element *) field_set,
+ form);
+ }
+
+ *form = NULL;
+
+ return DOM_NO_ERR;
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_legend_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_legend_element_destroy(dom_node_internal *node)
+{
+ _dom_html_legend_element_destroy((struct dom_html_legend_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_legend_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_legend_element_get_##attr( \
+ dom_html_legend_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_legend_element_set_##attr( \
+ dom_html_legend_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(access_key);
+SIMPLE_SET(align);
+
+dom_exception dom_html_legend_element_get_align(
+ dom_html_legend_element *legend, dom_string **align)
+{
+ dom_exception err;
+ dom_html_document *doc = (dom_html_document *)
+ ((dom_node_internal *)legend)->owner;
+ err = dom_element_get_attribute(legend,
+ doc->memoised[hds_align], align);
+ if (err != DOM_NO_ERR)
+ return err;
+
+ if (*align == NULL) {
+ err = dom_string_create((const uint8_t *) "none", SLEN("none"), align);
+ }
+
+ return err;
+}
+
diff --git a/src/html/html_legend_element.h b/src/html/html_legend_element.h
index 2e182d5..a656ae4 100644
--- a/src/html/html_legend_element.h
+++ b/src/html/html_legend_element.h
@@ -3,5 +3,51 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_legend_element_h_
+#define dom_internal_html_legend_element_h_
+
+#include <dom/html/html_legend_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_legend_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_legend_element object */
+dom_exception _dom_html_legend_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_legend_element **ele);
+
+/* Initialise a dom_html_legend_element object */
+dom_exception _dom_html_legend_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_legend_element *ele);
+
+/* Finalise a dom_html_legend_element object */
+void _dom_html_legend_element_finalise(struct dom_html_legend_element *ele);
+
+/* Destroy a dom_html_legend_element object */
+void _dom_html_legend_element_destroy(struct dom_html_legend_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_legend_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_legend_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_legend_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_LEGEND_ELEMENT_PROTECT_VTABLE \
+ _dom_html_legend_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_LEGEND_ELEMENT \
+ _dom_virtual_html_legend_element_destroy, \
+ _dom_html_legend_element_copy
+
+#endif
+
diff --git a/src/html/html_li_element.c b/src/html/html_li_element.c
index 2e182d5..ca265ae 100644
--- a/src/html/html_li_element.c
+++ b/src/html/html_li_element.c
@@ -3,5 +3,182 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+#include <dom/html/html_li_element.h>
+
+#include "html/html_document.h"
+#include "html/html_li_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_LI_ELEMENT
+ },
+ DOM_HTML_LI_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_li_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_li_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *lifix,
+ struct dom_html_li_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_li_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_li_element_initialise(doc, namespace, lifix, *ele);
+}
+
+/**
+ * Initialise a dom_html_li_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_li_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_li_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *lifix,
+ struct dom_html_li_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_LI],
+ namespace, lifix);
+}
+
+/**
+ * Finalise a dom_html_li_element object
+ *
+ * \param ele The dom_html_li_element object
+ */
+void _dom_html_li_element_finalise(struct dom_html_li_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_li_element object
+ *
+ * \param ele The dom_html_li_element object
+ */
+void _dom_html_li_element_destroy(struct dom_html_li_element *ele)
+{
+ _dom_html_li_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the value Property
+ *
+ * \param li The dom_html_li_element object
+ */
+dom_exception dom_html_li_element_get_value(
+ dom_html_li_element *li, int32_t *value)
+{
+ return dom_html_element_get_int32_t_property(&li->base, "value",
+ SLEN("value"), value);
+}
+
+/**
+ * Set the value Property
+ *
+ * \param li The dom_html_li_element object
+ */
+dom_exception dom_html_li_element_set_value(
+ dom_html_li_element *li, uint32_t value)
+{
+ return dom_html_element_set_int32_t_property(&li->base, "value",
+ SLEN("value"), value);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_li_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_li_element_destroy(dom_node_internal *node)
+{
+ _dom_html_li_element_destroy((struct dom_html_li_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_li_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_li_element_get_##attr( \
+ dom_html_li_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_li_element_set_##attr( \
+ dom_html_li_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(type);
diff --git a/src/html/html_li_element.h b/src/html/html_li_element.h
index 2e182d5..c50a2db 100644
--- a/src/html/html_li_element.h
+++ b/src/html/html_li_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_li_element_h_
+#define dom_internal_html_li_element_h_
+
+#include <dom/html/html_li_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_li_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_li_element object */
+dom_exception _dom_html_li_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *lifix,
+ struct dom_html_li_element **ele);
+
+/* Initialise a dom_html_li_element object */
+dom_exception _dom_html_li_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *lifix,
+ struct dom_html_li_element *ele);
+
+/* Finalise a dom_html_li_element object */
+void _dom_html_li_element_finalise(struct dom_html_li_element *ele);
+
+/* Destroy a dom_html_li_element object */
+void _dom_html_li_element_destroy(struct dom_html_li_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_li_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_li_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_li_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_LI_ELEMENT_PROTECT_VTABLE \
+ _dom_html_li_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_LI_ELEMENT \
+ _dom_virtual_html_li_element_destroy, \
+ _dom_html_li_element_copy
+
+#endif
diff --git a/src/html/html_map_element.c b/src/html/html_map_element.c
index 2e182d5..cf0fe5e 100644
--- a/src/html/html_map_element.c
+++ b/src/html/html_map_element.c
@@ -3,5 +3,193 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+#include <dom/html/html_map_element.h>
+
+#include "html/html_document.h"
+#include "html/html_map_element.h"
+
+#include "html/html_collection.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_MAP_ELEMENT
+ },
+ DOM_HTML_MAP_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_map_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_map_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_map_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_map_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_map_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_map_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_map_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_map_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_map_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_MAP],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_map_element object
+ *
+ * \param ele The dom_html_map_element object
+ */
+void _dom_html_map_element_finalise(struct dom_html_map_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_map_element object
+ *
+ * \param ele The dom_html_map_element object
+ */
+void _dom_html_map_element_destroy(struct dom_html_map_element *ele)
+{
+ _dom_html_map_element_finalise(ele);
+ free(ele);
+}
+
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_map_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_map_element_destroy(dom_node_internal *node)
+{
+ _dom_html_map_element_destroy((struct dom_html_map_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_map_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_map_element_get_##attr( \
+ dom_html_map_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_map_element_set_##attr( \
+ dom_html_map_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(name);
+
+/* The callback function for _dom_html_collection_create*/
+bool callback(struct dom_node_internal *node, void *ctx)
+{
+ if(node->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_AREA]))
+ {
+ return true;
+ }
+
+ return false;
+}
+
+/**
+ * Get the areas property
+ *
+ * \param ele The dom_html_map_element object
+ * \param areas The returned dom_html_collection object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+
+dom_exception dom_html_map_element_get_areas(
+ dom_html_map_element *ele, dom_html_collection **areas)
+{
+ dom_html_document *doc
+ = (dom_html_document *) ((dom_node_internal *) ele)->owner;
+
+ /*doc is passed as a parameter to callback to avoid repeated calculations */
+ return _dom_html_collection_create(doc, (dom_node_internal *) ele,
+ callback, (void *) doc, areas);
+}
diff --git a/src/html/html_map_element.h b/src/html/html_map_element.h
index 2e182d5..0230808 100644
--- a/src/html/html_map_element.h
+++ b/src/html/html_map_element.h
@@ -3,5 +3,52 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_map_element_h_
+#define dom_internal_html_map_element_h_
+
+#include <dom/html/html_map_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_map_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_map_element object */
+dom_exception _dom_html_map_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_map_element **ele);
+
+/* Initialise a dom_html_map_element object */
+dom_exception _dom_html_map_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_map_element *ele);
+
+/* Finalise a dom_html_map_element object */
+void _dom_html_map_element_finalise(struct dom_html_map_element *ele);
+
+/* Destroy a dom_html_map_element object */
+void _dom_html_map_element_destroy(struct dom_html_map_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_map_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_map_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_map_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_MAP_ELEMENT_PROTECT_VTABLE \
+ _dom_html_map_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_MAP_ELEMENT \
+ _dom_virtual_html_map_element_destroy, \
+ _dom_html_map_element_copy
+
+#endif
+
+bool callback(struct dom_node_internal *node, void *ctx);
diff --git a/src/html/html_menu_element.c b/src/html/html_menu_element.c
index 2e182d5..af0f34c 100644
--- a/src/html/html_menu_element.c
+++ b/src/html/html_menu_element.c
@@ -3,5 +3,145 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_menu_element.h>
+
+#include "html/html_document.h"
+#include "html/html_menu_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_MENU_ELEMENT
+ },
+ DOM_HTML_MENU_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_menu_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_menu_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_menu_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_menu_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_menu_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_menu_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_menu_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_menu_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_menu_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_MENU],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_menu_element object
+ *
+ * \param ele The dom_html_menu_element object
+ */
+void _dom_html_menu_element_finalise(struct dom_html_menu_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_menu_element object
+ *
+ * \param ele The dom_html_menu_element object
+ */
+void _dom_html_menu_element_destroy(struct dom_html_menu_element *ele)
+{
+ _dom_html_menu_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the compact property
+ *
+ * \param ele The dom_html_menu_element object
+ * \param compact The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_menu_element_get_compact(dom_html_menu_element *ele,
+ bool *compact)
+{
+ return dom_html_element_get_bool_property(&ele->base, "compact",
+ SLEN("compact"), compact);
+}
+
+/**
+ * Set the compact property
+ *
+ * \param ele The dom_html_menu_element object
+ * \param compact The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_menu_element_set_compact(dom_html_menu_element *ele,
+ bool compact)
+{
+ return dom_html_element_set_bool_property(&ele->base, "compact",
+ SLEN("compact"), compact);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_menu_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_menu_element_destroy(dom_node_internal *node)
+{
+ _dom_html_menu_element_destroy((struct dom_html_menu_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_menu_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
diff --git a/src/html/html_menu_element.h b/src/html/html_menu_element.h
index 2e182d5..cb84e3d 100644
--- a/src/html/html_menu_element.h
+++ b/src/html/html_menu_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_menu_element_h_
+#define dom_internal_html_menu_element_h_
+
+#include <dom/html/html_menu_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_menu_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_menu_element object */
+dom_exception _dom_html_menu_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_menu_element **ele);
+
+/* Initialise a dom_html_menu_element object */
+dom_exception _dom_html_menu_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_menu_element *ele);
+
+/* Finalise a dom_html_menu_element object */
+void _dom_html_menu_element_finalise(struct dom_html_menu_element *ele);
+
+/* Destroy a dom_html_menu_element object */
+void _dom_html_menu_element_destroy(struct dom_html_menu_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_menu_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_menu_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_menu_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_MENU_ELEMENT_PROTECT_VTABLE \
+ _dom_html_menu_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_MENU_ELEMENT \
+ _dom_virtual_html_menu_element_destroy, \
+ _dom_html_menu_element_copy
+
+#endif
diff --git a/src/html/html_mod_element.c b/src/html/html_mod_element.c
index 2e182d5..f20a994 100644
--- a/src/html/html_mod_element.c
+++ b/src/html/html_mod_element.c
@@ -3,5 +3,161 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_mod_element.h>
+
+#include "html/html_document.h"
+#include "html/html_mod_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_MOD_ELEMENT
+ },
+ DOM_HTML_MOD_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_mod_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_mod_element_create(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace,
+ dom_string *prefix, struct dom_html_mod_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_mod_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_mod_element_initialise(doc, tag_name, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_mod_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_mod_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_mod_element_initialise(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace,
+ dom_string *prefix, struct dom_html_mod_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ tag_name,
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_mod_element object
+ *
+ * \param ele The dom_html_mod_element object
+ */
+void _dom_html_mod_element_finalise(struct dom_html_mod_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_mod_element object
+ *
+ * \param ele The dom_html_mod_element object
+ */
+void _dom_html_mod_element_destroy(struct dom_html_mod_element *ele)
+{
+ _dom_html_mod_element_finalise(ele);
+ free(ele);
+}
+
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_mod_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_mod_element_destroy(dom_node_internal *node)
+{
+ _dom_html_mod_element_destroy((struct dom_html_mod_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_mod_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_mod_element_get_##attr( \
+ dom_html_mod_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_mod_element_set_##attr( \
+ dom_html_mod_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(cite);
+SIMPLE_GET_SET(date_time);
diff --git a/src/html/html_mod_element.h b/src/html/html_mod_element.h
index 2e182d5..9df07d5 100644
--- a/src/html/html_mod_element.h
+++ b/src/html/html_mod_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_mod_element_h_
+#define dom_internal_html_mod_element_h_
+
+#include <dom/html/html_mod_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_mod_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_mod_element object */
+dom_exception _dom_html_mod_element_create(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace,
+ dom_string *prefix, struct dom_html_mod_element **ele);
+
+/* Initialise a dom_html_mod_element object */
+dom_exception _dom_html_mod_element_initialise(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_mod_element *ele);
+
+/* Finalise a dom_html_mod_element object */
+void _dom_html_mod_element_finalise(struct dom_html_mod_element *ele);
+
+/* Destroy a dom_html_mod_element object */
+void _dom_html_mod_element_destroy(struct dom_html_mod_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_mod_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_mod_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_mod_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_MOD_ELEMENT_PROTECT_VTABLE \
+ _dom_html_mod_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_MOD_ELEMENT \
+ _dom_virtual_html_mod_element_destroy, \
+ _dom_html_mod_element_copy
+
+#endif
diff --git a/src/html/html_object_element.c b/src/html/html_object_element.c
index 2e182d5..7da4567 100644
--- a/src/html/html_object_element.c
+++ b/src/html/html_object_element.c
@@ -3,5 +3,264 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_object_element.h>
+
+#include "html/html_document.h"
+#include "html/html_object_element.h"
+
+#include "html/html_form_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_OBJECT_ELEMENT
+ },
+ DOM_HTML_OBJECT_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_object_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_object_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_object_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_object_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_object_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_object_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_object_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_object_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_object_element *ele)
+{
+ ele->form = NULL;
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_OBJECT],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_object_element object
+ *
+ * \param ele The dom_html_object_element object
+ */
+void _dom_html_object_element_finalise(struct dom_html_object_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_object_element object
+ *
+ * \param ele The dom_html_object_element object
+ */
+void _dom_html_object_element_destroy(struct dom_html_object_element *ele)
+{
+ _dom_html_object_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_object_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_object_element_destroy(dom_node_internal *node)
+{
+ _dom_html_object_element_destroy((struct dom_html_object_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_object_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_object_element_get_##attr( \
+ dom_html_object_element *element, \
+ dom_string **attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_object_element_set_##attr( \
+ dom_html_object_element *element, \
+ dom_string *attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(code);
+SIMPLE_GET_SET(align);
+SIMPLE_GET_SET(archive);
+SIMPLE_GET_SET(border);
+SIMPLE_GET_SET(code_base);
+SIMPLE_GET_SET(code_type);
+SIMPLE_GET_SET(data);
+SIMPLE_GET_SET(height);
+SIMPLE_GET_SET(name);
+SIMPLE_GET_SET(standby);
+SIMPLE_GET_SET(type);
+SIMPLE_GET_SET(use_map);
+SIMPLE_GET_SET(width);
+
+dom_exception dom_html_object_element_get_hspace(
+ dom_html_object_element *object, int32_t *hspace)
+{
+ return dom_html_element_get_int32_t_property(&object->base, "hspace",
+ SLEN("hspace"), hspace);
+}
+
+dom_exception dom_html_object_element_set_hspace(
+ dom_html_object_element *object, uint32_t hspace)
+{
+ return dom_html_element_set_int32_t_property(&object->base, "hspace",
+ SLEN("hspace"), hspace);
+}
+
+dom_exception dom_html_object_element_get_vspace(
+ dom_html_object_element *object, int32_t *vspace)
+{
+ return dom_html_element_get_int32_t_property(&object->base, "vspace",
+ SLEN("vspace"), vspace);
+}
+
+dom_exception dom_html_object_element_set_vspace(
+ dom_html_object_element *object, uint32_t vspace)
+{
+ return dom_html_element_set_int32_t_property(&object->base, "vspace",
+ SLEN("vspace"), vspace);
+}
+
+dom_exception dom_html_object_element_get_tab_index(
+ dom_html_object_element *object, int32_t *tab_index)
+{
+ return dom_html_element_get_int32_t_property(&object->base, "tabindex",
+ SLEN("tabindex"), tab_index);
+}
+
+dom_exception dom_html_object_element_set_tab_index(
+ dom_html_object_element *object, uint32_t tab_index)
+{
+ return dom_html_element_set_int32_t_property(&object->base, "tabindex",
+ SLEN("tabindex"), tab_index);
+}
+
+dom_exception dom_html_object_element_get_declare(dom_html_object_element *ele,
+ bool *declare)
+{
+ return dom_html_element_get_bool_property(&ele->base, "declare",
+ SLEN("declare"), declare);
+}
+
+dom_exception dom_html_object_element_set_declare(dom_html_object_element *ele,
+ bool declare)
+{
+ return dom_html_element_set_bool_property(&ele->base, "declare",
+ SLEN("declare"), declare);
+}
+
+dom_exception dom_html_object_element_get_form(
+ dom_html_object_element *object, dom_html_form_element **form)
+{
+ dom_html_document *doc
+ = (dom_html_document *) ((dom_node_internal *) object)->owner;
+ dom_node_internal *form_tmp = ((dom_node_internal *) object)->parent;
+
+ while (form_tmp != NULL) {
+ if (form_tmp->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(form_tmp->name,
+ doc->memoised[hds_FORM]))
+ break;
+
+ form_tmp = form_tmp->parent;
+ }
+
+ if (form_tmp != NULL) {
+ *form = (dom_html_form_element *) form_tmp;
+ return DOM_NO_ERR;
+ }
+
+ *form = NULL;
+
+ return DOM_NO_ERR;
+}
+
+dom_exception dom_html_object_element_get_content_document(
+ dom_html_object_element *object, dom_document **content_document)
+{
+ *content_document = (((dom_node_internal *) object)->owner);
+ return DOM_NO_ERR;
+}
+
diff --git a/src/html/html_object_element.h b/src/html/html_object_element.h
index 2e182d5..83512d6 100644
--- a/src/html/html_object_element.h
+++ b/src/html/html_object_element.h
@@ -3,5 +3,54 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_object_element_h_
+#define dom_internal_html_object_element_h_
+
+#include <dom/html/html_object_element.h>
+
+#include "html/html_element.h"
+
+struct dom_html_object_element {
+ struct dom_html_element base;
+ /**< The base class */
+ dom_html_form_element *form;
+ /**< The form associated with object */
+};
+
+/* Create a dom_html_object_element object */
+dom_exception _dom_html_object_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_object_element **ele);
+
+/* Initialise a dom_html_object_element object */
+dom_exception _dom_html_object_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_object_element *ele);
+
+/* Finalise a dom_html_object_element object */
+void _dom_html_object_element_finalise(struct dom_html_object_element *ele);
+
+/* Destroy a dom_html_object_element object */
+void _dom_html_object_element_destroy(struct dom_html_object_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_object_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+
+void _dom_virtual_html_object_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_object_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_OBJECT_ELEMENT_PROTECT_VTABLE \
+ _dom_html_object_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_OBJECT_ELEMENT \
+ _dom_virtual_html_object_element_destroy, \
+ _dom_html_object_element_copy
+
+#endif
+
diff --git a/src/html/html_olist_element.c b/src/html/html_olist_element.c
index 2e182d5..16b8763 100644
--- a/src/html/html_olist_element.c
+++ b/src/html/html_olist_element.c
@@ -3,5 +3,206 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+#include <dom/html/html_olist_element.h>
+
+#include "html/html_document.h"
+#include "html/html_olist_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_O_LIST_ELEMENT
+ },
+ DOM_HTML_O_LIST_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_o_list_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_o_list_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *o_listfix,
+ struct dom_html_o_list_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_o_list_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_o_list_element_initialise(doc, namespace, o_listfix, *ele);
+}
+
+/**
+ * Initialise a dom_html_o_list_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_o_list_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_o_list_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *o_listfix,
+ struct dom_html_o_list_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_OL],
+ namespace, o_listfix);
+}
+
+/**
+ * Finalise a dom_html_o_list_element object
+ *
+ * \param ele The dom_html_o_list_element object
+ */
+void _dom_html_o_list_element_finalise(struct dom_html_o_list_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_o_list_element object
+ *
+ * \param ele The dom_html_o_list_element object
+ */
+void _dom_html_o_list_element_destroy(struct dom_html_o_list_element *ele)
+{
+ _dom_html_o_list_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the compact Property
+ *
+ * \param o_list The dom_html_o_list_element object
+ */
+dom_exception dom_html_o_list_element_get_compact(
+ dom_html_o_list_element *o_list, bool *compact)
+{
+ return dom_html_element_get_bool_property(&o_list->base, "compact",
+ SLEN("compact"), compact);
+}
+
+/**
+ * Set the compact Property
+ *
+ * \param o_list The dom_html_o_list_element object
+ */
+dom_exception dom_html_o_list_element_set_compact(
+ dom_html_o_list_element *o_list, bool compact)
+{
+ return dom_html_element_set_bool_property(&o_list->base, "compact",
+ SLEN("compact"), compact);
+}
+
+/**
+ * Get the start Property
+ *
+ * \param o_list The dom_html_o_list_element object
+ */
+dom_exception dom_html_o_list_element_get_start(
+ dom_html_o_list_element *o_list, int32_t *start)
+{
+ return dom_html_element_get_int32_t_property(&o_list->base, "start",
+ SLEN("start"), start);
+}
+
+/**
+ * Set the start Property
+ *
+ * \param o_list The dom_html_o_list_element object
+ */
+dom_exception dom_html_o_list_element_set_start(
+ dom_html_o_list_element *o_list, uint32_t start)
+{
+ return dom_html_element_set_int32_t_property(&o_list->base, "start",
+ SLEN("start"), start);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_o_list_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_o_list_element_destroy(dom_node_internal *node)
+{
+ _dom_html_o_list_element_destroy((struct dom_html_o_list_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_o_list_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_o_list_element_get_##attr( \
+ dom_html_o_list_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_o_list_element_set_##attr( \
+ dom_html_o_list_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(type);
diff --git a/src/html/html_olist_element.h b/src/html/html_olist_element.h
index 2e182d5..301d8ac 100644
--- a/src/html/html_olist_element.h
+++ b/src/html/html_olist_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_o_list_element_h_
+#define dom_internal_html_o_list_element_h_
+
+#include <dom/html/html_olist_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_o_list_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_o_list_element object */
+dom_exception _dom_html_o_list_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *o_listfix,
+ struct dom_html_o_list_element **ele);
+
+/* Initialise a dom_html_o_list_element object */
+dom_exception _dom_html_o_list_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *o_listfix,
+ struct dom_html_o_list_element *ele);
+
+/* Finalise a dom_html_o_list_element object */
+void _dom_html_o_list_element_finalise(struct dom_html_o_list_element *ele);
+
+/* Destroy a dom_html_o_list_element object */
+void _dom_html_o_list_element_destroy(struct dom_html_o_list_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_o_list_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_o_list_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_o_list_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_O_LIST_ELEMENT_PROTECT_VTABLE \
+ _dom_html_o_list_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_O_LIST_ELEMENT \
+ _dom_virtual_html_o_list_element_destroy, \
+ _dom_html_o_list_element_copy
+
+#endif
diff --git a/src/html/html_option_element.c b/src/html/html_option_element.c
index b133deb..b777c5f 100644
--- a/src/html/html_option_element.c
+++ b/src/html/html_option_element.c
@@ -255,13 +255,22 @@ dom_exception dom_html_option_element_get_text(
* \return DOM_NO_ERR on success, appropriate error otherwise.
*/
dom_exception dom_html_option_element_get_index(
- dom_html_option_element *option, unsigned long *index)
+ dom_html_option_element *option, int32_t *index)
{
- UNUSED(option);
- UNUSED(index);
+ dom_html_document *doc = (dom_html_document *) dom_node_get_owner(option);
+ int32_t idx = 0;
+ dom_node_internal *n = ((dom_node_internal *)option)->parent;
- /** \todo Implement */
- return DOM_NOT_SUPPORTED_ERR;
+ for(n = n->first_child;n != NULL; n = n->next) {
+ if((dom_node_internal *)option == n) {
+ *index = idx;
+ break;
+ } else if(dom_string_caseless_isequal(n->name,doc->memoised[hds_OPTION])) {
+ idx += 1;
+ }
+ }
+
+ return DOM_NO_ERR;
}
/**
diff --git a/src/html/html_options_collection.c b/src/html/html_options_collection.c
index 85001ad..3e06915 100644
--- a/src/html/html_options_collection.c
+++ b/src/html/html_options_collection.c
@@ -190,13 +190,13 @@ dom_exception dom_html_options_collection_named_item(dom_html_options_collection
/* No children and siblings */
struct dom_node_internal *parent = n->parent;
- while (parent != col->base.root &&
+ while (n != col->base.root &&
n == parent->last_child) {
n = parent;
parent = parent->parent;
}
- if (parent == col->base.root)
+ if (n == col->base.root)
n = NULL;
else
n = n->next;
diff --git a/src/html/html_paragraph_element.c b/src/html/html_paragraph_element.c
index 2e182d5..20a6c28 100644
--- a/src/html/html_paragraph_element.c
+++ b/src/html/html_paragraph_element.c
@@ -3,5 +3,159 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_paragraph_element.h>
+
+#include "html/html_document.h"
+#include "html/html_paragraph_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_P_ELEMENT
+ },
+ DOM_HTML_P_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_paragraph_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_paragraph_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_paragraph_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_paragraph_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_paragraph_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_paragraph_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_paragraph_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_paragraph_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_paragraph_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_P],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_paragraph_element object
+ *
+ * \param ele The dom_html_paragraph_element object
+ */
+void _dom_html_paragraph_element_finalise(struct dom_html_paragraph_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_paragraph_element object
+ *
+ * \param ele The dom_html_paragraph_element object
+ */
+void _dom_html_paragraph_element_destroy(struct dom_html_paragraph_element *ele)
+{
+ _dom_html_paragraph_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_paragraph_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_paragraph_element_destroy(dom_node_internal *node)
+{
+ _dom_html_paragraph_element_destroy((struct dom_html_paragraph_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_paragraph_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_paragraph_element_get_##attr( \
+ dom_html_paragraph_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_paragraph_element_set_##attr( \
+ dom_html_paragraph_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(align);
diff --git a/src/html/html_paragraph_element.h b/src/html/html_paragraph_element.h
index 2e182d5..b6627dd 100644
--- a/src/html/html_paragraph_element.h
+++ b/src/html/html_paragraph_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_paragraph_element_h_
+#define dom_internal_html_paragraph_element_h_
+
+#include <dom/html/html_paragraph_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_paragraph_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_paragraph_element object */
+dom_exception _dom_html_paragraph_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_paragraph_element **ele);
+
+/* Initialise a dom_html_paragraph_element object */
+dom_exception _dom_html_paragraph_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_paragraph_element *ele);
+
+/* Finalise a dom_html_paragraph_element object */
+void _dom_html_paragraph_element_finalise(struct dom_html_paragraph_element *ele);
+
+/* Destroy a dom_html_paragraph_element object */
+void _dom_html_paragraph_element_destroy(struct dom_html_paragraph_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_paragraph_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_paragraph_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_paragraph_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_P_ELEMENT_PROTECT_VTABLE \
+ _dom_html_paragraph_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_P_ELEMENT \
+ _dom_virtual_html_paragraph_element_destroy, \
+ _dom_html_paragraph_element_copy
+
+#endif
diff --git a/src/html/html_param_element.c b/src/html/html_param_element.c
index 2e182d5..6bda015 100644
--- a/src/html/html_param_element.c
+++ b/src/html/html_param_element.c
@@ -3,5 +3,160 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+#include <dom/html/html_param_element.h>
+
+#include "html/html_document.h"
+#include "html/html_param_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_PARAM_ELEMENT
+ },
+ DOM_HTML_PARAM_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_param_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_param_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_param_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_param_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_param_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_param_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_param_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_param_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_param_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_PARAM],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_param_element object
+ *
+ * \param ele The dom_html_param_element object
+ */
+void _dom_html_param_element_finalise(struct dom_html_param_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_param_element object
+ *
+ * \param ele The dom_html_param_element object
+ */
+void _dom_html_param_element_destroy(struct dom_html_param_element *ele)
+{
+ _dom_html_param_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_param_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_param_element_destroy(dom_node_internal *node)
+{
+ _dom_html_param_element_destroy((struct dom_html_param_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_param_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_param_element_get_##attr( \
+ dom_html_param_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_param_element_set_##attr( \
+ dom_html_param_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+SIMPLE_GET_SET(name);
+SIMPLE_GET_SET(type);
+SIMPLE_GET_SET(value);
+SIMPLE_GET_SET(value_type);
diff --git a/src/html/html_param_element.h b/src/html/html_param_element.h
index 2e182d5..2cd8150 100644
--- a/src/html/html_param_element.h
+++ b/src/html/html_param_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_param_element_h_
+#define dom_internal_html_param_element_h_
+
+#include <dom/html/html_param_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_param_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_param_element object */
+dom_exception _dom_html_param_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_param_element **ele);
+
+/* Initialise a dom_html_param_element object */
+dom_exception _dom_html_param_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_param_element *ele);
+
+/* Finalise a dom_html_param_element object */
+void _dom_html_param_element_finalise(struct dom_html_param_element *ele);
+
+/* Destroy a dom_html_param_element object */
+void _dom_html_param_element_destroy(struct dom_html_param_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_param_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_param_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_param_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_PARAM_ELEMENT_PROTECT_VTABLE \
+ _dom_html_param_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_PARAM_ELEMENT \
+ _dom_virtual_html_param_element_destroy, \
+ _dom_html_param_element_copy
+
+#endif
diff --git a/src/html/html_pre_element.c b/src/html/html_pre_element.c
index 2e182d5..1d220fd 100644
--- a/src/html/html_pre_element.c
+++ b/src/html/html_pre_element.c
@@ -3,5 +3,141 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_pre_element.h>
+
+#include "html/html_document.h"
+#include "html/html_pre_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_PRE_ELEMENT
+ },
+ DOM_HTML_PRE_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_pre_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_pre_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_pre_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_pre_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_pre_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_pre_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_pre_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_pre_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_pre_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_PRE],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_pre_element object
+ *
+ * \param ele The dom_html_pre_element object
+ */
+void _dom_html_pre_element_finalise(struct dom_html_pre_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_pre_element object
+ *
+ * \param ele The dom_html_pre_element object
+ */
+void _dom_html_pre_element_destroy(struct dom_html_pre_element *ele)
+{
+ _dom_html_pre_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the width Property
+ *
+ * \param pre The dom_html_pre_element object
+ */
+dom_exception dom_html_pre_element_get_width(
+ dom_html_pre_element *pre, int32_t *width)
+{
+ return dom_html_element_get_int32_t_property(&pre->base, "width",
+ SLEN("width"), width);
+}
+
+/**
+ * Set the width Property
+ *
+ * \param pre The dom_html_pre_element object
+ */
+dom_exception dom_html_pre_element_set_width(
+ dom_html_pre_element *pre, uint32_t width)
+{
+ return dom_html_element_set_int32_t_property(&pre->base, "width",
+ SLEN("width"), width);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_pre_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_pre_element_destroy(dom_node_internal *node)
+{
+ _dom_html_pre_element_destroy((struct dom_html_pre_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_pre_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
diff --git a/src/html/html_pre_element.h b/src/html/html_pre_element.h
index 2e182d5..75d8df8 100644
--- a/src/html/html_pre_element.h
+++ b/src/html/html_pre_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_pre_element_h_
+#define dom_internal_html_pre_element_h_
+
+#include <dom/html/html_pre_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_pre_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_pre_element object */
+dom_exception _dom_html_pre_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_pre_element **ele);
+
+/* Initialise a dom_html_pre_element object */
+dom_exception _dom_html_pre_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_pre_element *ele);
+
+/* Finalise a dom_html_pre_element object */
+void _dom_html_pre_element_finalise(struct dom_html_pre_element *ele);
+
+/* Destroy a dom_html_pre_element object */
+void _dom_html_pre_element_destroy(struct dom_html_pre_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_pre_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_pre_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_pre_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_PRE_ELEMENT_PROTECT_VTABLE \
+ _dom_html_pre_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_PRE_ELEMENT \
+ _dom_virtual_html_pre_element_destroy, \
+ _dom_html_pre_element_copy
+
+#endif
diff --git a/src/html/html_quote_element.c b/src/html/html_quote_element.c
index 2e182d5..d16bad8 100644
--- a/src/html/html_quote_element.c
+++ b/src/html/html_quote_element.c
@@ -3,5 +3,159 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_quote_element.h>
+
+#include "html/html_document.h"
+#include "html/html_quote_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_QUOTE_ELEMENT
+ },
+ DOM_HTML_QUOTE_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_quote_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_quote_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_quote_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_quote_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_quote_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_quote_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_quote_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_quote_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_quote_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_Q],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_quote_element object
+ *
+ * \param ele The dom_html_quote_element object
+ */
+void _dom_html_quote_element_finalise(struct dom_html_quote_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_quote_element object
+ *
+ * \param ele The dom_html_quote_element object
+ */
+void _dom_html_quote_element_destroy(struct dom_html_quote_element *ele)
+{
+ _dom_html_quote_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_quote_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_quote_element_destroy(dom_node_internal *node)
+{
+ _dom_html_quote_element_destroy((struct dom_html_quote_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_quote_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_quote_element_get_##attr( \
+ dom_html_quote_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_quote_element_set_##attr( \
+ dom_html_quote_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(cite);
diff --git a/src/html/html_quote_element.h b/src/html/html_quote_element.h
index 2e182d5..a8bfbb2 100644
--- a/src/html/html_quote_element.h
+++ b/src/html/html_quote_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_quote_element_h_
+#define dom_internal_html_quote_element_h_
+
+#include <dom/html/html_quote_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_quote_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_quote_element object */
+dom_exception _dom_html_quote_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_quote_element **ele);
+
+/* Initialise a dom_html_quote_element object */
+dom_exception _dom_html_quote_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_quote_element *ele);
+
+/* Finalise a dom_html_quote_element object */
+void _dom_html_quote_element_finalise(struct dom_html_quote_element *ele);
+
+/* Destroy a dom_html_quote_element object */
+void _dom_html_quote_element_destroy(struct dom_html_quote_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_quote_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_quote_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_quote_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_QUOTE_ELEMENT_PROTECT_VTABLE \
+ _dom_html_quote_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_QUOTE_ELEMENT \
+ _dom_virtual_html_quote_element_destroy, \
+ _dom_html_quote_element_copy
+
+#endif
diff --git a/src/html/html_script_element.c b/src/html/html_script_element.c
index 2e182d5..f107d45 100644
--- a/src/html/html_script_element.c
+++ b/src/html/html_script_element.c
@@ -3,5 +3,218 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+#include <dom/html/html_script_element.h>
+
+#include "html/html_document.h"
+#include "html/html_script_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_SCRIPT_ELEMENT
+ },
+ DOM_HTML_SCRIPT_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_script_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_script_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_script_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_script_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_script_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_script_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_script_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_script_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_script_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_SCRIPT],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_script_element object
+ *
+ * \param ele The dom_html_script_element object
+ */
+void _dom_html_script_element_finalise(struct dom_html_script_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_script_element object
+ *
+ * \param ele The dom_html_script_element object
+ */
+void _dom_html_script_element_destroy(struct dom_html_script_element *ele)
+{
+ _dom_html_script_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_script_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_script_element_destroy(dom_node_internal *node)
+{
+ _dom_html_script_element_destroy((struct dom_html_script_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_script_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_script_element_get_##attr( \
+ dom_html_script_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_script_element_set_##attr( \
+ dom_html_script_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(html_for);
+SIMPLE_GET_SET(event);
+SIMPLE_GET_SET(charset);
+SIMPLE_GET_SET(src);
+SIMPLE_GET_SET(type);
+
+/**
+ * Get the defer property
+ *
+ * \param ele The dom_html_script_element object
+ * \param defer The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_script_element_get_defer(dom_html_script_element *ele,
+ bool *defer)
+{
+ return dom_html_element_get_bool_property(&ele->base, "defer",
+ SLEN("defer"), defer);
+}
+
+/**
+ * Set the defer property
+ *
+ * \param ele The dom_html_script_element object
+ * \param defer The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_script_element_set_defer(dom_html_script_element *ele,
+ bool defer)
+{
+ return dom_html_element_set_bool_property(&ele->base, "defer",
+ SLEN("defer"), defer);
+}
+
+/**
+ * Get the text property
+ *
+ * \param ele The dom_html_script_element object
+ * \param text The returned dom_string object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_script_element_get_text(
+ dom_html_script_element *ele,
+ dom_string **text)
+{
+ return _dom_node_get_text_content((dom_node_internal *)ele, text);
+}
+
+/**
+ * Set the text property
+ *
+ * \param ele The dom_html_script_element object
+ * \param text The dom_string value to be set
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_script_element_set_text(
+ dom_html_script_element *ele,
+ dom_string *text)
+{
+ return _dom_node_set_text_content((dom_node_internal *)ele, text);
+}
diff --git a/src/html/html_script_element.h b/src/html/html_script_element.h
index 2e182d5..dcb7b72 100644
--- a/src/html/html_script_element.h
+++ b/src/html/html_script_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_script_element_h_
+#define dom_internal_html_script_element_h_
+
+#include <dom/html/html_script_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_script_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_script_element object */
+dom_exception _dom_html_script_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_script_element **ele);
+
+/* Initialise a dom_html_script_element object */
+dom_exception _dom_html_script_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_script_element *ele);
+
+/* Finalise a dom_html_script_element object */
+void _dom_html_script_element_finalise(struct dom_html_script_element *ele);
+
+/* Destroy a dom_html_script_element object */
+void _dom_html_script_element_destroy(struct dom_html_script_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_script_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_script_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_script_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_SCRIPT_ELEMENT_PROTECT_VTABLE \
+ _dom_html_script_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_SCRIPT_ELEMENT \
+ _dom_virtual_html_script_element_destroy, \
+ _dom_html_script_element_copy
+
+#endif
diff --git a/src/html/html_select_element.c b/src/html/html_select_element.c
index c02f0bd..7a5e84e 100644
--- a/src/html/html_select_element.c
+++ b/src/html/html_select_element.c
@@ -65,8 +65,8 @@ dom_exception _dom_html_select_element_initialise(struct dom_html_document *doc,
ele->form = NULL;
return _dom_html_element_initialise(doc, &ele->base,
- doc->memoised[hds_SELECT],
- namespace, prefix);
+ doc->memoised[hds_SELECT],
+ namespace, prefix);
}
/**
@@ -125,16 +125,16 @@ dom_exception _dom_html_select_element_copy(dom_node_internal *old,
/* Public APIs */
static dom_exception _dom_html_select_element_make_collection(
- dom_html_select_element *ele,
- dom_html_options_collection **col)
+ dom_html_select_element *ele,
+ dom_html_options_collection **col)
{
dom_html_document *doc = (dom_html_document *) dom_node_get_owner(ele);
assert(doc != NULL);
return _dom_html_options_collection_create(doc,
- (dom_node_internal *) ele,
- is_option, ele, col);
+ (dom_node_internal *) ele,
+ is_option, ele, col);
}
/**
@@ -174,11 +174,11 @@ dom_exception dom_html_select_element_get_selected_index(
dom_html_select_element *ele, int32_t *index)
{
dom_exception err;
- uint32_t idx, len;
+ uint32_t idx,len;
dom_node *option;
bool selected;
dom_html_options_collection *col;
-
+
err = _dom_html_select_element_make_collection(ele, &col);
err = dom_html_options_collection_get_length(col, &len);
@@ -194,7 +194,7 @@ dom_exception dom_html_select_element_get_selected_index(
dom_html_options_collection_unref(col);
return err;
}
-
+
err = dom_html_option_element_get_selected(
(dom_html_option_element *) option, &selected);
@@ -204,7 +204,7 @@ dom_exception dom_html_select_element_get_selected_index(
dom_html_options_collection_unref(col);
return err;
}
-
+
if (selected) {
*index = idx;
dom_html_options_collection_unref(col);
@@ -228,11 +228,30 @@ dom_exception dom_html_select_element_get_selected_index(
dom_exception dom_html_select_element_set_selected_index(
dom_html_select_element *ele, int32_t index)
{
- UNUSED(ele);
- UNUSED(index);
+ dom_exception err;
+ dom_node *option;
+ dom_html_options_collection *col;
- /** \todo Implement */
- return DOM_NOT_SUPPORTED_ERR;
+ err = _dom_html_select_element_make_collection(ele, &col);
+
+ err = dom_html_options_collection_item(col,
+ index, &option);
+ if (err != DOM_NO_ERR) {
+ dom_html_options_collection_unref(col);
+ return err;
+ }
+
+ err = dom_html_option_element_set_selected(
+ (dom_html_option_element *) option, true);
+
+ dom_node_unref(option);
+
+ dom_html_options_collection_unref(col);
+ if (err != DOM_NO_ERR) {
+ return err;
+ }
+
+ return DOM_NO_ERR;
}
/**
@@ -250,7 +269,7 @@ dom_exception dom_html_select_element_get_value(
dom_node *option;
bool selected;
dom_html_options_collection *col;
-
+
err = _dom_html_select_element_make_collection(ele, &col);
if (err != DOM_NO_ERR)
return err;
@@ -291,7 +310,7 @@ dom_exception dom_html_select_element_get_value(
*value = NULL;
dom_html_options_collection_unref(col);
-
+
return DOM_NO_ERR;
}
@@ -305,11 +324,54 @@ dom_exception dom_html_select_element_get_value(
dom_exception dom_html_select_element_set_value(
dom_html_select_element *ele, dom_string *value)
{
- UNUSED(ele);
- UNUSED(value);
+ dom_exception err;
+ uint32_t idx, len;
+ dom_node *option;
+ bool selected;
+ dom_html_options_collection *col;
+
+ err = _dom_html_select_element_make_collection(ele, &col);
+ if (err != DOM_NO_ERR)
+ return err;
+
+ err = dom_html_select_element_get_length(ele, &len);
+ if (err != DOM_NO_ERR) {
+ dom_html_options_collection_unref(col);
+ return err;
+ }
+
+ for (idx = 0; idx < len; idx++) {
+ err = dom_html_options_collection_item(col,
+ idx, &option);
+ if (err != DOM_NO_ERR) {
+ dom_html_options_collection_unref(col);
+ return err;
+ }
+
+ err = dom_html_option_element_get_selected(
+ (dom_html_option_element *) option, &selected);
+ if (err != DOM_NO_ERR) {
+ dom_html_options_collection_unref(col);
+ dom_node_unref(option);
+ return err;
+ }
+
+ if (selected) {
+ err = dom_html_option_element_set_value(
+ (dom_html_option_element *) option,
+ value);
+
+ dom_html_options_collection_unref(col);
+ dom_node_unref(option);
+
+ return err;
+ }
+ }
+
+ dom_html_options_collection_unref(col);
+
+ return DOM_NO_ERR;
- /** \todo Implement */
- return DOM_NOT_SUPPORTED_ERR;
}
/**
@@ -362,7 +424,7 @@ dom_exception dom_html_select_element_set_length(
* \return DOM_NO_ERR on success, appropriate error otherwise.
*/
dom_exception dom_html_select_element_get_form(
- dom_html_select_element *select, dom_html_form_element **form)
+ dom_html_select_element *select, dom_html_form_element **form)
{
*form = select->form;
@@ -536,12 +598,12 @@ dom_exception dom_html_select_element_set_tab_index(
dom_exception dom__html_select_element_add(dom_html_select_element *select,
struct dom_html_element *ele, struct dom_html_element *before)
{
- UNUSED(select);
- UNUSED(ele);
- UNUSED(before);
- /** \todo Implement */
- return DOM_NOT_SUPPORTED_ERR;
+ return _dom_node_insert_before((dom_node_internal *)select,
+ (dom_node_internal *)ele, (dom_node_internal *)before,
+ (dom_node_internal **)&ele);
+
+
}
dom_exception dom_html_select_element_remove(dom_html_select_element *ele,
@@ -549,17 +611,31 @@ dom_exception dom_html_select_element_remove(dom_html_select_element *ele,
{
dom_exception err;
uint32_t len;
+ dom_node *option;
err = dom_html_select_element_get_length(ele, &len);
if (err != DOM_NO_ERR)
return err;
/* Ensure index is in range */
- if (index < 0 || (uint32_t)index >= len)
+ if (index < 0 || index >= (int32_t)len)
return DOM_NO_ERR;
+ dom_html_options_collection *col;
- /** \todo What does remove mean? Remove option from tree and destroy it? */
- return DOM_NOT_SUPPORTED_ERR;
+ err = _dom_html_select_element_make_collection(ele, &col);
+ if (err != DOM_NO_ERR)
+ return err;
+
+ err = dom_html_options_collection_item(col,
+ index, &option);
+
+ if (err != DOM_NO_ERR) {
+ dom_html_options_collection_unref(col);
+ return err;
+ }
+ return _dom_node_remove_child(((dom_node_internal *)option)->parent,
+ (dom_node_internal *)option,
+ (dom_node_internal **)&option);
}
/**
@@ -577,9 +653,9 @@ dom_exception dom_html_select_element_blur(struct dom_html_select_element *ele)
/** \todo Is this event (a) default (b) bubbling and (c) cancelable? */
return _dom_dispatch_generic_event((dom_document *) doc,
- (dom_event_target *) ele,
- doc->memoised[hds_blur], true,
- true, &success);
+ (dom_event_target *) ele,
+ doc->memoised[hds_blur], true,
+ true, &success);
}
/**
@@ -597,9 +673,9 @@ dom_exception dom_html_select_element_focus(struct dom_html_select_element *ele)
/** \todo Is this event (a) default (b) bubbling and (c) cancelable? */
return _dom_dispatch_generic_event((dom_document *) doc,
- (dom_event_target *) ele,
- doc->memoised[hds_focus], true,
- true, &success);
+ (dom_event_target *) ele,
+ doc->memoised[hds_focus], true,
+ true, &success);
}
@@ -611,7 +687,7 @@ bool is_option(struct dom_node_internal *node, void *ctx)
{
dom_html_select_element *ele = ctx;
dom_html_document *doc = (dom_html_document *) dom_node_get_owner(ele);
-
+
if (dom_string_isequal(node->name, doc->memoised[hds_OPTION]))
return true;
@@ -619,7 +695,7 @@ bool is_option(struct dom_node_internal *node, void *ctx)
}
dom_exception _dom_html_select_element_set_form(
- dom_html_select_element *select, dom_html_form_element *form)
+ dom_html_select_element *select, dom_html_form_element *form)
{
select->form = form;
diff --git a/src/html/html_style_element.c b/src/html/html_style_element.c
index 98eb79b..681f0b8 100644
--- a/src/html/html_style_element.c
+++ b/src/html/html_style_element.c
@@ -8,6 +8,7 @@
#include <stdlib.h>
#include "html/html_style_element.h"
+#include "html/html_document.h"
#include "core/node.h"
#include "utils/utils.h"
@@ -34,7 +35,7 @@ dom_exception _dom_html_style_element_create(struct dom_html_document *doc,
*ele = malloc(sizeof(dom_html_style_element));
if (*ele == NULL)
return DOM_NO_MEM_ERR;
-
+
/* Set up vtables */
node = (struct dom_node_internal *) *ele;
node->base.vtable = &_dom_html_element_vtable;
@@ -54,13 +55,20 @@ dom_exception _dom_html_style_element_initialise(struct dom_html_document *doc,
struct dom_html_style_element *ele)
{
dom_string *name = NULL;
+ dom_string *media_default = NULL;
dom_exception err;
err = dom_string_create((const uint8_t *) "STYLE", SLEN("STYLE"),
&name);
if (err != DOM_NO_ERR)
return err;
+
+ err = dom_string_create((const uint8_t *) "screen", SLEN("screen"),
+ &media_default);
+ if (err != DOM_NO_ERR)
+ return err;
+ ele->media = media_default;
err = _dom_html_element_initialise(doc, &ele->base, name, NULL, NULL);
dom_string_unref(name);
@@ -119,9 +127,49 @@ dom_exception _dom_html_style_element_copy(dom_node_internal *old,
return _dom_html_element_copy(old, copy);
}
+
/*-----------------------------------------------------------------------*/
/* Public APIs */
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_style_element_get_##attr( \
+ dom_html_style_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+dom_exception dom_html_style_element_set_##attr( \
+ dom_html_style_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+SIMPLE_GET_SET(type);
+SIMPLE_SET(media);
+
/**
* Get the disabled property
*
@@ -150,3 +198,36 @@ dom_exception dom_html_style_element_set_disabled(dom_html_style_element *ele,
SLEN("disabled"), disabled);
}
+/**
+ * Get the media property
+ *
+ * \param ele The dom_html_style_element object
+ * \param media The returned status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_style_element_get_media(dom_html_style_element *ele,
+ dom_string **media)
+{
+ dom_html_document *doc;
+ bool has_value = false;
+ dom_exception err;
+
+ doc = (dom_html_document *) ((dom_node_internal *) ele)->owner;
+
+ err = dom_element_has_attribute(ele,
+ doc->memoised[hds_media], &has_value);
+ if(err !=DOM_NO_ERR)
+ return err;
+
+ if(has_value) {
+ return dom_element_get_attribute(ele,
+ doc->memoised[hds_media], media);
+ }
+
+ *media = ele->media;
+ if (*media != NULL)
+ dom_string_ref(*media);
+ return DOM_NO_ERR;
+
+}
+
diff --git a/src/html/html_style_element.h b/src/html/html_style_element.h
index e7a47e5..285da94 100644
--- a/src/html/html_style_element.h
+++ b/src/html/html_style_element.h
@@ -15,6 +15,8 @@
struct dom_html_style_element {
struct dom_html_element base;
/**< The base class */
+ dom_string *media;
+ /**< The default string value for the media attribute*/
};
/* Create a dom_html_style_element object */
diff --git a/src/html/html_table_element.c b/src/html/html_table_element.c
index 2e182d5..0f27fd3 100644
--- a/src/html/html_table_element.c
+++ b/src/html/html_table_element.c
@@ -3,5 +3,745 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_table_element.h>
+
+#include "html/html_document.h"
+#include "html/html_table_element.h"
+#include "html/html_tablecaption_element.h"
+#include "html/html_tablesection_element.h"
+#include "html/html_tablerow_element.h"
+#include "html/html_collection.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_TABLE_ELEMENT
+ },
+ DOM_HTML_TABLE_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_table_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_table_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_table_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_table_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_table_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_element *ele)
+{
+ ele->caption = NULL;
+ ele->t_head = NULL;
+ ele->t_foot = NULL;
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_TABLE],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_table_element object
+ *
+ * \param ele The dom_html_table_element object
+ */
+void _dom_html_table_element_finalise(struct dom_html_table_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_table_element object
+ *
+ * \param ele The dom_html_table_element object
+ */
+void _dom_html_table_element_destroy(struct dom_html_table_element *ele)
+{
+ _dom_html_table_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_table_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_table_element_destroy(dom_node_internal *node)
+{
+ _dom_html_table_element_destroy((struct dom_html_table_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_table_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_table_element_get_##attr( \
+ dom_html_table_element *element, \
+ dom_string **attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_table_element_set_##attr( \
+ dom_html_table_element *element, \
+ dom_string *attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+SIMPLE_GET_SET(align);
+SIMPLE_GET_SET(bg_color);
+SIMPLE_GET_SET(border);
+SIMPLE_GET_SET(cell_padding);
+SIMPLE_GET_SET(cell_spacing);
+SIMPLE_GET_SET(frame);
+SIMPLE_GET_SET(rules);
+SIMPLE_GET_SET(summary);
+SIMPLE_GET_SET(width);
+
+/**
+ * Get the caption Attribute
+ *
+ * \param table The dom_html_table_element object
+ */
+dom_exception dom_html_table_element_get_caption(
+ dom_html_table_element *table, dom_html_table_caption_element **caption)
+{
+ dom_node_internal *node_tmp = ((dom_node_internal *)table);
+ dom_html_document *doc = (dom_html_document *)(node_tmp->owner);
+
+ if(table->caption == NULL) {
+ for (node_tmp = node_tmp->first_child; node_tmp != NULL; node_tmp = node_tmp->next) {
+ if((node_tmp->type == DOM_ELEMENT_NODE) &&
+ dom_string_caseless_isequal(doc->memoised[hds_CAPTION],node_tmp->name)) {
+ break;
+ }
+ }
+ table->caption = (dom_html_table_caption_element *)node_tmp;
+ }
+ *caption = (table->caption);
+ return DOM_NO_ERR;
+}
+
+/**
+ * Set the caption Attribute
+ *
+ * \param table The dom_html_table_element object
+ * \param table The dom_html_table_element object
+ */
+dom_exception dom_html_table_element_set_caption(
+ dom_html_table_element *table, dom_html_table_caption_element *caption)
+{
+ dom_node_internal *check_node = ((dom_node_internal *)caption);
+ dom_html_document *doc = (dom_html_document *)(((dom_node_internal *)table)->owner);
+ if(check_node == NULL) {
+ return DOM_HIERARCHY_REQUEST_ERR;
+ }
+ if(!dom_string_caseless_isequal(doc->memoised[hds_CAPTION],check_node->name)) {
+ return DOM_HIERARCHY_REQUEST_ERR;
+ }
+ table->caption = caption;
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get the t_head Attribute
+ *
+ * \param table The dom_html_table_element object
+ */
+dom_exception dom_html_table_element_get_t_head(
+ dom_html_table_element *table, dom_html_table_section_element **t_head)
+{
+ dom_node_internal *node_tmp = ((dom_node_internal *)table);
+ dom_html_document *doc = (dom_html_document *)(node_tmp->owner);
+
+ if(table->t_head == NULL) {
+ for (node_tmp = node_tmp->first_child; node_tmp != NULL; node_tmp = node_tmp->next) {
+ if((node_tmp->type == DOM_ELEMENT_NODE) &&
+ dom_string_caseless_isequal(doc->memoised[hds_THEAD],node_tmp->name)) {
+ break;
+ }
+ }
+ table->t_head = (dom_html_table_section_element *)node_tmp;
+ }
+ *t_head = table->t_head;
+ return DOM_NO_ERR;
+}
+
+/**
+ * Set the t_head Attribute
+ *
+ * \param table The dom_html_table_element object
+ * \param table The dom_html_table_element object
+ */
+dom_exception dom_html_table_element_set_t_head(
+ dom_html_table_element *table, dom_html_table_section_element *t_head)
+{
+ dom_node_internal *check_node = ((dom_node_internal *)t_head);
+ dom_html_document *doc = (dom_html_document *)(((dom_node_internal *)table)->owner);
+ if(check_node == NULL) {
+ return DOM_HIERARCHY_REQUEST_ERR;
+ }
+ if(!dom_string_caseless_isequal(doc->memoised[hds_CAPTION],check_node->name)) {
+ return DOM_HIERARCHY_REQUEST_ERR;
+ }
+ table->t_head = t_head;
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get the t_foot Attribute
+ *
+ * \param table The dom_html_table_element object
+ */
+dom_exception dom_html_table_element_get_t_foot(
+ dom_html_table_element *table, dom_html_table_section_element **t_foot)
+{
+ dom_node_internal *node_tmp = ((dom_node_internal *)table);
+ dom_html_document *doc = (dom_html_document *)(node_tmp->owner);
+
+ if(table->t_foot == NULL) {
+ for (node_tmp = node_tmp->first_child; node_tmp != NULL; node_tmp = node_tmp->next) {
+ if((node_tmp->type == DOM_ELEMENT_NODE) &&
+ dom_string_caseless_isequal(doc->memoised[hds_TFOOT],node_tmp->name)) {
+ break;
+ }
+ }
+ table->t_foot = (dom_html_table_section_element *)node_tmp;
+ }
+ *t_foot = (table->t_foot);
+ return DOM_NO_ERR;
+}
+
+/**
+ * Set the t_foot Attribute
+ *
+ * \param table The dom_html_table_element object
+ */
+dom_exception dom_html_table_element_set_t_foot(
+ dom_html_table_element *table, dom_html_table_section_element *t_foot)
+{
+ dom_node_internal *check_node = ((dom_node_internal *)t_foot); /*< temporary node to check for raised exceptions */
+ dom_html_document *doc = (dom_html_document *)(((dom_node_internal *)table)->owner);
+ if(check_node == NULL) {
+ return DOM_HIERARCHY_REQUEST_ERR;
+ }
+ if(!dom_string_caseless_isequal(doc->memoised[hds_TFOOT],check_node->name)) {
+ return DOM_HIERARCHY_REQUEST_ERR;
+ }
+ table->t_foot = t_foot;
+ return DOM_NO_ERR;
+}
+
+/**
+ * Callback for creating the rows collection
+ *
+ * \param node The dom_html_table_element object
+ * \param ctx The dom_html_document object (void *)
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+bool table_rows_callback(struct dom_node_internal *node, void *ctx)
+{
+ if(node->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_TR])) {
+ return true;
+ }
+ return false;
+}
+
+/**
+ * Get the rows collection
+ *
+ * \param element The dom_html_table_element object
+ * \param rows The Status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_get_rows(
+ dom_html_table_element *element,
+ dom_html_collection **rows)
+{
+ dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) element)->owner;
+ return _dom_html_collection_create(doc, (dom_node_internal *)element,
+ table_rows_callback, (void *)doc, rows);
+}
+
+/**
+ * Callback for creating the tbodies collection
+ *
+ * \param node The dom_html_table_element object
+ * \param ctx The dom_html_document object (void *)
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+bool table_t_bodies_callback(struct dom_node_internal *node, void *ctx)
+{
+ if(node->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_TBODY])) {
+ return true;
+ }
+ return false;
+}
+
+/**
+ * Get the tBodies collection
+ *
+ * \param element The dom_html_table_element object
+ * \param t_bodies The Status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_get_t_bodies(
+ dom_html_table_element *element,
+ dom_html_collection **t_bodies)
+{
+ dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) element)->owner;
+ return _dom_html_collection_create(doc, (dom_node_internal *)element,
+ table_t_bodies_callback, (void *)doc, t_bodies);
+}
+
+/**
+ * Get or Create the table caption
+ *
+ * \param element The dom_html_table_element object
+ * \param caption The Status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_create_caption(
+ dom_html_table_element *element,
+ dom_html_element **caption)
+{
+ dom_exception exp;
+ if((exp = dom_html_table_element_get_caption(element,
+ (dom_html_table_caption_element **)caption)) != DOM_NO_ERR) {
+ return exp;
+ }
+ if((*caption) == NULL) {
+ dom_html_document *doc = (dom_html_document *)
+ ((dom_node_internal *) element)->owner;
+ exp = _dom_html_table_caption_element_create(doc,
+ ((dom_node_internal *)element)->namespace,
+ ((dom_node_internal *)element)->prefix,
+ (dom_html_table_caption_element **)caption);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+ _dom_node_append_child((dom_node_internal *)element,
+ (dom_node_internal *)*caption,
+ (dom_node_internal **)caption);
+ element->caption = (dom_html_table_caption_element *)*caption;
+
+ }
+ return DOM_NO_ERR;
+}
+
+/**
+ * Delete the table caption, if one exists
+ *
+ * \param element The dom_html_table_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_delete_caption(
+ dom_html_table_element *element)
+{
+ dom_html_table_caption_element *caption;
+ dom_html_table_element_get_caption(element, &caption);
+ _dom_node_remove_child((dom_node_internal *)element,
+ (dom_node_internal *)caption,
+ (dom_node_internal **)&caption);
+ element->caption = NULL;
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get or Create the table Foot
+ *
+ * \param element The dom_html_table_element object
+ * \param t_foot The Status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_create_t_foot(
+ dom_html_table_element *element,
+ dom_html_element **t_foot)
+{
+ dom_exception exp;
+ exp = dom_html_table_element_get_t_foot(element,
+ (dom_html_table_section_element **)t_foot);
+ if(exp !=DOM_NO_ERR) {
+ return exp;
+ }
+ if((*t_foot) == NULL) {
+ dom_html_document *doc = (dom_html_document *)
+ ((dom_node_internal *) element)->owner;
+ exp = _dom_html_table_section_element_create(doc,
+ doc->memoised[hds_TFOOT],
+ ((dom_node_internal *)element)->namespace,
+ ((dom_node_internal *)element)->prefix,
+ (dom_html_table_section_element **)t_foot);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+ _dom_node_append_child((dom_node_internal *)element,
+ (dom_node_internal *)*t_foot,
+ (dom_node_internal **)t_foot);
+ element->t_foot = (dom_html_table_section_element *)*t_foot;
+
+ }
+ return DOM_NO_ERR;
+}
+
+/**
+ * Delete the table Foot, if one exists
+ *
+ * \param element The dom_html_table_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_delete_t_foot(
+ dom_html_table_element *element)
+{
+ dom_html_table_section_element *t_foot;
+ dom_html_table_element_get_t_foot(element, &t_foot);
+ _dom_node_remove_child((dom_node_internal *)element,
+ (dom_node_internal *)t_foot,
+ (dom_node_internal **)&t_foot);
+ element->t_foot = NULL;
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get or Create the table Head
+ *
+ * \param element The dom_html_table_element object
+ * \param t_head The Status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_create_t_head(
+ dom_html_table_element *element,
+ dom_html_element **t_head)
+{
+ dom_html_table_element_get_t_head(element,
+ (dom_html_table_section_element **)t_head);
+ if((*t_head) == NULL) {
+ dom_exception exp;
+ dom_html_document *doc = (dom_html_document *)
+ ((dom_node_internal *) element)->owner;
+ exp = _dom_html_table_section_element_create(doc,
+ doc->memoised[hds_THEAD],
+ ((dom_node_internal *)element)->namespace,
+ ((dom_node_internal *)element)->prefix,
+ (dom_html_table_section_element **)t_head);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+ _dom_node_append_child((dom_node_internal *)element,
+ (dom_node_internal *)*t_head,
+ (dom_node_internal **)t_head);
+ element->t_head = (dom_html_table_section_element *)*t_head;
+
+ }
+ return DOM_NO_ERR;
+}
+
+/**
+ * Delete the table Head, if one exists
+ *
+ * \param element The dom_html_table_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_delete_t_head(
+ dom_html_table_element *element)
+{
+ dom_html_table_section_element *t_head;
+ dom_html_table_element_get_t_head(element, &t_head);
+ _dom_node_remove_child((dom_node_internal *)element,
+ (dom_node_internal *)t_head,
+ (dom_node_internal **)&t_head);
+ element->t_head = NULL;
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get or Create the table Body
+ *
+ * \param element The dom_html_table_element object
+ * \param t_head The Status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_create_t_body(
+ dom_html_table_element *element,
+ dom_html_table_section_element **t_body)
+{
+ dom_html_collection *t_bodies;
+ uint32_t len;
+ dom_html_table_element_get_t_bodies(element,
+ &t_bodies);
+ dom_html_collection_get_length(t_bodies,
+ &len);
+
+ if(len == 0) {
+ dom_exception exp;
+ dom_html_document *doc = (dom_html_document *)
+ ((dom_node_internal *) element)->owner;
+ exp = _dom_html_table_section_element_create(doc,
+ doc->memoised[hds_TBODY],
+ ((dom_node_internal *)element)->namespace,
+ ((dom_node_internal *)element)->prefix,
+ t_body);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+ return _dom_node_append_child((dom_node_internal *)element,
+ (dom_node_internal *)*t_body,
+ (dom_node_internal **)t_body);
+
+ } else {
+ return dom_html_collection_item(t_bodies,
+ 0, (dom_node **)t_body);
+ }
+ return DOM_NO_ERR;
+}
+/**
+ * Insert a new Row into the table
+ *
+ * \param element The dom_html_table_element object
+ * \param index The Index to insert the Row
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_insert_row(
+ dom_html_table_element *element,
+ int32_t index,
+ dom_html_element **row)
+{
+ dom_exception exp;
+ dom_html_collection* rows;
+ uint32_t len;
+ dom_html_document *doc = (dom_html_document *)
+ ((dom_node_internal *) element)->owner;
+
+ exp = dom_html_table_element_get_rows(element,
+ &rows);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+ exp = dom_html_collection_get_length(rows,
+ &len);
+
+ exp = _dom_html_table_row_element_create(doc,
+ ((dom_node_internal *)element)->namespace,
+ ((dom_node_internal *)element)->prefix,
+ (dom_html_table_row_element **)row);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+
+ if(index > (int32_t)len || index < -1) {
+ return DOM_INDEX_SIZE_ERR;
+ } else if(len == 0) {
+ dom_html_table_section_element *new_body;
+ exp = dom_html_table_element_create_t_body(element,
+ &new_body);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+
+ return _dom_node_append_child((dom_node_internal *)new_body,
+ (dom_node_internal *)*row,
+ (dom_node_internal **)row);
+
+ } else {
+ if(index ==-1) {
+ index = (int32_t)len;
+ }
+
+ dom_html_collection* rows;
+ dom_html_table_section_element *t_head;
+ dom_html_table_section_element *t_foot;
+ uint32_t window_len = 0, section_len;
+
+ dom_html_table_element_get_t_head(element, &t_head);
+ dom_html_table_section_element_get_rows(t_head, &rows);
+ dom_html_collection_get_length(rows, &section_len);
+
+ if(window_len + section_len > (uint32_t)index ||
+ window_len + section_len == len) {
+ return dom_html_table_section_element_insert_row(t_head,
+ index-window_len, row);
+ }
+
+ window_len += section_len;
+
+ dom_node_internal *n = (dom_node_internal *)element;
+
+ for (n = n->first_child; n != NULL; n = n->next) {
+ if((n->type == DOM_ELEMENT_NODE) &&
+ dom_string_caseless_isequal(doc->memoised[hds_TBODY],n->name)) {
+
+ dom_html_table_section_element_get_rows((dom_html_table_section_element *)n, &rows);
+ dom_html_collection_get_length(rows, &section_len);
+
+ if(window_len + section_len > (uint32_t)index ||
+ window_len + section_len == len) {
+ return dom_html_table_section_element_insert_row(
+ (dom_html_table_section_element *)n,
+ index-window_len, row);
+ }
+
+ window_len += section_len;
+ }
+ }
+ dom_html_table_element_get_t_foot(element, &t_foot);
+ dom_html_table_section_element_get_rows(t_foot, &rows);
+ dom_html_collection_get_length(rows, &section_len);
+ if(window_len + section_len > (uint32_t)index ||
+ window_len +section_len == len) {
+ return dom_html_table_section_element_insert_row(t_foot,
+ index-window_len, row);
+ }
+ return DOM_INDEX_SIZE_ERR;
+ }
+}
+/**
+ * Delete the table Head, if one exists
+ *
+ * \param element The dom_html_table_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_element_delete_row(
+ dom_html_table_element *element,
+ int32_t index)
+{
+ dom_exception exp;
+ dom_html_collection* rows;
+ uint32_t len;
+ dom_html_document *doc = (dom_html_document *)
+ ((dom_node_internal *) element)->owner;
+
+ exp = dom_html_table_element_get_rows(element,
+ &rows);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+ exp = dom_html_collection_get_length(rows,
+ &len);
+
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+
+ if(index >= (int32_t)len || index < -1 || len ==0) {
+ return DOM_INDEX_SIZE_ERR;
+ } else {
+ if(index ==-1) {
+ index = (int32_t)len-1;
+ }
+ dom_html_collection* rows;
+ dom_html_table_section_element *t_head;
+ dom_html_table_section_element *t_foot;
+ uint32_t window_len = 0, section_len;
+ dom_html_table_element_get_t_head(element, &t_head);
+ dom_html_table_section_element_get_rows(t_head, &rows);
+ dom_html_collection_get_length(rows, &section_len);
+ if(window_len + section_len > (uint32_t)index) {
+ return dom_html_table_section_element_delete_row(t_head,
+ index-window_len);
+ }
+ window_len += section_len;
+ dom_node_internal *n = (dom_node_internal *)element;
+ for (n = n->first_child; n != NULL; n = n->next) {
+ if((n->type == DOM_ELEMENT_NODE) &&
+ dom_string_caseless_isequal(doc->memoised[hds_TBODY],n->name)) {
+ dom_html_table_section_element_get_rows((dom_html_table_section_element *)n, &rows);
+ dom_html_collection_get_length(rows, &section_len);
+ if(window_len + section_len > (uint32_t)index) {
+ return dom_html_table_section_element_delete_row(
+ (dom_html_table_section_element *)n,
+ index-window_len);
+ }
+ window_len += section_len;
+ }
+ }
+ exp = dom_html_table_element_get_t_foot(element, &t_foot);
+ dom_html_table_section_element_get_rows(t_foot, &rows);
+ dom_html_collection_get_length(rows, &section_len);
+ if(window_len + section_len > (uint32_t)index) {
+ return dom_html_table_section_element_delete_row(t_foot,
+ index-window_len);
+ }
+ return DOM_INDEX_SIZE_ERR;
+ }
+
+}
diff --git a/src/html/html_table_element.h b/src/html/html_table_element.h
index 2e182d5..caabbe8 100644
--- a/src/html/html_table_element.h
+++ b/src/html/html_table_element.h
@@ -3,5 +3,61 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_table_element_h_
+#define dom_internal_html_table_element_h_
+
+#include <dom/html/html_table_element.h>
+#include "html/html_element.h"
+
+struct dom_html_table_element {
+ struct dom_html_element base;
+ /**< The base class */
+ dom_html_table_caption_element* caption;
+ /**< The caption associated with the table*/
+ dom_html_table_section_element* t_head;
+ /**< The thead element associated with the table*/
+ dom_html_table_section_element* t_foot;
+ /**< The tfoot element associated with the table*/
+};
+
+/* Create a dom_html_table_element object */
+dom_exception _dom_html_table_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_element **ele);
+
+/* Initialise a dom_html_table_element object */
+dom_exception _dom_html_table_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_element *ele);
+
+/* Finalise a dom_html_table_element object */
+void _dom_html_table_element_finalise(struct dom_html_table_element *ele);
+
+/* Destroy a dom_html_table_element object */
+void _dom_html_table_element_destroy(struct dom_html_table_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_table_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_table_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_table_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_TABLE_ELEMENT_PROTECT_VTABLE \
+ _dom_html_table_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_TABLE_ELEMENT \
+ _dom_virtual_html_table_element_destroy, \
+ _dom_html_table_element_copy
+
+#endif
+
+bool table_rows_callback(struct dom_node_internal *node, void *ctx);
+bool table_t_bodies_callback(struct dom_node_internal *node, void *ctx);
+dom_exception dom_html_table_element_create_t_body(
+ dom_html_table_element *element,
+ dom_html_table_section_element **t_body);
diff --git a/src/html/html_tablecaption_element.c b/src/html/html_tablecaption_element.c
index 2e182d5..d2c3fc6 100644
--- a/src/html/html_tablecaption_element.c
+++ b/src/html/html_tablecaption_element.c
@@ -3,5 +3,158 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_tablecaption_element.h>
+
+#include "html/html_document.h"
+#include "html/html_tablecaption_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_TABLE_CAPTION_ELEMENT
+ },
+ DOM_HTML_TABLE_CAPTION_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_table_caption_element object
+ *
+ * \table_caption doc The document object
+ * \table_caption ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_caption_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_caption_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_table_caption_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_table_caption_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_table_caption_element object
+ *
+ * \table_caption doc The document object
+ * \table_caption ele The dom_html_table_caption_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_caption_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_caption_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_CAPTION],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_table_caption_element object
+ *
+ * \table_caption ele The dom_html_table_caption_element object
+ */
+void _dom_html_table_caption_element_finalise(struct dom_html_table_caption_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_table_caption_element object
+ *
+ * \table_caption ele The dom_html_table_caption_element object
+ */
+void _dom_html_table_caption_element_destroy(struct dom_html_table_caption_element *ele)
+{
+ _dom_html_table_caption_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_table_caption_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_table_caption_element_destroy(dom_node_internal *node)
+{
+ _dom_html_table_caption_element_destroy((struct dom_html_table_caption_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_table_caption_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_table_caption_element_get_##attr( \
+ dom_html_table_caption_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_table_caption_element_set_##attr( \
+ dom_html_table_caption_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+SIMPLE_GET_SET(align);
diff --git a/src/html/html_tablecaption_element.h b/src/html/html_tablecaption_element.h
index 2e182d5..b1cfd3b 100644
--- a/src/html/html_tablecaption_element.h
+++ b/src/html/html_tablecaption_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_table_caption_element_h_
+#define dom_internal_html_table_caption_element_h_
+
+#include <dom/html/html_tablecaption_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_table_caption_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_table_caption_element object */
+dom_exception _dom_html_table_caption_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_caption_element **ele);
+
+/* Initialise a dom_html_table_caption_element object */
+dom_exception _dom_html_table_caption_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_caption_element *ele);
+
+/* Finalise a dom_html_table_caption_element object */
+void _dom_html_table_caption_element_finalise(struct dom_html_table_caption_element *ele);
+
+/* Destroy a dom_html_table_caption_element object */
+void _dom_html_table_caption_element_destroy(struct dom_html_table_caption_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_table_caption_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_table_caption_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_table_caption_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_TABLE_CAPTION_ELEMENT_PROTECT_VTABLE \
+ _dom_html_table_caption_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_TABLE_CAPTION_ELEMENT \
+ _dom_virtual_html_table_caption_element_destroy, \
+ _dom_html_table_caption_element_copy
+
+#endif
diff --git a/src/html/html_tablecell_element.c b/src/html/html_tablecell_element.c
index 2e182d5..cc596c1 100644
--- a/src/html/html_tablecell_element.c
+++ b/src/html/html_tablecell_element.c
@@ -3,5 +3,311 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_tablecell_element.h>
+
+#include "html/html_document.h"
+#include "html/html_tablecell_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_TABLE_CELL_ELEMENT
+ },
+ DOM_HTML_TABLE_CELL_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_table_cell_element table_cell
+ *
+ * \param doc The document table_cell
+ * \param ele The returned element table_cell
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_cell_element_create(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_cell_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_table_cell_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_table_cell_element_initialise(doc, tag_name, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_table_cell_element table_cell
+ *
+ * \param doc The document table_cell
+ * \param ele The dom_html_table_cell_element table_cell
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_cell_element_initialise(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_cell_element *ele)
+{
+ ele->id = -1;
+ return _dom_html_element_initialise(doc, &ele->base,
+ tag_name,
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_table_cell_element table_cell
+ *
+ * \param ele The dom_html_table_cell_element table_cell
+ */
+void _dom_html_table_cell_element_finalise(struct dom_html_table_cell_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_table_cell_element table_cell
+ *
+ * \param ele The dom_html_table_cell_element table_cell
+ */
+void _dom_html_table_cell_element_destroy(struct dom_html_table_cell_element *ele)
+{
+ _dom_html_table_cell_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_table_cell_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_table_cell_element_destroy(dom_node_internal *node)
+{
+ _dom_html_table_cell_element_destroy((struct dom_html_table_cell_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_table_cell_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_table_cell_element_get_##attr( \
+ dom_html_table_cell_element *element, \
+ dom_string **attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_table_cell_element_set_##attr( \
+ dom_html_table_cell_element *element, \
+ dom_string *attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(abbr);
+SIMPLE_GET_SET(align);
+SIMPLE_GET_SET(axis);
+SIMPLE_GET_SET(bg_color);
+SIMPLE_GET_SET(ch);
+SIMPLE_GET_SET(ch_off);
+SIMPLE_GET_SET(headers);
+SIMPLE_GET_SET(height);
+SIMPLE_GET_SET(scope);
+SIMPLE_GET_SET(v_align);
+SIMPLE_GET_SET(width);
+
+/**
+ * Get the cell_index property
+ *
+ * \param table_cell The dom_html_table_cell_element object
+ * \param cell_index The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_cell_element_get_cell_index(
+ dom_html_table_cell_element *table_cell, int32_t *cell_index)
+{
+ if(table_cell->id == -1) {
+ dom_node_internal *n = ((dom_node_internal *)table_cell)->parent;
+ dom_html_document *doc = (dom_html_document *)(n->owner);
+ int32_t cnt = 0;
+ while(n != NULL) {
+ if(dom_string_caseless_isequal(doc->memoised[hds_TR],n->name)) {
+ break;
+ }
+ n = n->parent;
+ }
+ dom_node_internal *root = n;
+ while(n != NULL) {
+ if(n == (dom_node_internal *)table_cell) {
+ break;
+ } else if((n->type == DOM_ELEMENT_NODE) &&
+ (dom_string_caseless_isequal(doc->memoised[hds_TD],n->name) ||
+ dom_string_caseless_isequal(doc->memoised[hds_TH],n->name))) {
+ ((dom_html_table_cell_element *)n)->id = cnt;
+ cnt += 1;
+ }
+ if(n->first_child != NULL) {
+ n = n->first_child;
+ } else if(n->next != NULL) {
+ n = n->next;
+ } else {
+ /* No children and siblings */
+ struct dom_node_internal *parent = n->parent;
+ while (n == parent->last_child &&
+ n != root) {
+ n = parent;
+ parent = parent->parent;
+ }
+
+ if(n == root) {
+ n = NULL;
+ } else {
+ n = n->next;
+ }
+ }
+ }
+ table_cell->id = cnt;
+ }
+ *cell_index = table_cell->id;
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get the col_span property
+ *
+ * \param table_cell The dom_html_table_cell_element object
+ * \param no_wrap The returned status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_cell_element_get_col_span(
+ dom_html_table_cell_element *table_cell, int32_t *col_span)
+{
+ return dom_html_element_get_int32_t_property(&table_cell->base, "colspan",
+ SLEN("colspan"), col_span);
+}
+
+/**
+ * Set the col_span property
+ *
+ * \param table_cell The dom_html_table_cell_element object
+ * \param no_wrap The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_cell_element_set_col_span(
+ dom_html_table_cell_element *table_cell, uint32_t col_span)
+{
+ return dom_html_element_set_int32_t_property(&table_cell->base, "colspan",
+ SLEN("colspan"), col_span);
+}
+
+/**
+ * Get the row_span property
+ *
+ * \param table_cell The dom_html_table_cell_element object
+ * \param no_wrap The returned status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_cell_element_get_row_span(
+ dom_html_table_cell_element *table_cell, int32_t *row_span)
+{
+ return dom_html_element_get_int32_t_property(&table_cell->base, "rowspan",
+ SLEN("rowspan"), row_span);
+}
+
+/**
+ * Set the row_span property
+ *
+ * \param table_cell The dom_html_table_cell_element object
+ * \param no_wrap The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_cell_element_set_row_span(
+ dom_html_table_cell_element *table_cell, uint32_t row_span)
+{
+ return dom_html_element_set_int32_t_property(&table_cell->base, "rowspan",
+ SLEN("rowspan"), row_span);
+}
+
+/**
+ * Get the no_wrap property
+ *
+ * \param ele The dom_html_table_cell_element object
+ * \param no_wrap The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_cell_element_get_no_wrap(dom_html_table_cell_element *ele,
+ bool *no_wrap)
+{
+ return dom_html_element_get_bool_property(&ele->base, "nowrap",
+ SLEN("nowrap"), no_wrap);
+}
+
+/**
+ * Set the no_wrap property
+ *
+ * \param ele The dom_html_table_cell_element object
+ * \param no_wrap The status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_cell_element_set_no_wrap(dom_html_table_cell_element *ele,
+ bool no_wrap)
+{
+ return dom_html_element_set_bool_property(&ele->base, "nowrap",
+ SLEN("nowrap"), no_wrap);
+}
+
diff --git a/src/html/html_tablecell_element.h b/src/html/html_tablecell_element.h
index 2e182d5..801c3c0 100644
--- a/src/html/html_tablecell_element.h
+++ b/src/html/html_tablecell_element.h
@@ -3,5 +3,52 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_table_cell_element_h_
+#define dom_internal_html_table_cell_element_h_
+
+#include <dom/html/html_tablecell_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_table_cell_element {
+ struct dom_html_element base;
+ /**< The base class */
+ int32_t id;
+ /**< The Index Associated with the cell*/
+};
+
+/* Create a dom_html_table_cell_element object */
+dom_exception _dom_html_table_cell_element_create(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_cell_element **ele);
+
+/* Initialise a dom_html_table_cell_element object */
+dom_exception _dom_html_table_cell_element_initialise(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_cell_element *ele);
+
+/* Finalise a dom_html_table_cell_element object */
+void _dom_html_table_cell_element_finalise(struct dom_html_table_cell_element *ele);
+
+/* Destroy a dom_html_table_cell_element object */
+void _dom_html_table_cell_element_destroy(struct dom_html_table_cell_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_table_cell_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_table_cell_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_table_cell_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_TABLE_CELL_ELEMENT_PROTECT_VTABLE \
+ _dom_html_table_cell_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_TABLE_CELL_ELEMENT \
+ _dom_virtual_html_table_cell_element_destroy, \
+ _dom_html_table_cell_element_copy
+
+#endif
diff --git a/src/html/html_tablecol_element.c b/src/html/html_tablecol_element.c
index 2e182d5..cf21a24 100644
--- a/src/html/html_tablecol_element.c
+++ b/src/html/html_tablecol_element.c
@@ -3,5 +3,186 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_tablecol_element.h>
+
+#include "html/html_document.h"
+#include "html/html_tablecol_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_TABLE_COL_ELEMENT
+ },
+ DOM_HTML_TABLE_COL_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_table_col_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_col_element_create(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_col_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_table_col_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_table_col_element_initialise(doc, tag_name, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_table_col_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_table_col_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_col_element_initialise(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_col_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ tag_name,
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_table_col_element object
+ *
+ * \param ele The dom_html_table_col_element object
+ */
+void _dom_html_table_col_element_finalise(struct dom_html_table_col_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_table_col_element object
+ *
+ * \param ele The dom_html_table_col_element object
+ */
+void _dom_html_table_col_element_destroy(struct dom_html_table_col_element *ele)
+{
+ _dom_html_table_col_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the width Property
+ *
+ * \param table_col The dom_html_table_col_element object
+ */
+dom_exception dom_html_table_col_element_get_span(
+ dom_html_table_col_element *table_col, int32_t *span)
+{
+ return dom_html_element_get_int32_t_property(&table_col->base, "span",
+ SLEN("span"), span);
+}
+
+/**
+ * Set the width Property
+ *
+ * \param table_col The dom_html_table_col_element object
+ */
+dom_exception dom_html_table_col_element_set_span(
+ dom_html_table_col_element *table_col, uint32_t span)
+{
+ return dom_html_element_set_int32_t_property(&table_col->base, "span",
+ SLEN("span"), span);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_table_col_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_table_col_element_destroy(dom_node_internal *node)
+{
+ _dom_html_table_col_element_destroy((struct dom_html_table_col_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_table_col_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_table_col_element_get_##attr( \
+ dom_html_table_col_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_table_col_element_set_##attr( \
+ dom_html_table_col_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+SIMPLE_GET_SET(align);
+SIMPLE_GET_SET(ch);
+SIMPLE_GET_SET(ch_off);
+SIMPLE_GET_SET(v_align);
+SIMPLE_GET_SET(width);
diff --git a/src/html/html_tablecol_element.h b/src/html/html_tablecol_element.h
index 2e182d5..a8e6fa7 100644
--- a/src/html/html_tablecol_element.h
+++ b/src/html/html_tablecol_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_table_col_element_h_
+#define dom_internal_html_table_col_element_h_
+
+#include <dom/html/html_tablecol_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_table_col_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_table_col_element object */
+dom_exception _dom_html_table_col_element_create(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_col_element **ele);
+
+/* Initialise a dom_html_table_col_element object */
+dom_exception _dom_html_table_col_element_initialise(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_col_element *ele);
+
+/* Finalise a dom_html_table_col_element object */
+void _dom_html_table_col_element_finalise(struct dom_html_table_col_element *ele);
+
+/* Destroy a dom_html_table_col_element object */
+void _dom_html_table_col_element_destroy(struct dom_html_table_col_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_table_col_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_table_col_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_table_col_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_TABLE_COL_ELEMENT_PROTECT_VTABLE \
+ _dom_html_table_col_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_TABLE_COL_ELEMENT \
+ _dom_virtual_html_table_col_element_destroy, \
+ _dom_html_table_col_element_copy
+
+#endif
diff --git a/src/html/html_tablerow_element.c b/src/html/html_tablerow_element.c
index 2e182d5..fb3e27b 100644
--- a/src/html/html_tablerow_element.c
+++ b/src/html/html_tablerow_element.c
@@ -3,5 +3,373 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_tablerow_element.h>
+#include <dom/html/html_table_element.h>
+
+#include "html/html_document.h"
+#include "html/html_tablerow_element.h"
+#include "html/html_collection.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_TABLE_ROW_ELEMENT
+ },
+ DOM_HTML_TABLE_ROW_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_table_row_element table_row
+ *
+ * \param doc The document table_row
+ * \param ele The returned element table_row
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_row_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_row_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_table_row_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_table_row_element_initialise(doc, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_table_row_element table_row
+ *
+ * \param doc The document table_row
+ * \param ele The dom_html_table_row_element table_row
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_row_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_row_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_TR],
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_table_row_element table_row
+ *
+ * \param ele The dom_html_table_row_element table_row
+ */
+void _dom_html_table_row_element_finalise(struct dom_html_table_row_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_table_row_element table_row
+ *
+ * \param ele The dom_html_table_row_element table_row
+ */
+void _dom_html_table_row_element_destroy(struct dom_html_table_row_element *ele)
+{
+ _dom_html_table_row_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_table_row_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_table_row_element_destroy(dom_node_internal *node)
+{
+ _dom_html_table_row_element_destroy((struct dom_html_table_row_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_table_row_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_table_row_element_get_##attr( \
+ dom_html_table_row_element *element, \
+ dom_string **attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_table_row_element_set_##attr( \
+ dom_html_table_row_element *element, \
+ dom_string *attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(align);
+SIMPLE_GET_SET(bg_color);
+SIMPLE_GET_SET(ch);
+SIMPLE_GET_SET(ch_off);
+SIMPLE_GET_SET(v_align);
+
+/**
+ * Get the index of the Row in logical order
+ *
+ * \param element The dom_html_table_row_element object
+ * \param index The Status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_row_element_get_row_index(
+ dom_html_table_row_element *table_row, int32_t *row_index)
+{
+ dom_node_internal *n = ((dom_node_internal *)table_row)->parent;
+ dom_node_internal *parent = n;
+ dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) table_row)->owner;
+ uint32_t count = 0;
+ for(n = n->first_child; n != (dom_node_internal *)table_row;
+ n = n->next) {
+ if(n->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(n->name,doc->memoised[hds_TR])) {
+ count += 1;
+ }
+ }
+
+ if(dom_string_caseless_isequal((parent->parent)->name, doc->memoised[hds_TABLE]) &&
+ dom_string_caseless_isequal(parent->name, doc->memoised[hds_THEAD])
+ ) {
+ *row_index = count;
+ }else if(dom_string_caseless_isequal((parent->parent)->name, doc->memoised[hds_TABLE]) &&
+ (dom_string_caseless_isequal(parent->name, doc->memoised[hds_TBODY]) ||
+ dom_string_caseless_isequal(parent->name, doc->memoised[hds_TFOOT]))) {
+ uint32_t len;
+ n = parent->parent;
+ dom_html_table_section_element *t_head;
+ dom_html_collection *rows;
+ dom_html_table_element_get_t_head(
+ (dom_html_table_element *)(parent->parent),
+ &t_head);
+ dom_html_table_section_element_get_rows(t_head,
+ &rows);
+ dom_html_collection_get_length(rows,
+ &len);
+ count += len;
+ for(n = n->first_child;n != parent && n != NULL;
+ n = n->next) {
+ if(dom_string_caseless_isequal(n->name, doc->memoised[hds_TBODY])) {
+ dom_html_table_section_element_get_rows(
+ (dom_html_table_section_element *)n,
+ &rows);
+ dom_html_collection_get_length(rows, &len);
+ count += len;
+ }
+ }
+ *row_index = (int32_t)count;
+
+ } else {
+ return DOM_HIERARCHY_REQUEST_ERR;
+ }
+ return DOM_NO_ERR;
+}
+
+/**
+ * Get the index of a row within its Section
+ *
+ * \param element The dom_html_table_row_element object
+ * \param index The Status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_row_element_get_section_row_index(
+ dom_html_table_row_element *table_row, int32_t *section_row_index)
+{
+ dom_node_internal *n = ((dom_node_internal *)table_row)->parent;
+ dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) table_row)->owner;
+ int32_t count = 0;
+ for(n = n->first_child; n != (dom_node_internal *)table_row;
+ n = n->next) {
+ if(n->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(n->name, doc->memoised[hds_TR])) {
+ count += 1;
+ }
+ }
+ *section_row_index = count;
+ return DOM_NO_ERR;
+}
+
+/**
+ * Callback for creating the Cells collection
+ *
+ * \param node The dom_node_internal object
+ * \param ctx The dom_html_document object (void *)
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+bool table_cells_callback(struct dom_node_internal *node, void *ctx)
+{
+ if(node->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_TD])) {
+ return true;
+ }
+ return false;
+}
+
+/**
+ * Get the Cells collection
+ *
+ * \param element The dom_html_table_element object
+ * \param t_bodies The Status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_row_element_get_cells(
+ dom_html_table_row_element *element,
+ dom_html_collection **cells)
+{
+ dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) element)->owner;
+ return _dom_html_collection_create(doc, (dom_node_internal *)element,
+ table_cells_callback, (void *)doc, cells);
+}
+
+/**
+ * Insert Cell before the given Index
+ *
+ * \param element The dom_html_table_row_element object
+ * \param index The Index of the Cell node to be inserted
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_row_element_insert_cell(
+ dom_html_table_row_element *element,
+ int32_t index, dom_html_element **cell) {
+ dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) element)->owner;
+
+ dom_node *node; /*< The node at the (index)th position*/
+
+ dom_html_collection *cells; /*< The collection of cells in input table_row_element*/
+ uint32_t len; /*< The size of the cell collection */
+ dom_exception exp; /*< Variable for getting the exceptions*/
+ exp = _dom_html_element_create(doc, doc->memoised[hds_TD],
+ ((dom_node_internal *)element)->namespace,
+ ((dom_node_internal *)element)->prefix,
+ cell);
+ if(exp != DOM_NO_ERR)
+ return exp;
+
+ exp = dom_html_table_row_element_get_cells(element, &cells);
+ if(exp != DOM_NO_ERR)
+ return exp;
+
+ exp = dom_html_collection_get_length(cells, &len);
+ if(exp != DOM_NO_ERR)
+ return exp;
+
+ if(index < -1 || index > (int32_t)len) {
+ /* Check for index validity */
+ return DOM_INDEX_SIZE_ERR;
+ } else if(index == -1 || index == (int32_t)len) {
+ return _dom_node_append_child((dom_node_internal *)element,
+ (dom_node_internal *)*cell,
+ (dom_node_internal **)cell);
+ } else {
+ dom_html_collection_item(cells,
+ index, &node);
+ return _dom_node_insert_before((dom_node_internal *)element,
+ (dom_node_internal *)*cell, (dom_node_internal *)node,
+ (dom_node_internal **)cell);
+ }
+}
+
+/**
+ * Delete Cell at given Index
+ *
+ * \param element The dom_html_table_row_element object
+ * \param index The Index of the Cell node to be deleted
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_row_element_delete_cell(
+ dom_html_table_row_element *element,
+ int32_t index) {
+ dom_node *node; /*< The node at the (index)th position*/
+
+ dom_html_collection *cells; /*< The collection of rows in input table_row_element*/
+ uint32_t len; /*< The size of the row collection */
+
+ dom_exception exp; /*< Temporary variable to store & check the exceptions*/
+
+ exp = dom_html_table_row_element_get_cells(element, &cells);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+
+ exp = dom_html_collection_get_length(cells, &len);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+
+ if(index < -1 || index >= (int32_t)len || len ==0) {
+ /* Check for index validity */
+ return DOM_INDEX_SIZE_ERR;
+ } else if(index == -1) {
+ exp = dom_html_collection_item(cells,
+ len-1, &node);
+ } else {
+ exp = dom_html_collection_item(cells,
+ index, &node);
+ }
+ return _dom_node_remove_child((dom_node_internal *)element,
+ (dom_node_internal *)node,
+ (dom_node_internal **)&node);
+
+}
+
diff --git a/src/html/html_tablerow_element.h b/src/html/html_tablerow_element.h
index 2e182d5..2401790 100644
--- a/src/html/html_tablerow_element.h
+++ b/src/html/html_tablerow_element.h
@@ -3,5 +3,51 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_table_row_element_h_
+#define dom_internal_html_table_row_element_h_
+
+#include <dom/html/html_tablerow_element.h>
+#include "html/html_element.h"
+
+struct dom_html_table_row_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_table_row_element object */
+dom_exception _dom_html_table_row_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_row_element **ele);
+
+/* Initialise a dom_html_table_row_element object */
+dom_exception _dom_html_table_row_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_row_element *ele);
+
+/* Finalise a dom_html_table_row_element object */
+void _dom_html_table_row_element_finalise(struct dom_html_table_row_element *ele);
+
+/* Destroy a dom_html_table_row_element object */
+void _dom_html_table_row_element_destroy(struct dom_html_table_row_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_table_row_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_table_row_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_table_row_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_TABLE_ROW_ELEMENT_PROTECT_VTABLE \
+ _dom_html_table_row_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_TABLE_ROW_ELEMENT \
+ _dom_virtual_html_table_row_element_destroy, \
+ _dom_html_table_row_element_copy
+
+#endif
+bool table_cells_callback(struct dom_node_internal *node, void *ctx);
+
diff --git a/src/html/html_tablesection_element.c b/src/html/html_tablesection_element.c
index 2e182d5..b35cfb4 100644
--- a/src/html/html_tablesection_element.c
+++ b/src/html/html_tablesection_element.c
@@ -3,5 +3,284 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+
+#include <dom/html/html_tablesection_element.h>
+
+#include "html/html_document.h"
+#include "html/html_tablesection_element.h"
+#include "html/html_tablerow_element.h"
+
+#include "html/html_collection.h"
+#include "html/html_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_TABLE_SECTION_ELEMENT
+ },
+ DOM_HTML_TABLE_SECTION_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_table_section_element object
+ *
+ * \table_section doc The document object
+ * \table_section ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_section_element_create(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_section_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_table_section_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_table_section_element_initialise(doc, tag_name, namespace, prefix, *ele);
+}
+
+/**
+ * Initialise a dom_html_table_section_element object
+ *
+ * \table_section doc The document object
+ * \table_section ele The dom_html_table_section_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_table_section_element_initialise(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_section_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ tag_name,
+ namespace, prefix);
+}
+
+/**
+ * Finalise a dom_html_table_section_element object
+ *
+ * \table_section ele The dom_html_table_section_element object
+ */
+void _dom_html_table_section_element_finalise(struct dom_html_table_section_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_table_section_element object
+ *
+ * \table_section ele The dom_html_table_section_element object
+ */
+void _dom_html_table_section_element_destroy(struct dom_html_table_section_element *ele)
+{
+ _dom_html_table_section_element_finalise(ele);
+ free(ele);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_table_section_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_table_section_element_destroy(dom_node_internal *node)
+{
+ _dom_html_table_section_element_destroy((struct dom_html_table_section_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_table_section_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_table_section_element_get_##attr( \
+ dom_html_table_section_element *element, \
+ dom_string **attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_table_section_element_set_##attr( \
+ dom_html_table_section_element *element, \
+ dom_string *attr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)-> \
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+}
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+SIMPLE_GET_SET(align);
+SIMPLE_GET_SET(ch);
+SIMPLE_GET_SET(ch_off);
+SIMPLE_GET_SET(v_align);
+
+/* The callback function for _dom_html_collection_create*/
+bool table_section_callback(struct dom_node_internal *node, void *ctx)
+{
+ if(node->type == DOM_ELEMENT_NODE &&
+ dom_string_caseless_isequal(node->name,
+ ((dom_html_document *)ctx)->memoised[hds_TR])) {
+ return true;
+ }
+ return false;
+}
+
+/**
+ * Get the rows collection
+ *
+ * \param element The dom_html_table_section_element object
+ * \param rows The Status
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_section_element_get_rows(
+ dom_html_table_section_element *element,
+ dom_html_collection **rows)
+{
+ dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) element)->owner;
+ return _dom_html_collection_create(doc, (dom_node_internal *)element,
+ table_section_callback, (void *)doc, rows);
+}
+
+/**
+ * Insert Row before the given Index
+ *
+ * \param element The dom_html_table_section_element object
+ * \param index The Index of the Row node to be inserted
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_section_element_insert_row(
+ dom_html_table_section_element *element,
+ int32_t index, dom_html_element **new_row) {
+ dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) element)->owner;
+
+ dom_node *node; /*< The node at the (index)th position*/
+
+ dom_html_collection *rows; /*< The collection of rows in input table_section_element*/
+ uint32_t len; /*< The size of the row collection */
+ dom_exception exp; /*< Variable for getting the exceptions*/
+ exp = _dom_html_table_row_element_create(doc,
+ ((dom_node_internal *)element)->namespace,
+ ((dom_node_internal *)element)->prefix,
+ (dom_html_table_row_element **)new_row);
+ if(exp != DOM_NO_ERR)
+ return exp;
+
+ exp = dom_html_table_section_element_get_rows(element, &rows);
+ if(exp != DOM_NO_ERR)
+ return exp;
+
+ exp = dom_html_collection_get_length(rows, &len);
+ if(exp != DOM_NO_ERR)
+ return exp;
+
+ if(index < -1 || index > (int32_t)len) {
+ /* Check for index validity */
+ return DOM_INDEX_SIZE_ERR;
+ } else if(index == -1 || index == (int32_t)len) {
+ return _dom_node_append_child((dom_node_internal *)element,
+ (dom_node_internal *)*new_row,
+ (dom_node_internal **)new_row);
+ } else {
+ dom_html_collection_item(rows,
+ index, &node);
+ return _dom_node_insert_before((dom_node_internal *)element,
+ (dom_node_internal *)*new_row, (dom_node_internal *)node,
+ (dom_node_internal **)new_row);
+ }
+}
+
+/**
+ * Delete Row at given Index
+ *
+ * \param element The dom_html_table_section_element object
+ * \param index The Index of the Row node to be deleted
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception dom_html_table_section_element_delete_row(
+ dom_html_table_section_element *element,
+ int32_t index) {
+ dom_node *node; /*< The node at the (index)th position*/
+
+ dom_html_collection *rows; /*< The collection of rows in input table_section_element*/
+ uint32_t len; /*< The size of the row collection */
+
+ dom_exception exp; /*< Temporary variable to store & check the exceptions*/
+
+ exp = dom_html_table_section_element_get_rows(element, &rows);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+
+ exp = dom_html_collection_get_length(rows, &len);
+ if(exp != DOM_NO_ERR) {
+ return exp;
+ }
+
+ if(index < -1 || index >= (int32_t)len) {
+ /* Check for index validity */
+ return DOM_INDEX_SIZE_ERR;
+ } else if(index == -1) {
+ exp = dom_html_collection_item(rows,
+ len-1, &node);
+ } else {
+ exp = dom_html_collection_item(rows,
+ index, &node);
+ }
+ exp = _dom_node_remove_child((dom_node_internal *)element,
+ (dom_node_internal *)node,
+ (dom_node_internal **)&node);
+
+ return DOM_NO_ERR;
+}
diff --git a/src/html/html_tablesection_element.h b/src/html/html_tablesection_element.h
index 2e182d5..387882a 100644
--- a/src/html/html_tablesection_element.h
+++ b/src/html/html_tablesection_element.h
@@ -3,5 +3,52 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_table_section_element_h_
+#define dom_internal_html_table_section_element_h_
+
+#include <dom/html/html_tablesection_element.h>
+
+#include "html/html_element.h"
+
+struct dom_html_table_section_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_table_section_element object */
+dom_exception _dom_html_table_section_element_create(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_section_element **ele);
+
+/* Initialise a dom_html_table_section_element object */
+dom_exception _dom_html_table_section_element_initialise(struct dom_html_document *doc,
+ dom_string *tag_name, dom_string *namespace, dom_string *prefix,
+ struct dom_html_table_section_element *ele);
+
+/* Finalise a dom_html_table_section_element object */
+void _dom_html_table_section_element_finalise(struct dom_html_table_section_element *ele);
+
+/* Destroy a dom_html_table_section_element object */
+void _dom_html_table_section_element_destroy(struct dom_html_table_section_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_table_section_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_table_section_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_table_section_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_TABLE_SECTION_ELEMENT_PROTECT_VTABLE \
+ _dom_html_table_section_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_TABLE_SECTION_ELEMENT \
+ _dom_virtual_html_table_section_element_destroy, \
+ _dom_html_table_section_element_copy
+
+#endif
+bool table_section_callback(struct dom_node_internal *node, void *ctx);
+
diff --git a/src/html/html_text_area_element.c b/src/html/html_text_area_element.c
index eea5b4e..ac90a76 100644
--- a/src/html/html_text_area_element.c
+++ b/src/html/html_text_area_element.c
@@ -438,11 +438,11 @@ dom_exception dom_html_text_area_element_blur(dom_html_text_area_element *ele)
bool success = false;
assert(doc != NULL);
- /** \todo Is this event (a) default (b) bubbling and (c) cancelable? */
+ /* This event does not bubble & is Non-cancellable. Mentioned in w3 specs. More research is needed to prove why. */
return _dom_dispatch_generic_event((dom_document *) doc,
(dom_event_target *) ele,
- doc->memoised[hds_blur], true,
- true, &success);
+ doc->memoised[hds_blur], false,
+ false, &success);
}
/**
@@ -458,11 +458,11 @@ dom_exception dom_html_text_area_element_focus(dom_html_text_area_element *ele)
bool success = false;
assert(doc != NULL);
- /** \todo Is this event (a) default (b) bubbling and (c) cancelable? */
+ /* This event does not bubble & is Non-cancellable. Mentioned in w3 specs. More research is needed to prove why. */
return _dom_dispatch_generic_event((dom_document *)doc,
(dom_event_target *) ele,
- doc->memoised[hds_focus], true,
- true, &success);
+ doc->memoised[hds_focus], false,
+ false, &success);
}
/**
@@ -478,9 +478,9 @@ dom_exception dom_html_text_area_element_select(dom_html_text_area_element *ele)
bool success = false;
assert(doc != NULL);
- /** \todo Is this event (a) default (b) bubbling and (c) cancelable? */
+ /* This event bubbles & is non-cancelable. Mentioned in w3 specs. More research is needed to prove why. */
return _dom_dispatch_generic_event((dom_document *)doc,
(dom_event_target *) ele,
doc->memoised[hds_select], true,
- true, &success);
+ false, &success);
}
diff --git a/src/html/html_ulist_element.c b/src/html/html_ulist_element.c
index 2e182d5..e7f8bb3 100644
--- a/src/html/html_ulist_element.c
+++ b/src/html/html_ulist_element.c
@@ -3,5 +3,182 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar<rsk1coder99@gmail.com>
*/
+#include <assert.h>
+#include <stdlib.h>
+#include <dom/html/html_ulist_element.h>
+
+#include "html/html_document.h"
+#include "html/html_ulist_element.h"
+
+#include "core/node.h"
+#include "core/attr.h"
+#include "utils/utils.h"
+
+static struct dom_element_protected_vtable _protect_vtable = {
+ {
+ DOM_NODE_PROTECT_VTABLE_HTML_U_LIST_ELEMENT
+ },
+ DOM_HTML_U_LIST_ELEMENT_PROTECT_VTABLE
+};
+
+/**
+ * Create a dom_html_u_list_element object
+ *
+ * \param doc The document object
+ * \param ele The returned element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_u_list_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *u_listfix,
+ struct dom_html_u_list_element **ele)
+{
+ struct dom_node_internal *node;
+
+ *ele = malloc(sizeof(dom_html_u_list_element));
+ if (*ele == NULL)
+ return DOM_NO_MEM_ERR;
+
+ /* Set up vtables */
+ node = (struct dom_node_internal *) *ele;
+ node->base.vtable = &_dom_html_element_vtable;
+ node->vtable = &_protect_vtable;
+
+ return _dom_html_u_list_element_initialise(doc, namespace, u_listfix, *ele);
+}
+
+/**
+ * Initialise a dom_html_u_list_element object
+ *
+ * \param doc The document object
+ * \param ele The dom_html_u_list_element object
+ * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
+ */
+dom_exception _dom_html_u_list_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *u_listfix,
+ struct dom_html_u_list_element *ele)
+{
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_UL],
+ namespace, u_listfix);
+}
+
+/**
+ * Finalise a dom_html_u_list_element object
+ *
+ * \param ele The dom_html_u_list_element object
+ */
+void _dom_html_u_list_element_finalise(struct dom_html_u_list_element *ele)
+{
+ _dom_html_element_finalise(&ele->base);
+}
+
+/**
+ * Destroy a dom_html_u_list_element object
+ *
+ * \param ele The dom_html_u_list_element object
+ */
+void _dom_html_u_list_element_destroy(struct dom_html_u_list_element *ele)
+{
+ _dom_html_u_list_element_finalise(ele);
+ free(ele);
+}
+
+/**
+ * Get the compact Property
+ *
+ * \param u_list The dom_html_u_list_element object
+ */
+dom_exception dom_html_u_list_element_get_compact(
+ dom_html_u_list_element *u_list, bool *compact)
+{
+ return dom_html_element_get_bool_property(&u_list->base, "compact",
+ SLEN("compact"), compact);
+}
+
+/**
+ * Set the compact Property
+ *
+ * \param u_list The dom_html_u_list_element object
+ */
+dom_exception dom_html_u_list_element_set_compact(
+ dom_html_u_list_element *u_list, bool compact)
+{
+ return dom_html_element_set_bool_property(&u_list->base, "compact",
+ SLEN("compact"), compact);
+}
+
+/*------------------------------------------------------------------------*/
+/* The protected virtual functions */
+
+/* The virtual function used to parse attribute value, see src/core/element.c
+ * for detail */
+dom_exception _dom_html_u_list_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed)
+{
+ UNUSED(ele);
+ UNUSED(name);
+
+ dom_string_ref(value);
+ *parsed = value;
+
+ return DOM_NO_ERR;
+}
+
+/* The virtual destroy function, see src/core/node.c for detail */
+void _dom_virtual_html_u_list_element_destroy(dom_node_internal *node)
+{
+ _dom_html_u_list_element_destroy((struct dom_html_u_list_element *) node);
+}
+
+/* The virtual copy function, see src/core/node.c for detail */
+dom_exception _dom_html_u_list_element_copy(dom_node_internal *old,
+ dom_node_internal **copy)
+{
+ return _dom_html_element_copy(old, copy);
+}
+
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET(attr) \
+ dom_exception dom_html_u_list_element_get_##attr( \
+ dom_html_u_list_element *element, \
+ dom_string **attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+#define SIMPLE_SET(attr) \
+ dom_exception dom_html_u_list_element_set_##attr( \
+ dom_html_u_list_element *element, \
+ dom_string *attr) \
+ { \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->\
+ memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, attr); \
+ \
+ return ret; \
+ }
+
+#define SIMPLE_GET_SET(attr) SIMPLE_GET(attr) SIMPLE_SET(attr)
+
+SIMPLE_GET_SET(type);
diff --git a/src/html/html_ulist_element.h b/src/html/html_ulist_element.h
index 2e182d5..7e03f47 100644
--- a/src/html/html_ulist_element.h
+++ b/src/html/html_ulist_element.h
@@ -3,5 +3,50 @@
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
+#ifndef dom_internal_html_u_list_element_h_
+#define dom_internal_html_u_list_element_h_
+
+#include <dom/html/html_ulist_element.h>
+#include "html/html_element.h"
+
+
+struct dom_html_u_list_element {
+ struct dom_html_element base;
+ /**< The base class */
+};
+
+/* Create a dom_html_u_list_element object */
+dom_exception _dom_html_u_list_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_u_list_element **ele);
+
+/* Initialise a dom_html_u_list_element object */
+dom_exception _dom_html_u_list_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
+ struct dom_html_u_list_element *ele);
+
+/* Finalise a dom_html_u_list_element object */
+void _dom_html_u_list_element_finalise(struct dom_html_u_list_element *ele);
+
+/* Destroy a dom_html_u_list_element object */
+void _dom_html_u_list_element_destroy(struct dom_html_u_list_element *ele);
+
+/* The protected virtual functions */
+dom_exception _dom_html_u_list_element_parse_attribute(dom_element *ele,
+ dom_string *name, dom_string *value,
+ dom_string **parsed);
+void _dom_virtual_html_u_list_element_destroy(dom_node_internal *node);
+dom_exception _dom_html_u_list_element_copy(dom_node_internal *old,
+ dom_node_internal **copy);
+
+#define DOM_HTML_U_LIST_ELEMENT_PROTECT_VTABLE \
+ _dom_html_u_list_element_parse_attribute
+
+#define DOM_NODE_PROTECT_VTABLE_HTML_U_LIST_ELEMENT \
+ _dom_virtual_html_u_list_element_destroy, \
+ _dom_html_u_list_element_copy
+
+#endif
diff --git a/test/DOMTSHandler.pm b/test/DOMTSHandler.pm
index df2b028..fec9bcb 100644
--- a/test/DOMTSHandler.pm
+++ b/test/DOMTSHandler.pm
@@ -42,6 +42,13 @@ our %special_type = (
HTMLFormElement => "dom_html_form_element *",
CharacterData => "dom_characterdata *",
CDATASection => "dom_cdata_section *",
+ HTMLAnchorElement => "dom_html_anchor_element *",
+ HTMLElement => "dom_html_element *",
+ HTMLTableCaptionElement => "dom_html_table_caption_element *",
+ HTMLTableSectionElement => "dom_html_table_section_element *",
+ HTMLTableElement => "dom_html_table_element *",
+ HTMLTableRowElement => "dom_html_table_row_element *",
+ HTMLOptionsCollection => "dom_html_options_collection *",
);
our %special_prefix = (
DOMString => "dom_string",
@@ -53,6 +60,23 @@ our %special_prefix = (
CharacterData => "dom_characterdata",
CDATASection => "dom_cdata_section *",
HTMLHRElement => "dom_html_hr_element",
+ HTMLBRElement => "dom_html_br_element",
+ HTMLLIElement => "dom_html_li_element",
+ HTMLTableCaptionElement => "dom_html_table_caption_element",
+ HTMLTableSectionElement => "dom_html_table_section_element",
+ HTMLIsIndexElement => "dom_html_isindex_element",
+ HTMLIFrameElement => "dom_html_iframe_element",
+ caption => "dom_html_table_caption_element *",
+ section => "dom_html_table_section_element *",
+ createCaption => "dom_html_element *",
+ createTHead => "dom_html_element *",
+ createTFoot => "dom_html_element *",
+ deleteCaption => "dom_html_element *",
+ deleteTHead => "dom_html_element *",
+ deleteTFoot => "dom_html_element *",
+ insertRow => "dom_html_element *",
+ deleteRow => "dom_html_element *",
+ form => "dom_html_form_element *",
);
our %unref_prefix = (
@@ -60,6 +84,7 @@ our %unref_prefix = (
NamedNodeMap => "dom_namednodemap",
NodeList => "dom_nodelist",
HTMLCollection => "dom_html_collection",
+ HTMLDocument => "dom_html_document",
);
our %special_method = (
@@ -67,6 +92,7 @@ our %special_method = (
our %special_attribute = (
namespaceURI => "namespace",
+ URL => "url",
);
our %no_unref = (
@@ -160,10 +186,14 @@ sub new {
# The name of the current List/Collection
list_name => "",
# The number of items of the current List/Collection
+ list_last_name => [],
+ # The number of items of the current List/Collection
list_num => 0,
# Whether List/Collection has members
list_hasmem => 0,
# The type of the current List/Collection
+ member_list_declared => 0,
+ # The type of the current List/Collection
list_type => "",
# Whether we are in exception assertion
exception => 0,
@@ -385,6 +415,7 @@ int main(int argc, char **argv)
perror("chdir (\\"$self->{chdir})\\"");
return 1;
}
+ int list_temp[100], count = -1;
__EOF__
}
@@ -438,7 +469,6 @@ sub generate_list {
# Yes, we are in List/Collection declaration
# Firstly, enclose the Array declaration
print "};\n";
-
# Now, we should create the list * for the List/Collection
# Note, we should deal with "int" or "string" type with different params.
if ($self->{"list_type"} eq "char *") {
@@ -446,18 +476,37 @@ sub generate_list {
}
if ($self->{"list_type"} eq "int *") {
print $self->{"list_name"}." = list_new(INT);\n";
+ while(defined ($x = pop @{$self->{"list_last_name"}})) {
+ print $x." = list_new(INT);\n";
+ }
+ }
+ while(defined($x = pop(@{$self->{"list_last_name"}}))) {
+ print $x." = list_new(DOM_STRING);\n";
}
+ $self->{"member_list_declared"} = 1;
if ($self->{"list_type"} eq "") {
die "A List/Collection has children member but no type is impossible!";
}
- for (my $i = 0; $i < $self->{"list_num"}; $i++) {
- # Use *(char **) to convert char *[] to char *
- print "list_add(".$self->{"list_name"}.", *(char **)(".$self->{"list_name"}."Array + $i));\n";
+ if ($self->{"list_type"} eq "int *") {
+
+ for (my $i = 0; $i < $self->{"list_num"}; $i++) {
+ # Use *(char **) to convert char *[] to char *
+ print "list_add(".$self->{"list_name"}.", (int *)(".$self->{"list_name"}."Array) + $i);\n";
+ }
+ } else {
+ for (my $i = 0; $i < $self->{"list_num"}; $i++) {
+ # Use *(char **) to convert char *[] to char *
+ print "list_add(".$self->{"list_name"}.", *(char **)(".$self->{"list_name"}."Array + $i));\n";
+ }
}
} else {
if ($self->{"list_name"} ne "") {
#TODO: generally, we set the list type as dom_string, but it may be dom_node
- print $self->{"list_name"}." = list_new(DOM_STRING);\n";
+ if( $self->{"member_list_declared"} eq 1) {
+ print $self->{"list_name"}." = list_new(DOM_STRING);\n";
+ } else {
+ push(@{$self->{"list_last_name"}}, $self->{"list_name"});
+ }
$self->{"list_type"} = "DOMString";
}
}
@@ -476,21 +525,29 @@ sub generate_load {
my ($self, $a) = @_;
my %ats = %$a;
my $doc = $ats{"var"};
-
$test_index ++;
+ my $var = $self->{"var"};
# define the test file path, use HTML if there is, otherwise using XML
# Attention: I intend to copy the test files to the program excuting dir
print "\tconst char *test$test_index = \"$ats{'href'}.html\";\n\n";
- print "\t$doc = load_html(test$test_index, $ats{'willBeModified'});";
+ if ($var->{$doc} eq "Node") {
+ print "\t$doc = (dom_node*) load_html(test$test_index, $ats{'willBeModified'});";
+ } else {
+ print "\t$doc = load_html(test$test_index, $ats{'willBeModified'});";
+ }
print "\tif ($doc == NULL) {\n";
$test_index ++;
print "\t\tconst char *test$test_index = \"$ats{'href'}.xml\";\n\n";
- print "\t\t$doc = load_xml(test$test_index, $ats{'willBeModified'});\n";
+ if ($var->{$doc} eq "Node") {
+ print "\t\t$doc = (dom_node *) load_xml(test$test_index, $ats{'willBeModified'});\n";
+ } else {
+ print "\t\t$doc = load_xml(test$test_index, $ats{'willBeModified'});\n";
+ }
print "\t\tif ($doc == NULL)\n";
print "\t\t\treturn 1;\n";
print "\t\t}\n";
print << "__EOF__";
- exp = dom_document_get_implementation($doc, &doc_impl);
+ exp = dom_document_get_implementation((dom_document *) $doc, &doc_impl);
if (exp != DOM_NO_ERR)
return exp;
__EOF__
@@ -541,14 +598,19 @@ sub generate_framework_statement {
if (exists $ats->{"obj"}) {
$obj = $ats->{"obj"};
} else {
- $obj = $ats->{"item"}
+ $obj = $ats->{"item"};
}
-
+
if (not $self->{"var"}->{$col} =~ /^(List|Collection)/) {
die "Append data to some non-list type!";
}
-
- print "list_add($col, $obj);\n";
+ $type = $self->{"var"}->{$obj};
+ if ($type eq "int") {
+ print "\nlist_temp[++count] =$obj;\n";
+ print "list_add($col, &list_temp[count]);\n\n";
+ } else {
+ print "list_add($col, $obj);\n";
+ }
}
case [qw(plus subtract mult divide)] {
@@ -669,6 +731,8 @@ sub generate_method {
$method = to_cmethod($ats{'interface'}, $en);
my $cast = to_attribute_cast($ats{'interface'});
+ my $get_attribute = $node->getAttribute("name");
+ my $cast_get_attribute = to_get_attribute_cast($get_attribute, $ats{'interface'});
my $ns = $dd->find("parameters/param", $node);
my $params = "${cast}$ats{'obj'}";
for ($count = 1; $count <= $ns->size; $count++) {
@@ -734,7 +798,7 @@ sub generate_method {
# Indicate that we have created a temp node
$temp_node = 1;
} else {
- $params = $params.", (void *) \&$ats{'var'}";
+ $params = $params.", $cast_get_attribute\&$ats{'var'}";
$unref = $self->param_unref($ats{'var'});
}
}
@@ -796,6 +860,8 @@ sub generate_attribute_fetcher {
my $fetcher = to_attribute_fetcher($ats{'interface'}, "$en");
my $cast = to_attribute_cast($ats{'interface'});
+ my $get_attribute = $node->getAttribute("name");
+ my $cast_get_attribute = to_get_attribute_cast($get_attribute, $ats{'interface'});
my $unref = 0;
my $temp_node = 0;
# Deal with the situation like
@@ -821,7 +887,7 @@ sub generate_attribute_fetcher {
$temp_node = 1;
} else {
$unref = $self->param_unref($ats{'var'});
- print "\texp = $fetcher(${cast}$ats{'obj'}, \&$ats{'var'});\n";
+ print "\texp = $fetcher(${cast}$ats{'obj'}, ${cast_get_attribute}\&$ats{'var'});\n";
}
@@ -1146,7 +1212,7 @@ sub generate_assertion {
$fragment = $ats->{fragment};
}
if (exists $ats->{isAbsolute}) {
- $isAbsolute = $ats->{isAbsolute};
+ $isAbsolute = "\"$ats->{isAbsolute}\"";
}
print "is_uri_equals($scheme, $path, $host, $file, $name, $query, $fragment, $isAbsolute, $actual)"
@@ -1412,7 +1478,30 @@ sub get_prefix {
}
return $prefix;
}
+sub to_get_attribute_cast {
+ my $type = shift;
+ my $interface = shift;
+ my $ret = get_get_attribute_prefix($type, $interface);
+ if($ret eq "") {
+ return $ret;
+ }
+ $ret =~ s/h_t_m_l/html/;
+ return "(${ret} *)";
+}
+
+sub get_get_attribute_prefix {
+ my $type = shift;
+ my $interface = shift;
+ if ($type eq "length") {
+ $prefix = "uint32_t ";
+ } elsif (exists $special_prefix{$type}) {
+ $prefix = $special_prefix{$type};
+ } else {
+ $prefix = "";
+ }
+ return $prefix;
+}
# This function remain unsed
sub get_suffix {
my $type = shift;
diff --git a/test/Makefile b/test/Makefile
index 79f075d..951d1bd 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -60,6 +60,9 @@ $(eval $(call do_xml_suite,level1/html,dom1-interfaces.xml))
# Include the level 2 core tests
$(eval $(call do_xml_suite,level2/core,dom2-core-interface.xml))
+# Include level 2 html tests
+$(eval $(call do_xml_suite,level2/html,dom1-interfaces.xml))
+
CLEAN_ITEMS := $(DIR)INDEX
include $(NSBUILD)/Makefile.subdir
diff --git a/test/dom1-interfaces.xml b/test/dom1-interfaces.xml
index 0c2488e..a0d11c7 100644
--- a/test/dom1-interfaces.xml
+++ b/test/dom1-interfaces.xml
@@ -160,6 +160,25 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
</exception>
</raises>
</method>
+<method name="getElementById" id="ID-36113835">
+<descr>
+<p>Returns the Element whose<code>id</code>is given by elementId. If no such element exists, returns<code>null</code>. Behavior is not defined if more than one element has this<code>id</code>.</p>
+</descr>
+<parameters>
+<param id="ID-9998411" name="elementId" type="DOMString" attr="in">
+<descr>
+<p>The unique<code>id</code>value for an element.</p>
+</descr>
+</param>
+</parameters>
+<returns type="Element">
+<descr>
+<p>The matching element.</p>
+</descr>
+</returns>
+<raises/>
+</method>
+
<method name="createDocumentFragment" id="ID-35CB04B5">
<descr>
<p>Creates an empty<code>DocumentFragment</code>object.</p>
@@ -701,7 +720,31 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
</returns>
<raises/>
</method>
+<method name="isSupported" id="notknown">
+<descr>
+<p/>
+</descr>
+<parameters>
+<param name="feature" type="DOMString" attr="in">
+<descr>
+<p/>
+</descr>
+</param>
+<param name="version" type="DOMString" attr="in">
+<descr>
+<p/>
+</descr>
+</param>
+</parameters>
+<returns type="bool">
+<descr>
+<p/>
+</descr>
+</returns>
+<raises/>
+</method>
</interface>
+
<interface name="NodeList" id="ID-536297177">
<descr>
<p>The<code>NodeList</code>interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented.</p>
@@ -1564,24 +1607,6 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
</returns>
<raises/>
</method>
-<method name="getElementById" id="ID-36113835">
-<descr>
-<p>Returns the Element whose<code>id</code>is given by elementId. If no such element exists, returns<code>null</code>. Behavior is not defined if more than one element has this<code>id</code>.</p>
-</descr>
-<parameters>
-<param id="ID-9998411" name="elementId" type="DOMString" attr="in">
-<descr>
-<p>The unique<code>id</code>value for an element.</p>
-</descr>
-</param>
-</parameters>
-<returns type="Element">
-<descr>
-<p>The matching element.</p>
-</descr>
-</returns>
-<raises/>
-</method>
<method name="getElementsByName" id="ID-71555259">
<descr>
<p>Returns the (possibly empty) collection of elements whose<code>name</code>value is given by<code>elementName</code>.</p>
@@ -3606,6 +3631,11 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<p>A URI designating the initial frame contents. See the<loc href="http://www.w3.org/TR/REC-html40/present/frames.html#adef-src-FRAME" form="simple" show="embed" actuate="auto">src attribute definition</loc>in HTML 4.0.</p>
</descr>
</attribute>
+<attribute readonly="yes" type="Document" name="contentDocument" id="contentDoc">
+<descr>
+<p/>
+</descr>
+</attribute>
</interface>
<interface name="HTMLIFrameElement" inherits="HTMLElement" id="ID-50708718">
<descr>
@@ -3661,5 +3691,58 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<p>Frame width. See the<loc href="http://www.w3.org/TR/REC-html40/present/frames.html#adef-width-IFRAME" form="simple" show="embed" actuate="auto">width attribute definition</loc>in HTML 4.0.</p>
</descr>
</attribute>
+<attribute readonly="yes" type="Document" name="contentDocument" id="contentDoc">
+<descr>
+<p/>
+</descr>
+</attribute>
+
+</interface>
+<interface name="HTMLOptionsCollection" id="ID-75708506">
+<descr>
+<p>An<code>HTMLOptionsCollection</code>is a list of nodes. An individual node may be accessed by either ordinal index or the node's<code>name</code>or<code>id</code>attributes.<emph>Note:</emph>Collections in the HTML DOM are assumed to be<emph>live</emph>meaning that they are automatically updated when the underlying document is changed.</p>
+</descr>
+<attribute readonly="yes" type="unsigned long" name="length" id="ID-40057551">
+<descr>
+<p>This attribute specifies the length or<emph>size</emph>of the list.</p>
+</descr>
+</attribute>
+<method name="item" id="ID-33262535">
+<descr>
+<p>This method retrieves a node specified by ordinal index. Nodes are numbered in tree order (depth-first traversal order).</p>
+</descr>
+<parameters>
+<param id="ID-3496656" name="index" type="unsigned long" attr="in">
+<descr>
+<p>The index of the node to be fetched. The index origin is 0.</p>
+</descr>
+</param>
+</parameters>
+<returns type="Node">
+<descr>
+<p>The<code>Node</code>at the corresponding position upon success. A value of<code>null</code>is returned if the index is out of range.</p>
+</descr>
+</returns>
+<raises/>
+</method>
+<method name="namedItem" id="ID-21069976">
+<descr>
+<p>This method retrieves a<code>Node</code>using a name. It first searches for a<code>Node</code>with a matching<code>id</code>attribute. If it doesn't find one, it then searches for a<code>Node</code>with a matching<code>name</code>attribute, but only on those elements that are allowed a name attribute.</p>
+</descr>
+<parameters>
+<param id="ID-76682631" name="name" type="DOMString" attr="in">
+<descr>
+<p>The name of the<code>Node</code>to be fetched.</p>
+</descr>
+</param>
+</parameters>
+<returns type="Node">
+<descr>
+<p>The<code>Node</code>with a<code>name</code>or<code>id</code>attribute whose value corresponds to the specified string. Upon failure (e.g., no node with this name exists), returns<code>null</code>.</p>
+</descr>
+</returns>
+<raises/>
+</method>
</interface>
+
</library>
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement01.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement01.xml
index a076a18..a076a18 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement01.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement02.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement02.xml
index 247a8cb..247a8cb 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement02.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement03.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement03.xml
index 07a421c..07a421c 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement03.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement04.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement04.xml
index 7b961c4..7b961c4 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement04.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement05.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement05.xml
index 0329515..0329515 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement05.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement06.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement06.xml
index ad768fa..ad768fa 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement06.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement07.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement07.xml
index a70cc36..a70cc36 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement07.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement08.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement08.xml
index bb76341..bb76341 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement08.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement09.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement09.xml
index 7da6d18..7da6d18 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement09.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement10.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement10.xml
index 201c113..201c113 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement10.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement11.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement11.xml
index 00c2bb9..00c2bb9 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement11.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement11.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement12.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement12.xml
index 3b22328..3b22328 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement12.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement12.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement13.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement13.xml
index 555985d..555985d 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement13.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement13.xml
diff --git a/test/testcases/tests/level1/html/HTMLAnchorElement14.xml.notimpl b/test/testcases/tests/level1/html/HTMLAnchorElement14.xml
index 7d3d0c6..7d3d0c6 100644
--- a/test/testcases/tests/level1/html/HTMLAnchorElement14.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAnchorElement14.xml
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement01.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement01.xml
index 7be4ac6..7be4ac6 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement01.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement02.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement02.xml
index 2042f0a..2042f0a 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement02.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement03.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement03.xml
index a68e3e0..a68e3e0 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement03.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement04.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement04.xml
index 23e8bb6..23e8bb6 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement04.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement05.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement05.xml
index 81076d1..81076d1 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement05.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement06.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement06.xml
index 1d280da..1d280da 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement06.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement07.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement07.xml.kfail
index d3b4858..d3b4858 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement07.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement07.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement08.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement08.xml
index a473f23..a473f23 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement08.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement09.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement09.xml.kfail
index 98d2413..98d2413 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement09.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement09.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement10.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement10.xml
index 2cf1b6a..2cf1b6a 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement10.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLAppletElement11.xml.notimpl b/test/testcases/tests/level1/html/HTMLAppletElement11.xml
index 91cba8b..91cba8b 100644
--- a/test/testcases/tests/level1/html/HTMLAppletElement11.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAppletElement11.xml
diff --git a/test/testcases/tests/level1/html/HTMLAreaElement01.xml.notimpl b/test/testcases/tests/level1/html/HTMLAreaElement01.xml
index 58db920..58db920 100644
--- a/test/testcases/tests/level1/html/HTMLAreaElement01.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAreaElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLAreaElement02.xml.notimpl b/test/testcases/tests/level1/html/HTMLAreaElement02.xml
index e90e643..e90e643 100644
--- a/test/testcases/tests/level1/html/HTMLAreaElement02.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAreaElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLAreaElement03.xml.notimpl b/test/testcases/tests/level1/html/HTMLAreaElement03.xml
index e0d2114..e0d2114 100644
--- a/test/testcases/tests/level1/html/HTMLAreaElement03.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAreaElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLAreaElement04.xml.notimpl b/test/testcases/tests/level1/html/HTMLAreaElement04.xml
index c464ae0..c464ae0 100644
--- a/test/testcases/tests/level1/html/HTMLAreaElement04.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAreaElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLAreaElement05.xml.notimpl b/test/testcases/tests/level1/html/HTMLAreaElement05.xml
index 31bff76..31bff76 100644
--- a/test/testcases/tests/level1/html/HTMLAreaElement05.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAreaElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLAreaElement06.xml.notimpl b/test/testcases/tests/level1/html/HTMLAreaElement06.xml
index 407f72a..407f72a 100644
--- a/test/testcases/tests/level1/html/HTMLAreaElement06.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAreaElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLAreaElement07.xml.notimpl b/test/testcases/tests/level1/html/HTMLAreaElement07.xml
index c03b07d..c03b07d 100644
--- a/test/testcases/tests/level1/html/HTMLAreaElement07.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAreaElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLAreaElement08.xml.notimpl b/test/testcases/tests/level1/html/HTMLAreaElement08.xml
index 9d485fe..9d485fe 100644
--- a/test/testcases/tests/level1/html/HTMLAreaElement08.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLAreaElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLBRElement01.xml.notimpl b/test/testcases/tests/level1/html/HTMLBRElement01.xml
index cc4d17a..cc4d17a 100644
--- a/test/testcases/tests/level1/html/HTMLBRElement01.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLBRElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLBaseElement01.xml.notimpl b/test/testcases/tests/level1/html/HTMLBaseElement01.xml
index fa6eacc..fa6eacc 100644
--- a/test/testcases/tests/level1/html/HTMLBaseElement01.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLBaseElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLBaseElement02.xml.notimpl b/test/testcases/tests/level1/html/HTMLBaseElement02.xml
index d2a20a5..d2a20a5 100644
--- a/test/testcases/tests/level1/html/HTMLBaseElement02.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLBaseElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLBaseFontElement01.xml.notimpl b/test/testcases/tests/level1/html/HTMLBaseFontElement01.xml
index 525438f..525438f 100644
--- a/test/testcases/tests/level1/html/HTMLBaseFontElement01.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLBaseFontElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLBaseFontElement02.xml.notimpl b/test/testcases/tests/level1/html/HTMLBaseFontElement02.xml
index 94894d6..94894d6 100644
--- a/test/testcases/tests/level1/html/HTMLBaseFontElement02.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLBaseFontElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLBaseFontElement03.xml.notimpl b/test/testcases/tests/level1/html/HTMLBaseFontElement03.xml.kfail
index e63b16f..e63b16f 100644
--- a/test/testcases/tests/level1/html/HTMLBaseFontElement03.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLBaseFontElement03.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLCollection01.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection01.xml.notimpl
deleted file mode 100644
index fd2cfe4..0000000
--- a/test/testcases/tests/level1/html/HTMLCollection01.xml.notimpl
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="test-to-html.xml" type="text/xml"?>
-
-<!--
-
-Copyright (c) 2001 World Wide Web Consortium,
-(Massachusetts Institute of Technology, Institut National de
-Recherche en Informatique et en Automatique, Keio University). All
-Rights Reserved. This program is distributed under the W3C's Software
-Intellectual Property License. This program is distributed in the
-hope that it will be useful, but WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE.
-
-See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-
--->
-<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection01">
-<metadata>
-<title>HTMLCollection01</title>
-<creator>NIST</creator>
-<description>
- An individual node may be accessed by either ordinal index, the node's
- name or id attributes. (Test ordinal index).
-
- Retrieve the first TABLE element and create a HTMLCollection by invoking
- the "rows" attribute. The item located at ordinal index 0 is further
- retrieved and its "rowIndex" attribute is examined.
-</description>
-<contributor>Rick Rivello</contributor>
-<date qualifier="created">2002-05-01</date>
-<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-33262535"/>
-</metadata>
-<var name="nodeList" type="NodeList"/>
-<var name="testNode" type="Node"/>
-<var name="rowNode" type="Node"/>
-<var name="rowsnodeList" type="HTMLCollection"/>
-<var name="vrowindex" type="int" />
-<var name="doc" type="Document"/>
-<load var="doc" href="collection" willBeModified="false"/>
-<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"table"'/>
-<assertSize collection="nodeList" size="1" id="Asize"/>
-<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
-<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
-<item interface="HTMLCollection" obj="rowsnodeList" var="rowNode" index="0"/>
-<rowIndex interface="HTMLTableRowElement" obj="rowNode" var="vrowindex"/>
-<assertEquals actual="vrowindex" expected="0" id="rowIndexLink" ignoreCase="false"/>
-</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection02.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection02.xml.kfail
deleted file mode 100644
index 521d5ae..0000000
--- a/test/testcases/tests/level1/html/HTMLCollection02.xml.kfail
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="test-to-html.xml" type="text/xml"?>
-
-<!--
-
-Copyright (c) 2001 World Wide Web Consortium,
-(Massachusetts Institute of Technology, Institut National de
-Recherche en Informatique et en Automatique, Keio University). All
-Rights Reserved. This program is distributed under the W3C's Software
-Intellectual Property License. This program is distributed in the
-hope that it will be useful, but WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE.
-
-See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-
--->
-<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection02">
-<metadata>
-<title>HTMLCollection02</title>
-<creator>NIST</creator>
-<description>
- An individual node may be accessed by either ordinal index, the node's
- name or id attributes. (Test node name).
-
- Retrieve the first FORM element and create a HTMLCollection by invoking
- the elements attribute. The first SELECT element is further retrieved
- using the elements name attribute.
-</description>
-<contributor>Rick Rivello</contributor>
-<date qualifier="created">2002-05-01</date>
-<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-76728479"/>
-</metadata>
-<var name="nodeList" type="NodeList"/>
-<var name="testNode" type="Node"/>
-<var name="formNode" type="Node"/>
-<var name="formsnodeList" type="HTMLCollection"/>
-<var name="vname" type="DOMString" />
-<var name="doc" type="Document"/>
-<load var="doc" href="collection" willBeModified="false"/>
-<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"form"'/>
-<assertSize collection="nodeList" size="1" id="Asize"/>
-<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
-<elements interface="HTMLFormElement" obj="testNode" var="formsnodeList"/>
-<namedItem obj="formsnodeList" var="formNode" name='"select1"'/>
-<nodeName obj="formNode" var="vname"/>
-<assertEquals actual="vname" expected='"SELECT"' id="nameIndexLink" ignoreCase="auto"/>
-</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection03.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection03.xml.kfail
deleted file mode 100644
index 36d489e..0000000
--- a/test/testcases/tests/level1/html/HTMLCollection03.xml.kfail
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="test-to-html.xml" type="text/xml"?>
-
-<!--
-
-Copyright (c) 2001 World Wide Web Consortium,
-(Massachusetts Institute of Technology, Institut National de
-Recherche en Informatique et en Automatique, Keio University). All
-Rights Reserved. This program is distributed under the W3C's Software
-Intellectual Property License. This program is distributed in the
-hope that it will be useful, but WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE.
-
-See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-
--->
-<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection03">
-<metadata>
-<title>HTMLCollection03</title>
-<creator>NIST</creator>
-<description>
- An individual node may be accessed by either ordinal index, the node's
- name or id attributes. (Test id attribute).
-
- Retrieve the first FORM element and create a HTMLCollection by invoking
- the "element" attribute. The first SELECT element is further retrieved
- using the elements id.
-</description>
-<contributor>Rick Rivello</contributor>
-<date qualifier="created">2002-05-01</date>
-<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-21069976"/>
-</metadata>
-<var name="nodeList" type="NodeList"/>
-<var name="testNode" type="Node"/>
-<var name="formNode" type="Node"/>
-<var name="formsnodeList" type="HTMLCollection"/>
-<var name="vname" type="DOMString" />
-<var name="doc" type="Document"/>
-<load var="doc" href="collection" willBeModified="false"/>
-<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"form"'/>
-<assertSize collection="nodeList" size="1" id="Asize"/>
-<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
-<elements interface="HTMLFormElement" obj="testNode" var="formsnodeList"/>
-<namedItem obj="formsnodeList" var="formNode" name='"selectId"'/>
-<nodeName obj="formNode" var="vname"/>
-<assertEquals actual="vname" expected='"select"' id="nameIndexLink" ignoreCase="auto"/>
-</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection04.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection04.xml
index 5d78405..5d78405 100644
--- a/test/testcases/tests/level1/html/HTMLCollection04.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection04.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection05.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection05.xml
index ffb7d13..ffb7d13 100644
--- a/test/testcases/tests/level1/html/HTMLCollection05.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection05.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection06.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection06.xml
index 1026310..1026310 100644
--- a/test/testcases/tests/level1/html/HTMLCollection06.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection06.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection07.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection07.xml
index e0a21a2..55e392f 100644
--- a/test/testcases/tests/level1/html/HTMLCollection07.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection07.xml
@@ -45,5 +45,5 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
<item interface="HTMLCollection" obj="rowsnodeList" var="rowNode" index="3"/>
<rowIndex interface="HTMLTableRowElement" obj="rowNode" var="vrowindex"/>
-<assertEquals actual="vrowindex" expected="3" id="rowIndexLink" ignoreCase="false"/>
+<assertEquals actual="vrowindex" expected="2" id="rowIndexLink" ignoreCase="false"/>
</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection08.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection08.xml
index dfc2e10..8f7f138 100644
--- a/test/testcases/tests/level1/html/HTMLCollection08.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection08.xml
@@ -43,7 +43,7 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<assertSize collection="nodeList" size="1" id="Asize"/>
<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
-<item interface="HTMLCollection" obj="rowsnodeList" var="rowNode" index="2"/>
+<item interface="HTMLCollection" obj="rowsnodeList" var="rowNode" index="3"/>
<rowIndex interface="HTMLTableRowElement" obj="rowNode" var="vrowindex"/>
<assertEquals actual="vrowindex" expected="2" id="rowIndexLink" ignoreCase="false"/>
</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection09.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection09.xml
index f81e7af..f81e7af 100644
--- a/test/testcases/tests/level1/html/HTMLCollection09.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection09.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection10.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection10.xml
index 78f4c9a..78f4c9a 100644
--- a/test/testcases/tests/level1/html/HTMLCollection10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLCollection10.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection11.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection11.xml
index ebf217f..ebf217f 100644
--- a/test/testcases/tests/level1/html/HTMLCollection11.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLCollection11.xml
diff --git a/test/testcases/tests/level1/html/HTMLDirectoryElement01.xml.notimpl b/test/testcases/tests/level1/html/HTMLDirectoryElement01.xml
index 4b1b402..4b1b402 100644
--- a/test/testcases/tests/level1/html/HTMLDirectoryElement01.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDirectoryElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLDivElement01.xml.notimpl b/test/testcases/tests/level1/html/HTMLDivElement01.xml
index c658eb2..c658eb2 100644
--- a/test/testcases/tests/level1/html/HTMLDivElement01.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDivElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLDlistElement01.xml.notimpl b/test/testcases/tests/level1/html/HTMLDlistElement01.xml
index 727c189..727c189 100644
--- a/test/testcases/tests/level1/html/HTMLDlistElement01.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDlistElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLDocument02.xml b/test/testcases/tests/level1/html/HTMLDocument02.xml.kfail
index 24bd58f..24bd58f 100644
--- a/test/testcases/tests/level1/html/HTMLDocument02.xml
+++ b/test/testcases/tests/level1/html/HTMLDocument02.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLDocument03.xml b/test/testcases/tests/level1/html/HTMLDocument03.xml.kfail
index 97e291d..97e291d 100644
--- a/test/testcases/tests/level1/html/HTMLDocument03.xml
+++ b/test/testcases/tests/level1/html/HTMLDocument03.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLDocument04.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument04.xml.kfail
index 223d426..223d426 100644
--- a/test/testcases/tests/level1/html/HTMLDocument04.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument04.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLDocument05.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument05.xml
index a764b35..a764b35 100644
--- a/test/testcases/tests/level1/html/HTMLDocument05.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument05.xml
diff --git a/test/testcases/tests/level1/html/HTMLDocument07.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument07.xml
index a08972f..a08972f 100644
--- a/test/testcases/tests/level1/html/HTMLDocument07.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument07.xml
diff --git a/test/testcases/tests/level1/html/HTMLDocument08.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument08.xml.kfail
index fcc8147..f4b3e3d 100644
--- a/test/testcases/tests/level1/html/HTMLDocument08.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument08.xml.kfail
@@ -38,5 +38,6 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<load var="doc" href="document" willBeModified="false"/>
<applets interface="HTMLDocument" obj="doc" var="vapplets" />
<length interface="HTMLCollection" obj="vapplets" var="vlength" />
+<!-- The following assertion appears to be false. There appear to be 2 object elements containing applet type elements in the test file. Mentor approval is neccessary--!>
<assertEquals actual="vlength" expected='4' id="length" ignoreCase="false" />
</test>
diff --git a/test/testcases/tests/level1/html/HTMLDocument09.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument09.xml
index 037811f..037811f 100644
--- a/test/testcases/tests/level1/html/HTMLDocument09.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument09.xml
diff --git a/test/testcases/tests/level1/html/HTMLDocument10.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument10.xml
index 700cebd..700cebd 100644
--- a/test/testcases/tests/level1/html/HTMLDocument10.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument10.xml
diff --git a/test/testcases/tests/level1/html/HTMLDocument11.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument11.xml
index 308131f..308131f 100644
--- a/test/testcases/tests/level1/html/HTMLDocument11.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument11.xml
diff --git a/test/testcases/tests/level1/html/HTMLDocument12.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument12.xml.kfail
index 964e70c..964e70c 100644
--- a/test/testcases/tests/level1/html/HTMLDocument12.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument12.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLDocument13.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument13.xml.kfail
index fc7244b..fc7244b 100644
--- a/test/testcases/tests/level1/html/HTMLDocument13.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument13.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLDocument14.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument14.xml.kfail
index c41fe14..c41fe14 100644
--- a/test/testcases/tests/level1/html/HTMLDocument14.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument14.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLDocument15.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument15.xml
index e01d4ca..e01d4ca 100644
--- a/test/testcases/tests/level1/html/HTMLDocument15.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument15.xml
diff --git a/test/testcases/tests/level1/html/HTMLDocument16.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument16.xml
index 1bb1fa7..1bb1fa7 100644
--- a/test/testcases/tests/level1/html/HTMLDocument16.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument16.xml
diff --git a/test/testcases/tests/level1/html/HTMLDocument17.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument17.xml.kfail
index 6c89504..6c89504 100644
--- a/test/testcases/tests/level1/html/HTMLDocument17.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument17.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLDocument18.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument18.xml.kfail
index 7454a15..7454a15 100644
--- a/test/testcases/tests/level1/html/HTMLDocument18.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument18.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLDocument19.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument19.xml.kfail
index 3fa1a81..3fa1a81 100644
--- a/test/testcases/tests/level1/html/HTMLDocument19.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument19.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLDocument20.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument20.xml.kfail
index 0b03356..0b03356 100644
--- a/test/testcases/tests/level1/html/HTMLDocument20.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument20.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLDocument21.xml.notimpl b/test/testcases/tests/level1/html/HTMLDocument21.xml.kfail
index 4942f45..4942f45 100644
--- a/test/testcases/tests/level1/html/HTMLDocument21.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLDocument21.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLFieldSetElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLFieldSetElement01.xml
index b6c6e98..b6c6e98 100644
--- a/test/testcases/tests/level1/html/HTMLFieldSetElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFieldSetElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLFieldSetElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLFieldSetElement02.xml
index 09d0877..09d0877 100644
--- a/test/testcases/tests/level1/html/HTMLFieldSetElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFieldSetElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLFontElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLFontElement01.xml
index 48f0994..48f0994 100644
--- a/test/testcases/tests/level1/html/HTMLFontElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFontElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLFontElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLFontElement02.xml
index 48e405e..48e405e 100644
--- a/test/testcases/tests/level1/html/HTMLFontElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFontElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLFontElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLFontElement03.xml
index 82ced1a..82ced1a 100644
--- a/test/testcases/tests/level1/html/HTMLFontElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFontElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement01.xml.int-broken b/test/testcases/tests/level1/html/HTMLFormElement01.xml
index 057fac5..057fac5 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement01.xml.int-broken
+++ b/test/testcases/tests/level1/html/HTMLFormElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement02.xml.int-broken b/test/testcases/tests/level1/html/HTMLFormElement02.xml
index 06abf8d..06abf8d 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement02.xml.int-broken
+++ b/test/testcases/tests/level1/html/HTMLFormElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLFrameElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLFrameElement01.xml
index e74ef5e..e74ef5e 100644
--- a/test/testcases/tests/level1/html/HTMLFrameElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFrameElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLFrameElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLFrameElement02.xml
index e6197e7..e6197e7 100644
--- a/test/testcases/tests/level1/html/HTMLFrameElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFrameElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLFrameElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLFrameElement03.xml
index 601ad32..601ad32 100644
--- a/test/testcases/tests/level1/html/HTMLFrameElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFrameElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLFrameElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLFrameElement04.xml
index 85a6b3e..85a6b3e 100644
--- a/test/testcases/tests/level1/html/HTMLFrameElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFrameElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLFrameElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLFrameElement05.xml
index 8df7700..8df7700 100644
--- a/test/testcases/tests/level1/html/HTMLFrameElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFrameElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLFrameElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLFrameElement06.xml
index 43f46e1..43f46e1 100644
--- a/test/testcases/tests/level1/html/HTMLFrameElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFrameElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLFrameElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLFrameElement07.xml
index a7fdea4..a7fdea4 100644
--- a/test/testcases/tests/level1/html/HTMLFrameElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFrameElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLFrameElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLFrameElement08.xml
index 4b2843a..4b2843a 100644
--- a/test/testcases/tests/level1/html/HTMLFrameElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFrameElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLFrameSetElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLFrameSetElement01.xml
index 18e5ff5..18e5ff5 100644
--- a/test/testcases/tests/level1/html/HTMLFrameSetElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFrameSetElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLFrameSetElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLFrameSetElement02.xml
index e598cef..e598cef 100644
--- a/test/testcases/tests/level1/html/HTMLFrameSetElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFrameSetElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLHeadingElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLHeadingElement01.xml
index 3f8b9fa..3f8b9fa 100644
--- a/test/testcases/tests/level1/html/HTMLHeadingElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLHeadingElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLHeadingElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLHeadingElement02.xml
index e74b428..e74b428 100644
--- a/test/testcases/tests/level1/html/HTMLHeadingElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLHeadingElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLHeadingElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLHeadingElement03.xml
index a03702b..a03702b 100644
--- a/test/testcases/tests/level1/html/HTMLHeadingElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLHeadingElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLHeadingElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLHeadingElement04.xml
index 9e16866..9e16866 100644
--- a/test/testcases/tests/level1/html/HTMLHeadingElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLHeadingElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLHeadingElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLHeadingElement05.xml
index e732f74..e732f74 100644
--- a/test/testcases/tests/level1/html/HTMLHeadingElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLHeadingElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLHeadingElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLHeadingElement06.xml
index 3853483..3853483 100644
--- a/test/testcases/tests/level1/html/HTMLHeadingElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLHeadingElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLIFrameElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLIFrameElement01.xml
index 1280955..1280955 100644
--- a/test/testcases/tests/level1/html/HTMLIFrameElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLIFrameElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLIFrameElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLIFrameElement02.xml
index c815c67..c815c67 100644
--- a/test/testcases/tests/level1/html/HTMLIFrameElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLIFrameElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLIFrameElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLIFrameElement03.xml
index 3842aa3..3842aa3 100644
--- a/test/testcases/tests/level1/html/HTMLIFrameElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLIFrameElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLIFrameElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLIFrameElement04.xml
index 65535fd..65535fd 100644
--- a/test/testcases/tests/level1/html/HTMLIFrameElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLIFrameElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLIFrameElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLIFrameElement05.xml
index 5ba9855..5ba9855 100644
--- a/test/testcases/tests/level1/html/HTMLIFrameElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLIFrameElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLIFrameElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLIFrameElement06.xml
index 85654d7..85654d7 100644
--- a/test/testcases/tests/level1/html/HTMLIFrameElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLIFrameElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLIFrameElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLIFrameElement07.xml
index 8143aa5..8143aa5 100644
--- a/test/testcases/tests/level1/html/HTMLIFrameElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLIFrameElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLIFrameElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLIFrameElement08.xml
index 729c1a9..729c1a9 100644
--- a/test/testcases/tests/level1/html/HTMLIFrameElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLIFrameElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLIFrameElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLIFrameElement09.xml
index e9cc84b..e9cc84b 100644
--- a/test/testcases/tests/level1/html/HTMLIFrameElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLIFrameElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLIFrameElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLIFrameElement10.xml
index 7278bb4..7278bb4 100644
--- a/test/testcases/tests/level1/html/HTMLIFrameElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLIFrameElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLImageElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLImageElement01.xml
index ca61559..ca61559 100644
--- a/test/testcases/tests/level1/html/HTMLImageElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLImageElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLImageElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLImageElement02.xml
index f314888..f314888 100644
--- a/test/testcases/tests/level1/html/HTMLImageElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLImageElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLImageElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLImageElement03.xml
index 75716f9..75716f9 100644
--- a/test/testcases/tests/level1/html/HTMLImageElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLImageElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLImageElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLImageElement04.xml
index 80a30b0..80a30b0 100644
--- a/test/testcases/tests/level1/html/HTMLImageElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLImageElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLImageElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLImageElement07.xml
index faca09e..faca09e 100644
--- a/test/testcases/tests/level1/html/HTMLImageElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLImageElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLImageElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLImageElement08.xml
index e7bedbf..e7bedbf 100644
--- a/test/testcases/tests/level1/html/HTMLImageElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLImageElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLImageElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLImageElement09.xml
index 6d0f584..6d0f584 100644
--- a/test/testcases/tests/level1/html/HTMLImageElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLImageElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLImageElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLImageElement10.xml
index 3c13080..3c13080 100644
--- a/test/testcases/tests/level1/html/HTMLImageElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLImageElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLInputElement21.xml.kfail b/test/testcases/tests/level1/html/HTMLInputElement21.xml
index 57fbc76..57fbc76 100644
--- a/test/testcases/tests/level1/html/HTMLInputElement21.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLInputElement21.xml
diff --git a/test/testcases/tests/level1/html/HTMLLIElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLLIElement01.xml
index 2fe59d5..2fe59d5 100644
--- a/test/testcases/tests/level1/html/HTMLLIElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLIElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLLIElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLLIElement02.xml
index a397773..a397773 100644
--- a/test/testcases/tests/level1/html/HTMLLIElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLIElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLLabelElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLLabelElement01.xml
index 2111d6e..2111d6e 100644
--- a/test/testcases/tests/level1/html/HTMLLabelElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLabelElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLLabelElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLLabelElement02.xml
index 444a753..444a753 100644
--- a/test/testcases/tests/level1/html/HTMLLabelElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLabelElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLLabelElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLLabelElement03.xml
index b4daacf..b4daacf 100644
--- a/test/testcases/tests/level1/html/HTMLLabelElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLabelElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLLabelElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLLabelElement04.xml
index ae22b88..ae22b88 100644
--- a/test/testcases/tests/level1/html/HTMLLabelElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLabelElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLLegendElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLLegendElement01.xml
index f478379..f478379 100644
--- a/test/testcases/tests/level1/html/HTMLLegendElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLegendElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLLegendElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLLegendElement02.xml
index 19cf87f..19cf87f 100644
--- a/test/testcases/tests/level1/html/HTMLLegendElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLegendElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLLegendElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLLegendElement03.xml
index a3747fd..a3747fd 100644
--- a/test/testcases/tests/level1/html/HTMLLegendElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLegendElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLLegendElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLLegendElement04.xml
index fa3e76c..fa3e76c 100644
--- a/test/testcases/tests/level1/html/HTMLLegendElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLegendElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLMapElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLMapElement01.xml.kfail
deleted file mode 100644
index 01e2459..0000000
--- a/test/testcases/tests/level1/html/HTMLMapElement01.xml.kfail
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="test-to-html.xsl" type="text/xml"?>
-
-<!--
-
-Copyright (c) 2001 World Wide Web Consortium,
-(Massachusetts Institute of Technology, Institut National de
-Recherche en Informatique et en Automatique, Keio University). All
-Rights Reserved. This program is distributed under the W3C's Software
-Intellectual Property License. This program is distributed in the
-hope that it will be useful, but WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE.
-
-See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-
--->
-<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLMapElement01">
-<metadata>
-<title>HTMLMapElement01</title>
-<creator>NIST</creator>
-<description>
- The areas attribute is a list of areas defined for the image map.
-
- Retrieve the areas attribute and find the number of areas defined.
-</description>
-<contributor>Mary Brady</contributor>
-<date qualifier="created">2002-02-22</date>
-<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-71838730"/>
-</metadata>
-<var name="nodeList" type="NodeList"/>
-<var name="areasnodeList" type="HTMLCollection"/>
-<var name="testNode" type="Node"/>
-<var name="vareas" type="int" />
-<var name="doc" type="Document"/>
-<load var="doc" href="map" willBeModified="false"/>
-<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"map"'/>
-<assertSize collection="nodeList" size="1" id="Asize"/>
-<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
-<areas interface="HTMLMapElement" obj="testNode" var="areasnodeList"/>
-<length interface="HTMLCollection" obj="areasnodeList" var="vareas"/>
-<assertEquals actual="vareas" expected="3" id="areasLink" ignoreCase="false"/>
-</test>
diff --git a/test/testcases/tests/level1/html/HTMLMapElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLMapElement02.xml
index fc83993..fc83993 100644
--- a/test/testcases/tests/level1/html/HTMLMapElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLMapElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLMenuElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLMenuElement01.xml
index 509a114..509a114 100644
--- a/test/testcases/tests/level1/html/HTMLMenuElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLMenuElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLModElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLModElement01.xml
index 616bc36..616bc36 100644
--- a/test/testcases/tests/level1/html/HTMLModElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLModElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLModElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLModElement02.xml
index bcb8c11..bcb8c11 100644
--- a/test/testcases/tests/level1/html/HTMLModElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLModElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLModElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLModElement03.xml
index 82f85b0..82f85b0 100644
--- a/test/testcases/tests/level1/html/HTMLModElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLModElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLModElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLModElement04.xml
index 4220ba5..4220ba5 100644
--- a/test/testcases/tests/level1/html/HTMLModElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLModElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLOListElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLOListElement01.xml
index 7b053bf..7b053bf 100644
--- a/test/testcases/tests/level1/html/HTMLOListElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLOListElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLOListElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLOListElement02.xml
index 85b78d4..85b78d4 100644
--- a/test/testcases/tests/level1/html/HTMLOListElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLOListElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLOListElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLOListElement03.xml
index e6306ec..e6306ec 100644
--- a/test/testcases/tests/level1/html/HTMLOListElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLOListElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement01.xml
index 9b39aaf..9b39aaf 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement02.xml
index 52539a5..52539a5 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement03.xml
index 086f0d9..086f0d9 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement04.xml
index c4091ec..c4091ec 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement05.xml
index 5348c20..5348c20 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement06.xml
index 974fd88..974fd88 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement07.xml
index 8e2c5d2..8e2c5d2 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement08.xml
index f5fd14c..f5fd14c 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement09.xml
index 8c6ca17..8c6ca17 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement10.xml
index b0f0c8b..b0f0c8b 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement12.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement12.xml
index 8ef377d..8ef377d 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement12.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement12.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement13.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement13.xml
index 0e764de..0e764de 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement13.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement13.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement14.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement14.xml
index 0fa56d3..0fa56d3 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement14.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement14.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement15.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement15.xml
index 07d3c97..07d3c97 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement15.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement15.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement17.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement17.xml
index caabb88..caabb88 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement17.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement17.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement18.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement18.xml
index f994859..f994859 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement18.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement18.xml
diff --git a/test/testcases/tests/level1/html/HTMLObjectElement19.xml.kfail b/test/testcases/tests/level1/html/HTMLObjectElement19.xml
index 51d1115..51d1115 100644
--- a/test/testcases/tests/level1/html/HTMLObjectElement19.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLObjectElement19.xml
diff --git a/test/testcases/tests/level1/html/HTMLOptionElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLOptionElement05.xml
index 46812a1..46812a1 100644
--- a/test/testcases/tests/level1/html/HTMLOptionElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLOptionElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLParagraphElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLParagraphElement01.xml
index 0f3fa0e..0f3fa0e 100644
--- a/test/testcases/tests/level1/html/HTMLParagraphElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLParagraphElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLParamElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLParamElement01.xml
index 33f9238..33f9238 100644
--- a/test/testcases/tests/level1/html/HTMLParamElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLParamElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLParamElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLParamElement02.xml
index 52e3b8a..52e3b8a 100644
--- a/test/testcases/tests/level1/html/HTMLParamElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLParamElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLParamElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLParamElement03.xml
index 48b227a..48b227a 100644
--- a/test/testcases/tests/level1/html/HTMLParamElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLParamElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLParamElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLParamElement04.xml
index da298fd..da298fd 100644
--- a/test/testcases/tests/level1/html/HTMLParamElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLParamElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLPreElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLPreElement01.xml
index 9b8d4f2..9b8d4f2 100644
--- a/test/testcases/tests/level1/html/HTMLPreElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLPreElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLQuoteElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLQuoteElement01.xml
index f7aadf7..f7aadf7 100644
--- a/test/testcases/tests/level1/html/HTMLQuoteElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLQuoteElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLQuoteElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLQuoteElement02.xml
index 342b10f..342b10f 100644
--- a/test/testcases/tests/level1/html/HTMLQuoteElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLQuoteElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLScriptElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLScriptElement01.xml
index c4f28dd..c4f28dd 100644
--- a/test/testcases/tests/level1/html/HTMLScriptElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLScriptElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLScriptElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLScriptElement02.xml
index dd3911d..dd3911d 100644
--- a/test/testcases/tests/level1/html/HTMLScriptElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLScriptElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLScriptElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLScriptElement03.xml
index d23ad8a..d23ad8a 100644
--- a/test/testcases/tests/level1/html/HTMLScriptElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLScriptElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLScriptElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLScriptElement04.xml
index da94196..da94196 100644
--- a/test/testcases/tests/level1/html/HTMLScriptElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLScriptElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLScriptElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLScriptElement05.xml
index 2a3ede2..2a3ede2 100644
--- a/test/testcases/tests/level1/html/HTMLScriptElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLScriptElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLScriptElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLScriptElement06.xml
index 4e869fc..4e869fc 100644
--- a/test/testcases/tests/level1/html/HTMLScriptElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLScriptElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLScriptElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLScriptElement07.xml
index d5a0145..d5a0145 100644
--- a/test/testcases/tests/level1/html/HTMLScriptElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLScriptElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLSelectElement05.xml.int-broken b/test/testcases/tests/level1/html/HTMLSelectElement05.xml
index 16c78e1..16c78e1 100644
--- a/test/testcases/tests/level1/html/HTMLSelectElement05.xml.int-broken
+++ b/test/testcases/tests/level1/html/HTMLSelectElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLSelectElement16.xml.kfail b/test/testcases/tests/level1/html/HTMLSelectElement16.xml
index a5e9422..a5e9422 100644
--- a/test/testcases/tests/level1/html/HTMLSelectElement16.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLSelectElement16.xml
diff --git a/test/testcases/tests/level1/html/HTMLSelectElement17.xml.int-broken b/test/testcases/tests/level1/html/HTMLSelectElement17.xml
index 03549ff..03549ff 100644
--- a/test/testcases/tests/level1/html/HTMLSelectElement17.xml.int-broken
+++ b/test/testcases/tests/level1/html/HTMLSelectElement17.xml
diff --git a/test/testcases/tests/level1/html/HTMLSelectElement18.xml.kfail b/test/testcases/tests/level1/html/HTMLSelectElement18.xml
index aff29d9..aff29d9 100644
--- a/test/testcases/tests/level1/html/HTMLSelectElement18.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLSelectElement18.xml
diff --git a/test/testcases/tests/level1/html/HTMLSelectElement19.xml.kfail b/test/testcases/tests/level1/html/HTMLSelectElement19.xml
index 2d2a732..5d06fe1 100644
--- a/test/testcases/tests/level1/html/HTMLSelectElement19.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLSelectElement19.xml
@@ -33,7 +33,7 @@ Add a new option before the selected node using HTMLSelectElement.add.
<var name="selected" type="int"/>
<var name="newOpt" type="Element"/>
<var name="newOptText" type="Text"/>
-<var name="opt" type="Element"/>
+<var name="opt" type="Node"/>
<var name="optText" type="Text"/>
<var name="optValue" type="DOMString"/>
<var name="retNode" type="Node"/>
diff --git a/test/testcases/tests/level1/html/HTMLStyleElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLStyleElement01.xml
index 60c2e57..60c2e57 100644
--- a/test/testcases/tests/level1/html/HTMLStyleElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLStyleElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLStyleElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLStyleElement02.xml
index 727df54..727df54 100644
--- a/test/testcases/tests/level1/html/HTMLStyleElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLStyleElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLStyleElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLStyleElement03.xml
index 54394e3..54394e3 100644
--- a/test/testcases/tests/level1/html/HTMLStyleElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLStyleElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCaptionElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCaptionElement01.xml
index fb2fae7..fb2fae7 100644
--- a/test/testcases/tests/level1/html/HTMLTableCaptionElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCaptionElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement01.xml
index 456d6d4..456d6d4 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement02.xml
index f93075e..f93075e 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement03.xml
index ed23a81..ed23a81 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement04.xml
index 2a6ba39..2a6ba39 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement05.xml
index 97e12ee..97e12ee 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement06.xml
index d642df3..d642df3 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement07.xml
index 9041f28..9041f28 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement08.xml
index 27136ed..27136ed 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement09.xml
index efd65ad..efd65ad 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement10.xml
index 64a2746..64a2746 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement11.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement11.xml
index 0c7c2b3..0c7c2b3 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement11.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement11.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement12.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement12.xml
index 17ff175..17ff175 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement12.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement12.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement13.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement13.xml
index 74beef5..74beef5 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement13.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement13.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement14.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement14.xml
index c703661..c703661 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement14.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement14.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement15.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement15.xml
index b476253..b476253 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement15.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement15.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement16.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement16.xml
index f5a7408..f5a7408 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement16.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement16.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement17.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement17.xml
index f10d801..f10d801 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement17.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement17.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement18.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement18.xml
index 0ed53d0..0ed53d0 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement18.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement18.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement19.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement19.xml
index a4ab68d..a4ab68d 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement19.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement19.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement20.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement20.xml
index a5fa5ae..a5fa5ae 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement20.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement20.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement21.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement21.xml
index 19bb5fe..19bb5fe 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement21.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement21.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement22.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement22.xml
index 98e11c4..98e11c4 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement22.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement22.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement23.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement23.xml
index b276fbc..b276fbc 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement23.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement23.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement24.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement24.xml
index 3679bee..3679bee 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement24.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement24.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement25.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement25.xml
index bc74f39..bc74f39 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement25.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement25.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement26.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement26.xml
index 5cf82e8..5cf82e8 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement26.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement26.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement27.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement27.xml
index dceae74..dceae74 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement27.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement27.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement28.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement28.xml
index 1594528..1594528 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement28.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement28.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement29.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement29.xml
index 571458b..571458b 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement29.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement29.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableCellElement30.xml.kfail b/test/testcases/tests/level1/html/HTMLTableCellElement30.xml
index 332c038..332c038 100644
--- a/test/testcases/tests/level1/html/HTMLTableCellElement30.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableCellElement30.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement01.xml
index ae5fea0..ae5fea0 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement02.xml
index 2d30433..2d30433 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement03.xml
index 6710753..6710753 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement04.xml
index db0ebd0..db0ebd0 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement05.xml
index ebd56a9..ebd56a9 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement06.xml
index 285f794..285f794 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement07.xml
index 7a70e40..7a70e40 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement08.xml
index 491ea88..491ea88 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement09.xml
index 0e3314b..0e3314b 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement10.xml
index 7be9c98..7be9c98 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement11.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement11.xml
index 636a0ae..636a0ae 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement11.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement11.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableColElement12.xml.kfail b/test/testcases/tests/level1/html/HTMLTableColElement12.xml
index bc39b9a..bc39b9a 100644
--- a/test/testcases/tests/level1/html/HTMLTableColElement12.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableColElement12.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement01.xml
index 7135fd7..7135fd7 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement02.xml
index fb9fa8f..fb9fa8f 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement03.xml
index 0b59fe6..0b59fe6 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement04.xml
index 1e254b3..1e254b3 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement05.xml
index 15de11c..15de11c 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement06.xml
index e18b8f8..e18b8f8 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement07.xml
index 44be1c3..44be1c3 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement08.xml
index 1a744b1..1a744b1 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement09.xml
index a0aecf3..a0aecf3 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement10.xml
index 160afeb..160afeb 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement11.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement11.xml
index 785c4d0..785c4d0 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement11.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement11.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement12.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement12.xml
index 811a147..811a147 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement12.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement12.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement13.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement13.xml
index 4a18d8d..4a18d8d 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement13.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement13.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement14.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement14.xml
index 478e9c9..478e9c9 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement14.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement14.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement15.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement15.xml
index 51f9763..51f9763 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement15.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement15.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement16.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement16.xml
index 7166437..7166437 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement16.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement16.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement17.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement17.xml
index 9337c09..9337c09 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement17.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement17.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement18.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement18.xml
index 210e2b1..210e2b1 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement18.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement18.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement19.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement19.xml
index 152174d..152174d 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement19.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement19.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement20.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement20.xml
index 032725b..032725b 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement20.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement20.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement21.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement21.xml
index 3903b69..b50a007 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement21.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement21.xml
@@ -35,8 +35,8 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<var name="nodeList" type="NodeList"/>
<var name="rowsnodeList" type="HTMLCollection"/>
<var name="testNode" type="Node"/>
-<var name="vsection1" type="HTMLTableElement" />
-<var name="vsection2" type="HTMLTableElement" />
+<var name="vsection1" type="HTMLTableSectionElement" />
+<var name="vsection2" type="HTMLTableSectionElement" />
<var name="vrows" type="int"/>
<var name="doc" type="Document"/>
<var name="result" type="List"/>
diff --git a/test/testcases/tests/level1/html/HTMLTableElement22.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement22.xml
index 6649b0f..6649b0f 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement22.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement22.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement23.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement23.xml
index 1f53f03..1f53f03 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement23.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement23.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement24.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement24.xml
index d6f993c..58af66e 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement24.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement24.xml
@@ -35,8 +35,8 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<var name="nodeList" type="NodeList"/>
<var name="rowsnodeList" type="HTMLCollection"/>
<var name="testNode" type="Node"/>
-<var name="vsection1" type="HTMLTableElement" />
-<var name="vsection2" type="HTMLTableElement" />
+<var name="vsection1" type="HTMLTableSectionElement" />
+<var name="vsection2" type="HTMLTableSectionElement" />
<var name="vrows" type="int"/>
<var name="doc" type="Document"/>
<var name="result" type="List"/>
diff --git a/test/testcases/tests/level1/html/HTMLTableElement25.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement25.xml
index a28ae65..a28ae65 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement25.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement25.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement26.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement26.xml
index 5517f2f..5517f2f 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement26.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement26.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement27.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement27.xml
index c387d69..c387d69 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement27.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement27.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement28.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement28.xml
index 95f300c..95f300c 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement28.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement28.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement29.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement29.xml
index ba62848..ba62848 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement29.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement29.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement30.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement30.xml
index e45cf68..e45cf68 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement30.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement30.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement31.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement31.xml
index e5eb32d..e5eb32d 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement31.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement31.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement32.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement32.xml
index a6529b0..a6529b0 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement32.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement32.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement33.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement33.xml
index 1ae507a..1ae507a 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement33.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement33.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement01.xml
index 0dbd008..0dbd008 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement02.xml
index 284bc84..284bc84 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement03.xml
index 341c2a5..341c2a5 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement04.xml
index bca05d4..bca05d4 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement05.xml
index 638126b..638126b 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement06.xml
index 55fc2ac..55fc2ac 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement07.xml
index c586f6a..c586f6a 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement08.xml
index 751ef9e..751ef9e 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement09.xml
index eda033b..eda033b 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement10.xml
index 3554fb6..3554fb6 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement11.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement11.xml
index f284090..f284090 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement11.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement11.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement12.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement12.xml
index 121954c..121954c 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement12.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement12.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement13.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement13.xml
index a90f596..a90f596 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement13.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement13.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement14.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement14.xml
index 27af8e2..27af8e2 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement14.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement14.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement01.xml
index 238dcb2..238dcb2 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement02.xml
index c4bdbf9..c4bdbf9 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement03.xml
index 2236435..2236435 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement04.xml
index 2060f35..2060f35 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement05.xml
index 32022bb..32022bb 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement06.xml
index be665e4..be665e4 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement07.xml
index ecf38f3..ecf38f3 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement08.xml
index 48440ca..48440ca 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement09.xml
index 501446b..501446b 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement10.xml
index 3e011c1..3e011c1 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement11.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement11.xml
index ba5ae68..ba5ae68 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement11.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement11.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement12.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement12.xml
index e649489..e649489 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement12.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement12.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement13.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement13.xml
index 1110c65..1110c65 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement13.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement13.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement14.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement14.xml
index 83c90c0..83c90c0 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement14.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement14.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement15.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement15.xml
index 6c8f0dd..6c8f0dd 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement15.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement15.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement16.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement16.xml
index 567d86b..567d86b 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement16.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement16.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement17.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement17.xml
index 4a3e283..4a3e283 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement17.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement17.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement18.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement18.xml
index e8073be..e8073be 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement18.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement18.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement19.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement19.xml
index f8d7933..f8d7933 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement19.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement19.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement20.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement20.xml
index 99452e7..99452e7 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement20.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement20.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement21.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement21.xml
index 05d7ef8..05d7ef8 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement21.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement21.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement22.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement22.xml
index 5d8bef4..5d8bef4 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement22.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement22.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement23.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement23.xml
index eb3f972..eb3f972 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement23.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement23.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableSectionElement24.xml.kfail b/test/testcases/tests/level1/html/HTMLTableSectionElement24.xml
index 39896e1..39896e1 100644
--- a/test/testcases/tests/level1/html/HTMLTableSectionElement24.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableSectionElement24.xml
diff --git a/test/testcases/tests/level1/html/HTMLUListElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLUListElement01.xml
index 75695aa..75695aa 100644
--- a/test/testcases/tests/level1/html/HTMLUListElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLUListElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLUListElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLUListElement02.xml
index e525d5b..e525d5b 100644
--- a/test/testcases/tests/level1/html/HTMLUListElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLUListElement02.xml
diff --git a/test/testcases/tests/level1/html/anchor01.xml.notimpl b/test/testcases/tests/level1/html/anchor01.xml
index 19a2711..19a2711 100644
--- a/test/testcases/tests/level1/html/anchor01.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor01.xml
diff --git a/test/testcases/tests/level1/html/anchor02.xml.notimpl b/test/testcases/tests/level1/html/anchor02.xml
index 61486a7..61486a7 100644
--- a/test/testcases/tests/level1/html/anchor02.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor02.xml
diff --git a/test/testcases/tests/level1/html/anchor03.xml.notimpl b/test/testcases/tests/level1/html/anchor03.xml
index e6bd32e..e6bd32e 100644
--- a/test/testcases/tests/level1/html/anchor03.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor03.xml
diff --git a/test/testcases/tests/level1/html/anchor04.xml.notimpl b/test/testcases/tests/level1/html/anchor04.xml.kfail
index b5ce201..b5ce201 100644
--- a/test/testcases/tests/level1/html/anchor04.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor04.xml.kfail
diff --git a/test/testcases/tests/level1/html/anchor05.xml.notimpl b/test/testcases/tests/level1/html/anchor05.xml
index 27b34ac..27b34ac 100644
--- a/test/testcases/tests/level1/html/anchor05.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor05.xml
diff --git a/test/testcases/tests/level1/html/anchor06.xml.notimpl b/test/testcases/tests/level1/html/anchor06.xml
index 31190be..31190be 100644
--- a/test/testcases/tests/level1/html/anchor06.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor06.xml
diff --git a/test/testcases/tests/level1/html/area01.xml.notimpl b/test/testcases/tests/level1/html/area01.xml
index 34ebdb2..34ebdb2 100644
--- a/test/testcases/tests/level1/html/area01.xml.notimpl
+++ b/test/testcases/tests/level1/html/area01.xml
diff --git a/test/testcases/tests/level1/html/area02.xml.notimpl b/test/testcases/tests/level1/html/area02.xml
index 8f85598..8f85598 100644
--- a/test/testcases/tests/level1/html/area02.xml.notimpl
+++ b/test/testcases/tests/level1/html/area02.xml
diff --git a/test/testcases/tests/level1/html/area03.xml.notimpl b/test/testcases/tests/level1/html/area03.xml
index 577e711..577e711 100644
--- a/test/testcases/tests/level1/html/area03.xml.notimpl
+++ b/test/testcases/tests/level1/html/area03.xml
diff --git a/test/testcases/tests/level1/html/area04.xml.notimpl b/test/testcases/tests/level1/html/area04.xml
index f964a57..f964a57 100644
--- a/test/testcases/tests/level1/html/area04.xml.notimpl
+++ b/test/testcases/tests/level1/html/area04.xml
diff --git a/test/testcases/tests/level1/html/basefont01.xml.notimpl b/test/testcases/tests/level1/html/basefont01.xml
index eadfca4..eadfca4 100644
--- a/test/testcases/tests/level1/html/basefont01.xml.notimpl
+++ b/test/testcases/tests/level1/html/basefont01.xml
diff --git a/test/testcases/tests/level1/html/body01.xml.notimpl b/test/testcases/tests/level1/html/body01.xml
index 3ab179d..3ab179d 100644
--- a/test/testcases/tests/level1/html/body01.xml.notimpl
+++ b/test/testcases/tests/level1/html/body01.xml
diff --git a/test/testcases/tests/level1/html/button01.xml.notimpl b/test/testcases/tests/level1/html/button01.xml
index f128ea8..f128ea8 100644
--- a/test/testcases/tests/level1/html/button01.xml.notimpl
+++ b/test/testcases/tests/level1/html/button01.xml
diff --git a/test/testcases/tests/level1/html/button02.xml.notimpl b/test/testcases/tests/level1/html/button02.xml
index bd072ef..bd072ef 100644
--- a/test/testcases/tests/level1/html/button02.xml.notimpl
+++ b/test/testcases/tests/level1/html/button02.xml
diff --git a/test/testcases/tests/level1/html/button03.xml.notimpl b/test/testcases/tests/level1/html/button03.xml
index 4074059..4074059 100644
--- a/test/testcases/tests/level1/html/button03.xml.notimpl
+++ b/test/testcases/tests/level1/html/button03.xml
diff --git a/test/testcases/tests/level1/html/button04.xml.notimpl b/test/testcases/tests/level1/html/button04.xml
index 737ddaa..737ddaa 100644
--- a/test/testcases/tests/level1/html/button04.xml.notimpl
+++ b/test/testcases/tests/level1/html/button04.xml
diff --git a/test/testcases/tests/level1/html/button05.xml.notimpl b/test/testcases/tests/level1/html/button05.xml
index ecff6b5..ecff6b5 100644
--- a/test/testcases/tests/level1/html/button05.xml.notimpl
+++ b/test/testcases/tests/level1/html/button05.xml
diff --git a/test/testcases/tests/level1/html/button06.xml.notimpl b/test/testcases/tests/level1/html/button06.xml
index 7a5e558..7a5e558 100644
--- a/test/testcases/tests/level1/html/button06.xml.notimpl
+++ b/test/testcases/tests/level1/html/button06.xml
diff --git a/test/testcases/tests/level1/html/button07.xml.notimpl b/test/testcases/tests/level1/html/button07.xml
index daddf76..daddf76 100644
--- a/test/testcases/tests/level1/html/button07.xml.notimpl
+++ b/test/testcases/tests/level1/html/button07.xml
diff --git a/test/testcases/tests/level1/html/button08.xml.notimpl b/test/testcases/tests/level1/html/button08.xml
index a4dbb0b..a4dbb0b 100644
--- a/test/testcases/tests/level1/html/button08.xml.notimpl
+++ b/test/testcases/tests/level1/html/button08.xml
diff --git a/test/testcases/tests/level1/html/button09.xml.notimpl b/test/testcases/tests/level1/html/button09.xml
index d0efa94..d0efa94 100644
--- a/test/testcases/tests/level1/html/button09.xml.notimpl
+++ b/test/testcases/tests/level1/html/button09.xml
diff --git a/test/testcases/tests/level1/html/dlist01.xml.notimpl b/test/testcases/tests/level1/html/dlist01.xml
index 35cbe2c..35cbe2c 100644
--- a/test/testcases/tests/level1/html/dlist01.xml.notimpl
+++ b/test/testcases/tests/level1/html/dlist01.xml
diff --git a/test/testcases/tests/level1/html/doc01.xml.notimpl b/test/testcases/tests/level1/html/doc01.xml
index cb0c897..cb0c897 100644
--- a/test/testcases/tests/level1/html/doc01.xml.notimpl
+++ b/test/testcases/tests/level1/html/doc01.xml
diff --git a/test/testcases/tests/level1/html/files/object.html b/test/testcases/tests/level1/html/files/object.html
index 7960549..c7fbab1 100644
--- a/test/testcases/tests/level1/html/files/object.html
+++ b/test/testcases/tests/level1/html/files/object.html
@@ -6,7 +6,7 @@
</HEAD>
<BODY onload="parent.loadComplete()">
<P>
-<OBJECT ALIGN="middle" ARCHIVE="" BORDER="0" CODEBASE="http://www.w3.org/DOM/" DATA="./pix/logo.gif" HEIGHT="60" HSPACE="0" STANDBY="Loading Image ..." TABINDEX="0" TYPE="image/gif" USEMAP="#DivLogo-map" VSPACE="0" WIDTH="550"></OBJECT>
+<OBJECT ALIGN="middle" ARCHIVE="" BORDER="0" CODEBASE="http://xw2k.sdct.itl.nist.gov/brady/dom/" DATA="./pix/logo.gif" HEIGHT="60" HSPACE="0" STANDBY="Loading Image ..." TABINDEX="0" TYPE="image/gif" USEMAP="#DivLogo-map" VSPACE="0" WIDTH="550"></OBJECT>
</P>
<FORM NAME="OBJECT2" ACTION="./files/getData.pl" METHOD="post">
<P>
diff --git a/test/testcases/tests/level1/html/files/object.xhtml b/test/testcases/tests/level1/html/files/object.xhtml
index 3399588..824f7fc 100644
--- a/test/testcases/tests/level1/html/files/object.xhtml
+++ b/test/testcases/tests/level1/html/files/object.xhtml
@@ -8,7 +8,7 @@
</head>
<body onload="parent.loadComplete()">
<p>
-<object align="middle" archive="" border="0" codebase="http://www.w3.org/DOM/" data="./pix/logo.gif" height="60" hspace="0" standby="Loading Image ..." tabindex="0" type="image/gif" usemap="#DivLogo-map" vspace="0" width="550"></object>
+<object align="middle" archive="" border="0" codebase="http://xw2k.sdct.itl.nist.gov/brady/dom/" data="./pix/logo.gif" height="60" hspace="0" standby="Loading Image ..." tabindex="0" type="image/gif" usemap="#DivLogo-map" vspace="0" width="550"></object>
</p>
<form name="OBJECT2" action="./files/getData.pl" method="post">
<p>
diff --git a/test/testcases/tests/level1/html/object01.xml.kfail b/test/testcases/tests/level1/html/object01.xml
index 52e053c..52e053c 100644
--- a/test/testcases/tests/level1/html/object01.xml.kfail
+++ b/test/testcases/tests/level1/html/object01.xml
diff --git a/test/testcases/tests/level1/html/object02.xml.kfail b/test/testcases/tests/level1/html/object02.xml
index fc3c215..fc3c215 100644
--- a/test/testcases/tests/level1/html/object02.xml.kfail
+++ b/test/testcases/tests/level1/html/object02.xml
diff --git a/test/testcases/tests/level1/html/object03.xml.kfail b/test/testcases/tests/level1/html/object03.xml
index e2591ad..e2591ad 100644
--- a/test/testcases/tests/level1/html/object03.xml.kfail
+++ b/test/testcases/tests/level1/html/object03.xml
diff --git a/test/testcases/tests/level1/html/object04.xml.kfail b/test/testcases/tests/level1/html/object04.xml
index 33a99a5..33a99a5 100644
--- a/test/testcases/tests/level1/html/object04.xml.kfail
+++ b/test/testcases/tests/level1/html/object04.xml
diff --git a/test/testcases/tests/level1/html/object05.xml.kfail b/test/testcases/tests/level1/html/object05.xml
index 93e2967..93e2967 100644
--- a/test/testcases/tests/level1/html/object05.xml.kfail
+++ b/test/testcases/tests/level1/html/object05.xml
diff --git a/test/testcases/tests/level1/html/object06.xml.kfail b/test/testcases/tests/level1/html/object06.xml
index 6f9e613..6f9e613 100644
--- a/test/testcases/tests/level1/html/object06.xml.kfail
+++ b/test/testcases/tests/level1/html/object06.xml
diff --git a/test/testcases/tests/level1/html/object07.xml.kfail b/test/testcases/tests/level1/html/object07.xml
index aff1fcc..aff1fcc 100644
--- a/test/testcases/tests/level1/html/object07.xml.kfail
+++ b/test/testcases/tests/level1/html/object07.xml
diff --git a/test/testcases/tests/level1/html/object09.xml.kfail b/test/testcases/tests/level1/html/object09.xml
index 4b9d336..4b9d336 100644
--- a/test/testcases/tests/level1/html/object09.xml.kfail
+++ b/test/testcases/tests/level1/html/object09.xml
diff --git a/test/testcases/tests/level1/html/object10.xml.kfail b/test/testcases/tests/level1/html/object10.xml
index 7dd5741..7dd5741 100644
--- a/test/testcases/tests/level1/html/object10.xml.kfail
+++ b/test/testcases/tests/level1/html/object10.xml
diff --git a/test/testcases/tests/level1/html/object11.xml.kfail b/test/testcases/tests/level1/html/object11.xml
index 332ca50..332ca50 100644
--- a/test/testcases/tests/level1/html/object11.xml.kfail
+++ b/test/testcases/tests/level1/html/object11.xml
diff --git a/test/testcases/tests/level1/html/object12.xml.kfail b/test/testcases/tests/level1/html/object12.xml
index 4af4455..4af4455 100644
--- a/test/testcases/tests/level1/html/object12.xml.kfail
+++ b/test/testcases/tests/level1/html/object12.xml
diff --git a/test/testcases/tests/level1/html/object14.xml.kfail b/test/testcases/tests/level1/html/object14.xml
index 0a8fce5..0a8fce5 100644
--- a/test/testcases/tests/level1/html/object14.xml.kfail
+++ b/test/testcases/tests/level1/html/object14.xml
diff --git a/test/testcases/tests/level1/html/object15.xml.kfail b/test/testcases/tests/level1/html/object15.xml
index 37182c0..37182c0 100644
--- a/test/testcases/tests/level1/html/object15.xml.kfail
+++ b/test/testcases/tests/level1/html/object15.xml
diff --git a/test/testcases/tests/level1/html/table01.xml.kfail b/test/testcases/tests/level1/html/table01.xml
index 4cee6f7..4cee6f7 100644
--- a/test/testcases/tests/level1/html/table01.xml.kfail
+++ b/test/testcases/tests/level1/html/table01.xml
diff --git a/test/testcases/tests/level1/html/table02.xml.kfail b/test/testcases/tests/level1/html/table02.xml
index 2433751..2433751 100644
--- a/test/testcases/tests/level1/html/table02.xml.kfail
+++ b/test/testcases/tests/level1/html/table02.xml
diff --git a/test/testcases/tests/level1/html/table03.xml.kfail b/test/testcases/tests/level1/html/table03.xml
index b8c3ef6..b8c3ef6 100644
--- a/test/testcases/tests/level1/html/table03.xml.kfail
+++ b/test/testcases/tests/level1/html/table03.xml
diff --git a/test/testcases/tests/level1/html/table04.xml.kfail b/test/testcases/tests/level1/html/table04.xml
index 2d4fcf8..2d4fcf8 100644
--- a/test/testcases/tests/level1/html/table04.xml.kfail
+++ b/test/testcases/tests/level1/html/table04.xml
diff --git a/test/testcases/tests/level1/html/table06.xml.kfail b/test/testcases/tests/level1/html/table06.xml
index 3d461f6..3d461f6 100644
--- a/test/testcases/tests/level1/html/table06.xml.kfail
+++ b/test/testcases/tests/level1/html/table06.xml
diff --git a/test/testcases/tests/level1/html/table07.xml.kfail b/test/testcases/tests/level1/html/table07.xml
index 4a04d77..4a04d77 100644
--- a/test/testcases/tests/level1/html/table07.xml.kfail
+++ b/test/testcases/tests/level1/html/table07.xml
diff --git a/test/testcases/tests/level1/html/table08.xml.kfail b/test/testcases/tests/level1/html/table08.xml
index ea77b80..ea77b80 100644
--- a/test/testcases/tests/level1/html/table08.xml.kfail
+++ b/test/testcases/tests/level1/html/table08.xml
diff --git a/test/testcases/tests/level1/html/table09.xml.kfail b/test/testcases/tests/level1/html/table09.xml
index fcb9018..fcb9018 100644
--- a/test/testcases/tests/level1/html/table09.xml.kfail
+++ b/test/testcases/tests/level1/html/table09.xml
diff --git a/test/testcases/tests/level1/html/table10.xml.kfail b/test/testcases/tests/level1/html/table10.xml
index aa05594..aa05594 100644
--- a/test/testcases/tests/level1/html/table10.xml.kfail
+++ b/test/testcases/tests/level1/html/table10.xml
diff --git a/test/testcases/tests/level1/html/table12.xml.kfail b/test/testcases/tests/level1/html/table12.xml
index 93e475b..93e475b 100644
--- a/test/testcases/tests/level1/html/table12.xml.kfail
+++ b/test/testcases/tests/level1/html/table12.xml
diff --git a/test/testcases/tests/level1/html/table15.xml.kfail b/test/testcases/tests/level1/html/table15.xml
index 89455c3..89455c3 100644
--- a/test/testcases/tests/level1/html/table15.xml.kfail
+++ b/test/testcases/tests/level1/html/table15.xml
diff --git a/test/testcases/tests/level1/html/table17.xml.kfail b/test/testcases/tests/level1/html/table17.xml
index 7223562..7223562 100644
--- a/test/testcases/tests/level1/html/table17.xml.kfail
+++ b/test/testcases/tests/level1/html/table17.xml
diff --git a/test/testcases/tests/level1/html/table18.xml.kfail b/test/testcases/tests/level1/html/table18.xml
index db8c161..db8c161 100644
--- a/test/testcases/tests/level1/html/table18.xml.kfail
+++ b/test/testcases/tests/level1/html/table18.xml
diff --git a/test/testcases/tests/level1/html/table19.xml.kfail b/test/testcases/tests/level1/html/table19.xml
index e88be88..e88be88 100644
--- a/test/testcases/tests/level1/html/table19.xml.kfail
+++ b/test/testcases/tests/level1/html/table19.xml
diff --git a/test/testcases/tests/level1/html/table20.xml.kfail b/test/testcases/tests/level1/html/table20.xml
index 2205987..2205987 100644
--- a/test/testcases/tests/level1/html/table20.xml.kfail
+++ b/test/testcases/tests/level1/html/table20.xml
diff --git a/test/testcases/tests/level1/html/table21.xml.kfail b/test/testcases/tests/level1/html/table21.xml
index fa22103..fa22103 100644
--- a/test/testcases/tests/level1/html/table21.xml.kfail
+++ b/test/testcases/tests/level1/html/table21.xml
diff --git a/test/testcases/tests/level1/html/table22.xml.kfail b/test/testcases/tests/level1/html/table22.xml
index 7c097b4..7c097b4 100644
--- a/test/testcases/tests/level1/html/table22.xml.kfail
+++ b/test/testcases/tests/level1/html/table22.xml
diff --git a/test/testcases/tests/level1/html/table23.xml.kfail b/test/testcases/tests/level1/html/table23.xml
index 4ea8ace..4ea8ace 100644
--- a/test/testcases/tests/level1/html/table23.xml.kfail
+++ b/test/testcases/tests/level1/html/table23.xml
diff --git a/test/testcases/tests/level1/html/table24.xml.kfail b/test/testcases/tests/level1/html/table24.xml
index 7606917..7606917 100644
--- a/test/testcases/tests/level1/html/table24.xml.kfail
+++ b/test/testcases/tests/level1/html/table24.xml
diff --git a/test/testcases/tests/level1/html/table25.xml.kfail b/test/testcases/tests/level1/html/table25.xml
index b8e10dd..b8e10dd 100644
--- a/test/testcases/tests/level1/html/table25.xml.kfail
+++ b/test/testcases/tests/level1/html/table25.xml
diff --git a/test/testcases/tests/level1/html/table26.xml.kfail b/test/testcases/tests/level1/html/table26.xml
index 9f09d4f..9f09d4f 100644
--- a/test/testcases/tests/level1/html/table26.xml.kfail
+++ b/test/testcases/tests/level1/html/table26.xml
diff --git a/test/testcases/tests/level1/html/table27.xml.kfail b/test/testcases/tests/level1/html/table27.xml
index e0dc78d..e0dc78d 100644
--- a/test/testcases/tests/level1/html/table27.xml.kfail
+++ b/test/testcases/tests/level1/html/table27.xml
diff --git a/test/testcases/tests/level1/html/table28.xml.kfail b/test/testcases/tests/level1/html/table28.xml
index d445a1c..d445a1c 100644
--- a/test/testcases/tests/level1/html/table28.xml.kfail
+++ b/test/testcases/tests/level1/html/table28.xml
diff --git a/test/testcases/tests/level1/html/table29.xml.kfail b/test/testcases/tests/level1/html/table29.xml
index ae483d4..ae483d4 100644
--- a/test/testcases/tests/level1/html/table29.xml.kfail
+++ b/test/testcases/tests/level1/html/table29.xml
diff --git a/test/testcases/tests/level1/html/table30.xml.kfail b/test/testcases/tests/level1/html/table30.xml
index 837be29..837be29 100644
--- a/test/testcases/tests/level1/html/table30.xml.kfail
+++ b/test/testcases/tests/level1/html/table30.xml
diff --git a/test/testcases/tests/level1/html/table31.xml.kfail b/test/testcases/tests/level1/html/table31.xml
index f5c3fa6..f5c3fa6 100644
--- a/test/testcases/tests/level1/html/table31.xml.kfail
+++ b/test/testcases/tests/level1/html/table31.xml
diff --git a/test/testcases/tests/level1/html/table32.xml.kfail b/test/testcases/tests/level1/html/table32.xml
index cf7e0cd..cf7e0cd 100644
--- a/test/testcases/tests/level1/html/table32.xml.kfail
+++ b/test/testcases/tests/level1/html/table32.xml
diff --git a/test/testcases/tests/level1/html/table33.xml.kfail b/test/testcases/tests/level1/html/table33.xml
index 5c0e447..5c0e447 100644
--- a/test/testcases/tests/level1/html/table33.xml.kfail
+++ b/test/testcases/tests/level1/html/table33.xml
diff --git a/test/testcases/tests/level1/html/table34.xml.kfail b/test/testcases/tests/level1/html/table34.xml
index 07443ef..07443ef 100644
--- a/test/testcases/tests/level1/html/table34.xml.kfail
+++ b/test/testcases/tests/level1/html/table34.xml
diff --git a/test/testcases/tests/level1/html/table35.xml.kfail b/test/testcases/tests/level1/html/table35.xml
index 32cce60..32cce60 100644
--- a/test/testcases/tests/level1/html/table35.xml.kfail
+++ b/test/testcases/tests/level1/html/table35.xml
diff --git a/test/testcases/tests/level1/html/table36.xml.kfail b/test/testcases/tests/level1/html/table36.xml
index 2bdded8..2bdded8 100644
--- a/test/testcases/tests/level1/html/table36.xml.kfail
+++ b/test/testcases/tests/level1/html/table36.xml
diff --git a/test/testcases/tests/level1/html/table37.xml.kfail b/test/testcases/tests/level1/html/table37.xml
index cdf5b73..cdf5b73 100644
--- a/test/testcases/tests/level1/html/table37.xml.kfail
+++ b/test/testcases/tests/level1/html/table37.xml
diff --git a/test/testcases/tests/level1/html/table38.xml.kfail b/test/testcases/tests/level1/html/table38.xml
index fad8dfe..fad8dfe 100644
--- a/test/testcases/tests/level1/html/table38.xml.kfail
+++ b/test/testcases/tests/level1/html/table38.xml
diff --git a/test/testcases/tests/level1/html/table39.xml.kfail b/test/testcases/tests/level1/html/table39.xml
index 1fd66db..1fd66db 100644
--- a/test/testcases/tests/level1/html/table39.xml.kfail
+++ b/test/testcases/tests/level1/html/table39.xml
diff --git a/test/testcases/tests/level1/html/table40.xml.kfail b/test/testcases/tests/level1/html/table40.xml
index 31a9763..31a9763 100644
--- a/test/testcases/tests/level1/html/table40.xml.kfail
+++ b/test/testcases/tests/level1/html/table40.xml
diff --git a/test/testcases/tests/level1/html/table41.xml.kfail b/test/testcases/tests/level1/html/table41.xml
index 4030b09..4030b09 100644
--- a/test/testcases/tests/level1/html/table41.xml.kfail
+++ b/test/testcases/tests/level1/html/table41.xml
diff --git a/test/testcases/tests/level1/html/table42.xml.kfail b/test/testcases/tests/level1/html/table42.xml
index 8fa86f1..8fa86f1 100644
--- a/test/testcases/tests/level1/html/table42.xml.kfail
+++ b/test/testcases/tests/level1/html/table42.xml
diff --git a/test/testcases/tests/level1/html/table43.xml.kfail b/test/testcases/tests/level1/html/table43.xml
index ea9e5de..ea9e5de 100644
--- a/test/testcases/tests/level1/html/table43.xml.kfail
+++ b/test/testcases/tests/level1/html/table43.xml
diff --git a/test/testcases/tests/level1/html/table44.xml.kfail b/test/testcases/tests/level1/html/table44.xml
index a893f76..a893f76 100644
--- a/test/testcases/tests/level1/html/table44.xml.kfail
+++ b/test/testcases/tests/level1/html/table44.xml
diff --git a/test/testcases/tests/level1/html/table45.xml.kfail b/test/testcases/tests/level1/html/table45.xml
index b1717db..b1717db 100644
--- a/test/testcases/tests/level1/html/table45.xml.kfail
+++ b/test/testcases/tests/level1/html/table45.xml
diff --git a/test/testcases/tests/level1/html/table46.xml.kfail b/test/testcases/tests/level1/html/table46.xml
index 096b892..096b892 100644
--- a/test/testcases/tests/level1/html/table46.xml.kfail
+++ b/test/testcases/tests/level1/html/table46.xml
diff --git a/test/testcases/tests/level1/html/table47.xml.kfail b/test/testcases/tests/level1/html/table47.xml
index 4d8340b..4d8340b 100644
--- a/test/testcases/tests/level1/html/table47.xml.kfail
+++ b/test/testcases/tests/level1/html/table47.xml
diff --git a/test/testcases/tests/level1/html/table48.xml.kfail b/test/testcases/tests/level1/html/table48.xml
index 1910883..1910883 100644
--- a/test/testcases/tests/level1/html/table48.xml.kfail
+++ b/test/testcases/tests/level1/html/table48.xml
diff --git a/test/testcases/tests/level1/html/table49.xml.kfail b/test/testcases/tests/level1/html/table49.xml
index 1db690b..1db690b 100644
--- a/test/testcases/tests/level1/html/table49.xml.kfail
+++ b/test/testcases/tests/level1/html/table49.xml
diff --git a/test/testcases/tests/level1/html/table50.xml.kfail b/test/testcases/tests/level1/html/table50.xml
index 8f60638..8f60638 100644
--- a/test/testcases/tests/level1/html/table50.xml.kfail
+++ b/test/testcases/tests/level1/html/table50.xml
diff --git a/test/testcases/tests/level1/html/table51.xml.kfail b/test/testcases/tests/level1/html/table51.xml
index c917f27..c917f27 100644
--- a/test/testcases/tests/level1/html/table51.xml.kfail
+++ b/test/testcases/tests/level1/html/table51.xml
diff --git a/test/testcases/tests/level1/html/table52.xml.kfail b/test/testcases/tests/level1/html/table52.xml
index bf94572..bf94572 100644
--- a/test/testcases/tests/level1/html/table52.xml.kfail
+++ b/test/testcases/tests/level1/html/table52.xml
diff --git a/test/testcases/tests/level1/html/table53.xml.kfail b/test/testcases/tests/level1/html/table53.xml
index 210c7e1..210c7e1 100644
--- a/test/testcases/tests/level1/html/table53.xml.kfail
+++ b/test/testcases/tests/level1/html/table53.xml
diff --git a/test/testcases/tests/level2/html/.HTMLImageElement05.xml.swp b/test/testcases/tests/level2/html/.HTMLImageElement05.xml.swp
new file mode 100644
index 0000000..6847879
--- /dev/null
+++ b/test/testcases/tests/level2/html/.HTMLImageElement05.xml.swp
Binary files differ
diff --git a/test/testcases/tests/level2/html/HTMLBaseFontElement03.xml b/test/testcases/tests/level2/html/HTMLBaseFontElement03.xml
index b743fb0..3709832 100644
--- a/test/testcases/tests/level2/html/HTMLBaseFontElement03.xml
+++ b/test/testcases/tests/level2/html/HTMLBaseFontElement03.xml
@@ -31,7 +31,7 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<var name="nodeList" type="NodeList"/>
<var name="testNode" type="Node"/>
<var name="vsize" type="int"/>
-<var name="doc" type="Node"/>
+<var name="doc" type="Document"/>
<load var="doc" href="basefont" willBeModified="false"/>
<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname="&quot;basefont&quot;"/>
<assertSize collection="nodeList" size="1" id="Asize"/>
diff --git a/test/testcases/tests/level2/html/HTMLBodyElement07.xml b/test/testcases/tests/level2/html/HTMLBodyElement07.xml.kfail
index 2c759f8..2c759f8 100644
--- a/test/testcases/tests/level2/html/HTMLBodyElement07.xml
+++ b/test/testcases/tests/level2/html/HTMLBodyElement07.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLBodyElement08.xml b/test/testcases/tests/level2/html/HTMLBodyElement08.xml.kfail
index 50b411d..50b411d 100644
--- a/test/testcases/tests/level2/html/HTMLBodyElement08.xml
+++ b/test/testcases/tests/level2/html/HTMLBodyElement08.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLBodyElement09.xml b/test/testcases/tests/level2/html/HTMLBodyElement09.xml.kfail
index 150b4a8..150b4a8 100644
--- a/test/testcases/tests/level2/html/HTMLBodyElement09.xml
+++ b/test/testcases/tests/level2/html/HTMLBodyElement09.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLBodyElement10.xml b/test/testcases/tests/level2/html/HTMLBodyElement10.xml.kfail
index 691739e..691739e 100644
--- a/test/testcases/tests/level2/html/HTMLBodyElement10.xml
+++ b/test/testcases/tests/level2/html/HTMLBodyElement10.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLBodyElement11.xml b/test/testcases/tests/level2/html/HTMLBodyElement11.xml.kfail
index 3c83437..3c83437 100644
--- a/test/testcases/tests/level2/html/HTMLBodyElement11.xml
+++ b/test/testcases/tests/level2/html/HTMLBodyElement11.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLBodyElement12.xml b/test/testcases/tests/level2/html/HTMLBodyElement12.xml.kfail
index 6255dbb..6255dbb 100644
--- a/test/testcases/tests/level2/html/HTMLBodyElement12.xml
+++ b/test/testcases/tests/level2/html/HTMLBodyElement12.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLDocument22.xml b/test/testcases/tests/level2/html/HTMLDocument22.xml.kfail
index 414f065..414f065 100644
--- a/test/testcases/tests/level2/html/HTMLDocument22.xml
+++ b/test/testcases/tests/level2/html/HTMLDocument22.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLDocument23.xml b/test/testcases/tests/level2/html/HTMLDocument23.xml.kfail
index 7896dbd..7896dbd 100644
--- a/test/testcases/tests/level2/html/HTMLDocument23.xml
+++ b/test/testcases/tests/level2/html/HTMLDocument23.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLDocument24.xml b/test/testcases/tests/level2/html/HTMLDocument24.xml.kfail
index 186062d..186062d 100644
--- a/test/testcases/tests/level2/html/HTMLDocument24.xml
+++ b/test/testcases/tests/level2/html/HTMLDocument24.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLDocument25.xml b/test/testcases/tests/level2/html/HTMLDocument25.xml.kfail
index 42a1996..42a1996 100644
--- a/test/testcases/tests/level2/html/HTMLDocument25.xml
+++ b/test/testcases/tests/level2/html/HTMLDocument25.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLDocument26.xml b/test/testcases/tests/level2/html/HTMLDocument26.xml.kfail
index 032cead..032cead 100644
--- a/test/testcases/tests/level2/html/HTMLDocument26.xml
+++ b/test/testcases/tests/level2/html/HTMLDocument26.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLDocument27.xml b/test/testcases/tests/level2/html/HTMLDocument27.xml.kfail
index fa2b184..fa2b184 100644
--- a/test/testcases/tests/level2/html/HTMLDocument27.xml
+++ b/test/testcases/tests/level2/html/HTMLDocument27.xml.kfail
diff --git a/test/testcases/tests/level2/html/HTMLFrameElement09.xml b/test/testcases/tests/level2/html/HTMLFrameElement09.xml
index d6fc5cc..9ae0e16 100644
--- a/test/testcases/tests/level2/html/HTMLFrameElement09.xml
+++ b/test/testcases/tests/level2/html/HTMLFrameElement09.xml
@@ -38,5 +38,5 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<getElementById interface="Document" obj="doc" var="testNode" elementId='"Frame1"'/>
<contentDocument interface="HTMLFrameElement" obj="testNode" var="cd"/>
<title interface="HTMLDocument" obj="cd" var="vtitle"/>
-<assertEquals actual="vtitle" expected='"NIST DOM HTML Test - FRAMESET"' id="titleLink" ignoreCase="false" />
+<assertEquals actual="vtitle" expected='"NIST DOM HTML Test - FRAME2"' id="titleLink" ignoreCase="false" />
</test>
diff --git a/test/testcases/tests/level2/html/HTMLIFrameElement11.xml b/test/testcases/tests/level2/html/HTMLIFrameElement11.xml
index c77d2f4..4220a43 100644
--- a/test/testcases/tests/level2/html/HTMLIFrameElement11.xml
+++ b/test/testcases/tests/level2/html/HTMLIFrameElement11.xml
@@ -35,5 +35,5 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<getElementById interface="Document" obj="doc" var="testNode" elementId='"Iframe2"'/>
<contentDocument interface="HTMLIFrameElement" obj="testNode" var="cd"/>
<title interface="HTMLDocument" obj="cd" var="vtitle"/>
-<assertEquals actual="vtitle" expected='"NIST DOM HTML Test - FRAME"' id="titleLink" ignoreCase="false" />
+<assertEquals actual="vtitle" expected='"NIST DOM HTML Test - IFRAME2"' id="titleLink" ignoreCase="false" />
</test>
diff --git a/test/testcases/tests/level2/html/HTMLTableElement39.xml b/test/testcases/tests/level2/html/HTMLTableElement39.xml.kfail
index 6631584..0a6fcfd 100644
--- a/test/testcases/tests/level2/html/HTMLTableElement39.xml
+++ b/test/testcases/tests/level2/html/HTMLTableElement39.xml.kfail
@@ -54,9 +54,14 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<length interface="HTMLCollection" obj="rowsnodeList" var="vrows"/>
<assertEquals actual="vrows" expected="2" id="rowsLink1" ignoreCase="false"/>
<insertRow interface="HTMLTableElement" obj="testNode" var="newRow" index="-1"/>
+<!--
+* the following assumes that the row is appended to tbody
+* this is obviously wrong it should be appended to tfoot which is the end
+* of the table
<tBodies interface="HTMLTableElement" obj="testNode" var="tbodiesnodeList"/>
<item interface="HTMLCollection" obj="tbodiesnodeList" var="bodyNode" index="0"/>
<rows interface="HTMLTableSectionElement" obj="bodyNode" var="rowsnodeList"/>
<length interface="HTMLCollection" obj="rowsnodeList" var="vrows"/>
<assertEquals actual="vrows" expected="3" id="rowsLink2" ignoreCase="false"/>
+--!>
</test>
diff --git a/test/testcases/tests/level2/html/files/applet.html b/test/testcases/tests/level2/html/files/applet.html
new file mode 100644
index 0000000..d721cf1
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/applet.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - Applet</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<P>
+<APPLET ALIGN="bottom" ALT="Applet Number 1" ARCHIVE="" CODE="org/w3c/domts/DOMTSApplet.class" CODEBASE="applets" HEIGHT="306" HSPACE="0" NAME="applet1" VSPACE="0" WIDTH="301"></APPLET>
+</P>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/applet.xhtml b/test/testcases/tests/level2/html/files/applet.xhtml
new file mode 100644
index 0000000..cf2070c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/applet.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - Applet</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<applet align="bottom" alt="Applet Number 1" archive="" code="org/w3c/domts/DOMTSApplet.class" codebase="applets" height="306" hspace="0" name="applet1" vspace="0" width="301"></applet>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/applet.xml b/test/testcases/tests/level2/html/files/applet.xml
new file mode 100644
index 0000000..cf2070c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/applet.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - Applet</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<applet align="bottom" alt="Applet Number 1" archive="" code="org/w3c/domts/DOMTSApplet.class" codebase="applets" height="306" hspace="0" name="applet1" vspace="0" width="301"></applet>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/applet2.html b/test/testcases/tests/level2/html/files/applet2.html
new file mode 100644
index 0000000..0379ed1
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/applet2.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - Applet</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<P>
+<APPLET ALIGN="bottom" ALT="Applet Number 1" ARCHIVE="" OBJECT="DOMTSApplet.dat" CODEBASE="applets" HEIGHT="306" HSPACE="0" NAME="applet1" VSPACE="0" WIDTH="301"></APPLET>
+</P>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/applet2.xhtml b/test/testcases/tests/level2/html/files/applet2.xhtml
new file mode 100644
index 0000000..43b27da
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/applet2.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - Applet</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<applet align="bottom" alt="Applet Number 1" archive="" object="DOMTSApplet.dat" codebase="applets" height="306" hspace="0" name="applet1" vspace="0" width="301"></applet>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/applet2.xml b/test/testcases/tests/level2/html/files/applet2.xml
new file mode 100644
index 0000000..43b27da
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/applet2.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - Applet</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<applet align="bottom" alt="Applet Number 1" archive="" object="DOMTSApplet.dat" codebase="applets" height="306" hspace="0" name="applet1" vspace="0" width="301"></applet>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/area.html b/test/testcases/tests/level2/html/files/area.html
new file mode 100644
index 0000000..dddff68
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/area.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - Area</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<P>
+<MAP NAME="mapid" ID="mapid">
+<AREA TABINDEX="10" ACCESSKEY="a" SHAPE="rect" ALT="Domain" COORDS="0,2,45,45" HREF="./files/dletter.html" TITLE="Domain">
+</MAP>
+</P>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/area.xhtml b/test/testcases/tests/level2/html/files/area.xhtml
new file mode 100644
index 0000000..1e497f3
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/area.xhtml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "xhtml1-strict.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - Area</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<map name="mapid" id="mapid">
+<area tabindex="10" accesskey="a" shape="rect" alt="Domain" coords="0,2,45,45" href="./files/dletter.html" title="Domain"/>
+</map>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/area.xml b/test/testcases/tests/level2/html/files/area.xml
new file mode 100644
index 0000000..1e497f3
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/area.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "xhtml1-strict.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - Area</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<map name="mapid" id="mapid">
+<area tabindex="10" accesskey="a" shape="rect" alt="Domain" coords="0,2,45,45" href="./files/dletter.html" title="Domain"/>
+</map>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/area2.html b/test/testcases/tests/level2/html/files/area2.html
new file mode 100644
index 0000000..f1ae081
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/area2.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - Area</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<P>
+<MAP NAME="mapid" ID="mapid">
+<AREA HREF="./files/dletter.html" ALT="Domain" TARGET="dynamic">
+</MAP>
+</P>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/area2.xhtml b/test/testcases/tests/level2/html/files/area2.xhtml
new file mode 100644
index 0000000..5476bee
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/area2.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - Area</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<map name="mapid" id="mapid">
+<area href="./files/dletter.html" alt="Domain" target="dynamic"/>
+</map>
+</p>
+</body>
+</html>
diff --git a/test/testcases/tests/level2/html/files/area2.xml b/test/testcases/tests/level2/html/files/area2.xml
new file mode 100644
index 0000000..5476bee
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/area2.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - Area</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<map name="mapid" id="mapid">
+<area href="./files/dletter.html" alt="Domain" target="dynamic"/>
+</map>
+</p>
+</body>
+</html>
diff --git a/test/testcases/tests/level2/html/files/basefont.html b/test/testcases/tests/level2/html/files/basefont.html
new file mode 100644
index 0000000..e3753f7
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/basefont.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - BaseFont</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<P>
+<BASEFONT COLOR="#000000" FACE="arial,helvitica" SIZE="4">
+</P>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/basefont.xhtml b/test/testcases/tests/level2/html/files/basefont.xhtml
new file mode 100644
index 0000000..c5fc9b5
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/basefont.xhtml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - BaseFont</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<basefont color="#000000" face="arial,helvitica" size="4"/>
+</p>
+</body>
+</html>
diff --git a/test/testcases/tests/level2/html/files/basefont.xml b/test/testcases/tests/level2/html/files/basefont.xml
new file mode 100644
index 0000000..c5fc9b5
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/basefont.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - BaseFont</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<basefont color="#000000" face="arial,helvitica" size="4"/>
+</p>
+</body>
+</html>
diff --git a/test/testcases/tests/level2/html/files/document.html b/test/testcases/tests/level2/html/files/document.html
new file mode 100644
index 0000000..9cd9c8a
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/document.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - DOCUMENT</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()" ID="TEST-BODY">
+<FORM ID="form1" ACCEPT-CHARSET="US-ASCII" ACTION="./files/getData.pl" ENCTYPE="application/x-www-form-urlencoded" METHOD="post">
+<P>
+<TEXTAREA NAME="text1" COLS="20" ROWS="7"></TEXTAREA>
+<INPUT TYPE="submit" NAME="submit" VALUE="Submit" />
+<INPUT TYPE="reset" NAME="reset" VALUE="Reset" />
+</P>
+</FORM>
+<P>
+<MAP NAME="mapid" ID="mapid">
+<AREA TABINDEX="10" ACCESSKEY="a" SHAPE="rect" ALT="Domain" COORDS="0,2,45,45" HREF="./files/dletter.html" TITLE="Domain1">
+<AREA TABINDEX="10" ACCESSKEY="a" SHAPE="rect" ALT="Domain" COORDS="0,2,45,45" HREF="./files/dletter.html" TITLE="Domain2">
+</MAP>
+</P>
+<P>
+<IMG ID="IMAGE-1" NAME="IMAGE-1" SRC="./pix/dts.gif" ALT="DTS IMAGE LOGO" LONGDESC="./files/desc.html" USEMAP="#DTS-MAP" WIDTH="115"/>
+</P>
+<P>
+<OBJECT DATA="./pix/line.gif" CODETYPE="image/gif" HEIGHT="10">
+<APPLET ALT="Applet Number 1" CODE="applet1.class"></APPLET>
+</OBJECT>
+<OBJECT DATA="./pix/logo.gif" type="image/gif">
+<APPLET ALT="Applet Number 2" CODE="applet2.class"></APPLET>
+</OBJECT>
+</P>
+<P>
+<A ID="Anchor" DIR="LTR" HREF="./pix/submit.gif" ACCESSKEY="g" TYPE="image/gif" COORDS="0,0,100,100" SHAPE="rect" REL="GLOSSARY" REV="STYLESHEET" HREFLANG="en" CHARSET="US-ASCII" TABINDEX="22" NAME="Anchor">View Submit Button</A>
+</P>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/document.xhtml b/test/testcases/tests/level2/html/files/document.xhtml
new file mode 100644
index 0000000..3cc6ccf
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/document.xhtml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - DOCUMENT</title>
+</head>
+<body onload="parent.loadComplete()" id="TEST-BODY">
+<form id="form1" accept-charset="US-ASCII" action="./files/getData.pl" enctype="application/x-www-form-urlencoded" method="post">
+<p>
+<textarea name="text1" cols="20" rows="7"></textarea>
+<input type="submit" name="submit1" value="Submit" />
+<input type="reset" name="submit2" value="Reset" />
+</p>
+</form>
+<p>
+<map name="mapid" id="mapid">
+<area tabindex="10" accesskey="a" shape="rect" alt="Domain" coords="0,2,45,45" href="./files/dletter.html" title="Domain1" />
+<area tabindex="10" accesskey="a" shape="rect" alt="Domain" coords="0,2,45,45" href="./files/dletter.html" title="Domain2" />
+</map>
+</p>
+<p>
+<img id="IMAGE-1" src="./pix/dts.gif" alt="DTS IMAGE LOGO" longdesc="./files/desc.html" usemap="#DTS-MAP" width="115"/>
+</p>
+<p>
+<object data="./pix/line.gif" codetype="image/gif" height="10">
+<applet alt="Applet Number 1" code="applet1.class" width="10" height="10"></applet>
+</object>
+<object data="./pix/logo.gif" type="image/gif">
+<applet alt="Applet Number 2" code="applet2.class" width="10" height="10"></applet>
+</object>
+</p>
+<p>
+<a id="Anchor" dir="ltr" href="./pix/submit.gif" accesskey="g" type="image/gif" coords="0,0,100,100" shape="rect" rel="GLOSSARY" rev="STYLESHEET" hreflang="en" charset="US-ASCII" tabindex="22" name="Anchor">View Submit Button</a>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/document.xml b/test/testcases/tests/level2/html/files/document.xml
new file mode 100644
index 0000000..3cc6ccf
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/document.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - DOCUMENT</title>
+</head>
+<body onload="parent.loadComplete()" id="TEST-BODY">
+<form id="form1" accept-charset="US-ASCII" action="./files/getData.pl" enctype="application/x-www-form-urlencoded" method="post">
+<p>
+<textarea name="text1" cols="20" rows="7"></textarea>
+<input type="submit" name="submit1" value="Submit" />
+<input type="reset" name="submit2" value="Reset" />
+</p>
+</form>
+<p>
+<map name="mapid" id="mapid">
+<area tabindex="10" accesskey="a" shape="rect" alt="Domain" coords="0,2,45,45" href="./files/dletter.html" title="Domain1" />
+<area tabindex="10" accesskey="a" shape="rect" alt="Domain" coords="0,2,45,45" href="./files/dletter.html" title="Domain2" />
+</map>
+</p>
+<p>
+<img id="IMAGE-1" src="./pix/dts.gif" alt="DTS IMAGE LOGO" longdesc="./files/desc.html" usemap="#DTS-MAP" width="115"/>
+</p>
+<p>
+<object data="./pix/line.gif" codetype="image/gif" height="10">
+<applet alt="Applet Number 1" code="applet1.class" width="10" height="10"></applet>
+</object>
+<object data="./pix/logo.gif" type="image/gif">
+<applet alt="Applet Number 2" code="applet2.class" width="10" height="10"></applet>
+</object>
+</p>
+<p>
+<a id="Anchor" dir="ltr" href="./pix/submit.gif" accesskey="g" type="image/gif" coords="0,0,100,100" shape="rect" rel="GLOSSARY" rev="STYLESHEET" hreflang="en" charset="US-ASCII" tabindex="22" name="Anchor">View Submit Button</a>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/img.html b/test/testcases/tests/level2/html/files/img.html
new file mode 100644
index 0000000..b4e8b27
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/img.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - IMG</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<P>
+<IMG ID="IMAGE-1" NAME="IMAGE-1" SRC="./pix/dts.gif" ALIGN="middle" ALT="DTS IMAGE LOGO" BORDER="0" HEIGHT="47" HSPACE="4" LONGDESC="./files/desc.html" USEMAP="#DTS-MAP" VSPACE="10" WIDTH="115"/>
+</P>
+</BODY>
+</HTML>
+
diff --git a/test/testcases/tests/level2/html/files/img.xhtml b/test/testcases/tests/level2/html/files/img.xhtml
new file mode 100644
index 0000000..40e3695
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/img.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - IMG</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<img id="IMAGE-1" name="IMAGE-1" src="./pix/dts.gif" align="middle" alt="DTS IMAGE LOGO" border="0" height="47" hspace="4" longdesc="./files/desc.html" usemap="#DTS-MAP" vspace="10" width="115"/>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/img.xml b/test/testcases/tests/level2/html/files/img.xml
new file mode 100644
index 0000000..40e3695
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/img.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - IMG</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<img id="IMAGE-1" name="IMAGE-1" src="./pix/dts.gif" align="middle" alt="DTS IMAGE LOGO" border="0" height="47" hspace="4" longdesc="./files/desc.html" usemap="#DTS-MAP" vspace="10" width="115"/>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/input.html b/test/testcases/tests/level2/html/files/input.html
new file mode 100644
index 0000000..c36e87d
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/input.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - INPUT</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<TABLE CELLPADDING="15" BORDER="BORDER" SUMMARY="Table 1">
+<TR ALIGN="center">
+<TD VAlign="top">Under a FORM control
+<FORM ID="form1" ACTION="./files/getData.pl" METHOD="post">
+<TABLE BORDER="15" SUMMARY="Table 2">
+<TR>
+<TD>
+<LABEL ACCESSKEY="b" FOR="input1">Enter Your Password:</LABEL>
+</TD>
+<TD>
+<INPUT DIR="LTR" ID="input1" TABINDEX="8" VALUE="Password" TYPE="password" NAME="Password" SIZE="25" MAXLENGTH="5" ALT="Password entry" READONLY="READONLY"/>
+</TD>
+</TR>
+<TR>
+<TD>
+<INPUT TYPE="RADIO" NAME="Radio1" ACCESSKEY="c" VALUE="ReHire"/>ReHire
+</TD>
+</TR>
+<TR>
+<TD>
+<INPUT TYPE="RADIO" NAME="Radio2" VALUE="NewHire" TABINDEX="9" CHECKED="CHECKED"/>NewHire
+</TD>
+</TR>
+<TR>
+<TD>Hours available to work</TD>
+<TD>
+<INPUT TYPE="CHECKBOX" NAME="Check1" ALIGN="bottom" TABINDEX="10" VALUE="EarlyMornings" CHECKED="CHECKED"/>EarlyMornings
+<BR/>
+<INPUT ID="input5" TYPE="CHECKBOX" NAME="Check2" TABINDEX="11" VALUE="AfterNoon" ONCLICK="newId(this)"/>Afternoon
+<BR/>
+<INPUT TYPE="CHECKBOX" NAME="Check3" TABINDEX="12" VALUE="Evenings"/>Evenings
+<BR/>
+<INPUT TYPE="CHECKBOX" NAME="Check4" TABINDEX="13" VALUE="Closing" DISABLED="DISABLED"/>Closing
+<BR/>
+</TD>
+</TR>
+<TR>
+<TD COLSPAN="2">
+<INPUT TYPE="IMAGE" TABINDEX="14" NAME="SubmitImage" USEMAP="#submit-map" SRC="./pix/submit.gif"/>
+</TD>
+</TR>
+<TR>
+<TD COLSPAN="2">
+<INPUT TITLE="old_title" TYPE="FILE" NAME="FileControl" TABINDEX="15" ACCEPT="GIF,JPEG" ONSELECT="newTitle(this)"/>
+</TD>
+</TR>
+</TABLE>
+</FORM>
+</TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/input.xhtml b/test/testcases/tests/level2/html/files/input.xhtml
new file mode 100644
index 0000000..b7704ad
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/input.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - INPUT</title>
+</head>
+<body onload="parent.loadComplete()">
+<table cellpadding="15" border="border" summary="Table 1">
+<tr align="center">
+<td valign="top">Under a FORM control
+<form id="form1" action="./files/getData.pl" method="post">
+<table border="15" summary="Table 2">
+<tr>
+<td>
+<label accesskey="b" for="input1">Enter Your Password:</label>
+</td>
+<td>
+<input dir="ltr" id="input1" tabindex="8" value="Password" type="password" name="Password" size="25" maxlength="5" alt="Password entry" readonly="readonly"/>
+</td>
+</tr>
+<tr>
+<td>
+<input type="radio" name="Radio1" accesskey="c" value="ReHire"/>
+</td>
+</tr>
+<tr>
+<td>
+<input type="radio" name="Radio2" value="NewHire" tabindex="9" checked="checked"/>
+</td>
+</tr>
+<tr>
+<td>Hours available to work</td>
+<td>
+<input type="checkbox" name="Check1" align="bottom" tabindex="10" value="EarlyMornings" checked="checked"/>
+<br/>
+<input id="input5" type="checkbox" name="Check2" tabindex="11" value="AfterNoon" onclick="newId(this)"/>
+<br/>
+<input type="checkbox" name="Check3" tabindex="12" value="Evenings"/>
+<br/>
+<input type="checkbox" name="Check4" tabindex="13" value="Closing" disabled="disabled"/>
+<br/>
+</td>
+</tr>
+<tr>
+<td colspan="2">
+<input type="image" tabindex="14" name="SubmitImage" usemap="#submit-map" src="./pix/submit.gif"/>
+</td>
+</tr>
+<tr>
+<td colspan="2">
+<input title="old_title" type="file" name="FileControl" tabindex="15" accept="GIF,JPEG" onselect="newTitle(this)"/>
+</td>
+</tr>
+</table>
+</form>
+</td>
+</tr>
+</table>
+</body>
+</html>
diff --git a/test/testcases/tests/level2/html/files/input.xml b/test/testcases/tests/level2/html/files/input.xml
new file mode 100644
index 0000000..b7704ad
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/input.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - INPUT</title>
+</head>
+<body onload="parent.loadComplete()">
+<table cellpadding="15" border="border" summary="Table 1">
+<tr align="center">
+<td valign="top">Under a FORM control
+<form id="form1" action="./files/getData.pl" method="post">
+<table border="15" summary="Table 2">
+<tr>
+<td>
+<label accesskey="b" for="input1">Enter Your Password:</label>
+</td>
+<td>
+<input dir="ltr" id="input1" tabindex="8" value="Password" type="password" name="Password" size="25" maxlength="5" alt="Password entry" readonly="readonly"/>
+</td>
+</tr>
+<tr>
+<td>
+<input type="radio" name="Radio1" accesskey="c" value="ReHire"/>
+</td>
+</tr>
+<tr>
+<td>
+<input type="radio" name="Radio2" value="NewHire" tabindex="9" checked="checked"/>
+</td>
+</tr>
+<tr>
+<td>Hours available to work</td>
+<td>
+<input type="checkbox" name="Check1" align="bottom" tabindex="10" value="EarlyMornings" checked="checked"/>
+<br/>
+<input id="input5" type="checkbox" name="Check2" tabindex="11" value="AfterNoon" onclick="newId(this)"/>
+<br/>
+<input type="checkbox" name="Check3" tabindex="12" value="Evenings"/>
+<br/>
+<input type="checkbox" name="Check4" tabindex="13" value="Closing" disabled="disabled"/>
+<br/>
+</td>
+</tr>
+<tr>
+<td colspan="2">
+<input type="image" tabindex="14" name="SubmitImage" usemap="#submit-map" src="./pix/submit.gif"/>
+</td>
+</tr>
+<tr>
+<td colspan="2">
+<input title="old_title" type="file" name="FileControl" tabindex="15" accept="GIF,JPEG" onselect="newTitle(this)"/>
+</td>
+</tr>
+</table>
+</form>
+</td>
+</tr>
+</table>
+</body>
+</html>
diff --git a/test/testcases/tests/level2/html/files/object.html b/test/testcases/tests/level2/html/files/object.html
new file mode 100644
index 0000000..c7fbab1
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/object.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - OBJECT</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<P>
+<OBJECT ALIGN="middle" ARCHIVE="" BORDER="0" CODEBASE="http://xw2k.sdct.itl.nist.gov/brady/dom/" DATA="./pix/logo.gif" HEIGHT="60" HSPACE="0" STANDBY="Loading Image ..." TABINDEX="0" TYPE="image/gif" USEMAP="#DivLogo-map" VSPACE="0" WIDTH="550"></OBJECT>
+</P>
+<FORM NAME="OBJECT2" ACTION="./files/getData.pl" METHOD="post">
+<P>
+<OBJECT DECLARE="declare" NAME="OBJECT2" CODETYPE="image/gif"></OBJECT>
+</P>
+</FORM>
+</BODY>
+</HTML>
+
diff --git a/test/testcases/tests/level2/html/files/object.xhtml b/test/testcases/tests/level2/html/files/object.xhtml
new file mode 100644
index 0000000..824f7fc
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/object.xhtml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - OBJECT</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<object align="middle" archive="" border="0" codebase="http://xw2k.sdct.itl.nist.gov/brady/dom/" data="./pix/logo.gif" height="60" hspace="0" standby="Loading Image ..." tabindex="0" type="image/gif" usemap="#DivLogo-map" vspace="0" width="550"></object>
+</p>
+<form name="OBJECT2" action="./files/getData.pl" method="post">
+<p>
+<object declare="declare" name="OBJECT2" codetype="image/gif"></object>
+</p>
+</form>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/object.xml b/test/testcases/tests/level2/html/files/object.xml
new file mode 100644
index 0000000..824f7fc
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/object.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - OBJECT</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<object align="middle" archive="" border="0" codebase="http://xw2k.sdct.itl.nist.gov/brady/dom/" data="./pix/logo.gif" height="60" hspace="0" standby="Loading Image ..." tabindex="0" type="image/gif" usemap="#DivLogo-map" vspace="0" width="550"></object>
+</p>
+<form name="OBJECT2" action="./files/getData.pl" method="post">
+<p>
+<object declare="declare" name="OBJECT2" codetype="image/gif"></object>
+</p>
+</form>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/object2.html b/test/testcases/tests/level2/html/files/object2.html
new file mode 100644
index 0000000..0a39363
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/object2.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - OBJECT</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<P>
+<OBJECT ALIGN="middle" ARCHIVE="" BORDER="0" CODEBASE="http://www.w3.org/DOM/" DATA="./pix/logo.gif" HEIGHT="60" HSPACE="0" STANDBY="Loading Image ..." TABINDEX="0" TYPE="image/gif" USEMAP="#DivLogo-map" VSPACE="0" WIDTH="550"></OBJECT>
+</P>
+<FORM ID="object2" ACTION="./files/getData.pl" METHOD="post">
+<P>
+<OBJECT DECLARE="declare" NAME="OBJECT2" CODETYPE="image/gif"></OBJECT>
+</P>
+</FORM>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/object2.xhtml b/test/testcases/tests/level2/html/files/object2.xhtml
new file mode 100644
index 0000000..e318a3c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/object2.xhtml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - OBJECT</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<object align="middle" archive="" border="0" codebase="http://www.w3.org/DOM/" data="./pix/logo.gif" height="60" hspace="0" standby="Loading Image ..." tabindex="0" type="image/gif" usemap="#DivLogo-map" vspace="0" width="550"></object>
+</p>
+<form id="object2" action="./files/getData.pl" method="post">
+<p>
+<object declare="declare" name="OBJECT2" codetype="image/gif"></object>
+</p>
+</form>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/object2.xml b/test/testcases/tests/level2/html/files/object2.xml
new file mode 100644
index 0000000..a41e03d
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/object2.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - OBJECT</title>
+</head>
+<body onload="parent.loadComplete()">
+<p>
+<object align="middle" archive="" border="0" codebase="http://xw2k.sdct.itl.nist.gov/brady/dom/" data="./pix/logo.gif" height="60" hspace="0" standby="Loading Image ..." tabindex="0" type="image/gif" usemap="#DivLogo-map" vspace="0" width="550"></object>
+</p>
+<form id="object2" action="./files/getData.pl" method="post">
+<p>
+<object declare="declare" name="OBJECT2" codetype="image/gif"></object>
+</p>
+</form>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/select.html b/test/testcases/tests/level2/html/files/select.html
new file mode 100644
index 0000000..7820624
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/select.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - SELECT</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<FORM ID="form1" ACTION="./files/getData.pl" METHOD="post">
+<P>
+<SELECT ID="selectId" DIR="ltr" TABINDEX="7" NAME="select1" MULTIPLE="multiple" SIZE="1">
+<OPTION SELECTED="selected" value="EMP1">EMP10001</OPTION>
+<OPTION>EMP10002</OPTION>
+<OPTION>EMP10003</OPTION>
+<OPTION>EMP10004</OPTION>
+<OPTION>EMP10005</OPTION>
+</SELECT>
+</P>
+</FORM>
+<P>
+<SELECT NAME="select2">
+<OPTION>EMP20001</OPTION>
+<OPTION>EMP20002</OPTION>
+<OPTION>EMP20003</OPTION>
+<OPTION>EMP20004</OPTION>
+<OPTION>EMP20005</OPTION>
+</SELECT>
+</P>
+<P>
+<SELECT NAME="select3" DISABLED="disabled" TABINDEX="1">
+<OPTION>EMP30001</OPTION>
+<OPTION>EMP30002</OPTION>
+<OPTION>EMP30003</OPTION>
+<OPTION>EMP30004</OPTION>
+<OPTION>EMP30005</OPTION>
+</SELECT>
+</P>
+</BODY>
+</HTML>
+
+
+
+
+
+
diff --git a/test/testcases/tests/level2/html/files/select.xhtml b/test/testcases/tests/level2/html/files/select.xhtml
new file mode 100644
index 0000000..491a74c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/select.xhtml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - SELECT</title>
+</head>
+<body onload="parent.loadComplete()">
+<form id="form1" action="./files/getData.pl" method="post">
+<p>
+<select id="selectId" dir="ltr" tabindex="7" name="select1" multiple="multiple" size="1">
+<option selected="selected" value="EMP1">EMP10001</option>
+<option>EMP10002</option>
+<option>EMP10003</option>
+<option>EMP10004</option>
+<option>EMP10005</option>
+</select>
+</p>
+</form>
+<p>
+<select name="select2">
+<option>EMP20001</option>
+<option>EMP20002</option>
+<option>EMP20003</option>
+<option>EMP20004</option>
+<option>EMP20005</option>
+</select>
+</p>
+<p>
+<select name="select3" disabled="disabled" tabindex="1">
+<option>EMP30001</option>
+<option>EMP30002</option>
+<option>EMP30003</option>
+<option>EMP30004</option>
+<option>EMP30005</option>
+</select>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/select.xml b/test/testcases/tests/level2/html/files/select.xml
new file mode 100644
index 0000000..491a74c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/select.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - SELECT</title>
+</head>
+<body onload="parent.loadComplete()">
+<form id="form1" action="./files/getData.pl" method="post">
+<p>
+<select id="selectId" dir="ltr" tabindex="7" name="select1" multiple="multiple" size="1">
+<option selected="selected" value="EMP1">EMP10001</option>
+<option>EMP10002</option>
+<option>EMP10003</option>
+<option>EMP10004</option>
+<option>EMP10005</option>
+</select>
+</p>
+</form>
+<p>
+<select name="select2">
+<option>EMP20001</option>
+<option>EMP20002</option>
+<option>EMP20003</option>
+<option>EMP20004</option>
+<option>EMP20005</option>
+</select>
+</p>
+<p>
+<select name="select3" disabled="disabled" tabindex="1">
+<option>EMP30001</option>
+<option>EMP30002</option>
+<option>EMP30003</option>
+<option>EMP30004</option>
+<option>EMP30005</option>
+</select>
+</p>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/table.html b/test/testcases/tests/level2/html/files/table.html
new file mode 100644
index 0000000..b8f151e
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - TABLE</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<TABLE ALIGN="center" SUMMARY="Table 1">
+<TR>
+<TH>Id</TH>
+<TH>Name</TH>
+<TH>Position</TH>
+<TH>Salary</TH>
+</TR>
+</TABLE>
+<TABLE ID="table-1" ALIGN="center" BORDER="4" BGCOLOR="#ff0000" FRAME="border" CELLPADDING="2" CELLSPACING="2" SUMMARY="HTML Control Table" RULES="all" WIDTH="680">
+<CAPTION ALIGN="top">Table Caption</CAPTION>
+<THEAD ALIGN="center" VALIGN="middle">
+<TR ALIGN="center" BGCOLOR="#00FFFF" VALIGN="middle">
+<TH ID="header-1">Employee Id</TH>
+<TH ID="header-2" ABBR="maiden" AXIS="center" ALIGN="center" BGCOLOR="#00FFFF" COLSPAN="1" HEIGHT="50" NOWRAP="nowrap" ROWSPAN="1" SCOPE="col" HEADERS="header-1" VALIGN="middle" WIDTH="100">Employee Name</TH>
+<TH>Position</TH>
+<TH>Salary</TH>
+<TH>Gender</TH>
+<TH>Address</TH>
+</TR>
+</THEAD>
+<TFOOT ALIGN="center" VALIGN="middle">
+<TR>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+</TR>
+</TFOOT>
+<TBODY ALIGN="center" VALIGN="middle">
+<TR>
+<TD AXIS="center" ID="Table-3" ABBR="maiden2" ALIGN="center" BGCOLOR="#FF0000" COLSPAN="1" HEIGHT="50" NOWRAP="nowrap" ROWSPAN="1" SCOPE="col" HEADERS="header-2" VALIGN="middle" WIDTH="175">EMP0001</TD>
+<TD HEADERS="header-2">Margaret Martin</TD>
+<TD>Accountant</TD>
+<TD>56,000</TD>
+<TD>Female</TD>
+<TD>1230 North Ave. Dallas, Texas 98551</TD>
+</TR>
+<TR>
+<TD>EMP0002</TD>
+<TD>Martha Raynolds</TD>
+<TD>Secretary</TD>
+<TD>35,000</TD>
+<TD>Female</TD>
+<TD>1900 Dallas Road Dallas, Texas 98554</TD>
+</TR>
+</TBODY>
+</TABLE>
+<TABLE SUMMARY="Table 3">
+<TBODY>
+<TR>
+<TD>
+</TD>
+</TR>
+</TBODY>
+<TBODY>
+<TR>
+<TD>
+</TD>
+</TR>
+</TBODY>
+<TBODY>
+<TR>
+<TD>
+</TD>
+</TR>
+</TBODY>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/table.xhtml b/test/testcases/tests/level2/html/files/table.xhtml
new file mode 100644
index 0000000..8300b90
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table.xhtml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table align="center" summary="Table 1">
+<tr>
+<th>Id</th>
+<th>Name</th>
+<th>Position</th>
+<th>Salary</th>
+</tr>
+</table>
+<table id="table-1" align="center" border="4" bgcolor="#ff0000" frame="border" cellpadding="2" cellspacing="2" summary="HTML Control Table" rules="all" width="680">
+<caption align="top">Table Caption</caption>
+<thead align="center" valign="middle">
+<tr align="center" bgcolor="#00FFFF" valign="middle">
+<th id="header-1">Employee Id</th>
+<th id="header-2" abbr="maiden" axis="center" align="center" bgcolor="#00FFFF" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-1" valign="middle" width="100">Employee Name</th>
+<th>Position</th>
+<th>Salary</th>
+<th>Gender</th>
+<th>Address</th>
+</tr>
+</thead>
+<tfoot align="center" valign="middle">
+<tr>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+</tr>
+</tfoot>
+<tbody align="center" valign="middle">
+<tr>
+<td axis="center" id="Table-3" abbr="maiden2" align="center" bgcolor="#FF0000" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-2" valign="middle" width="175">EMP0001</td>
+<td headers="header-2">Margaret Martin</td>
+<td>Accountant</td>
+<td>56,000</td>
+<td>Female</td>
+<td>1230 North Ave. Dallas, Texas 98551</td>
+</tr>
+<tr>
+<td>EMP0002</td>
+<td>Martha Raynolds</td>
+<td>Secretary</td>
+<td>35,000</td>
+<td>Female</td>
+<td>1900 Dallas Road Dallas, Texas 98554</td>
+</tr>
+</tbody>
+</table>
+<table summary="Table 3">
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/table.xml b/test/testcases/tests/level2/html/files/table.xml
new file mode 100644
index 0000000..8300b90
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table align="center" summary="Table 1">
+<tr>
+<th>Id</th>
+<th>Name</th>
+<th>Position</th>
+<th>Salary</th>
+</tr>
+</table>
+<table id="table-1" align="center" border="4" bgcolor="#ff0000" frame="border" cellpadding="2" cellspacing="2" summary="HTML Control Table" rules="all" width="680">
+<caption align="top">Table Caption</caption>
+<thead align="center" valign="middle">
+<tr align="center" bgcolor="#00FFFF" valign="middle">
+<th id="header-1">Employee Id</th>
+<th id="header-2" abbr="maiden" axis="center" align="center" bgcolor="#00FFFF" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-1" valign="middle" width="100">Employee Name</th>
+<th>Position</th>
+<th>Salary</th>
+<th>Gender</th>
+<th>Address</th>
+</tr>
+</thead>
+<tfoot align="center" valign="middle">
+<tr>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+</tr>
+</tfoot>
+<tbody align="center" valign="middle">
+<tr>
+<td axis="center" id="Table-3" abbr="maiden2" align="center" bgcolor="#FF0000" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-2" valign="middle" width="175">EMP0001</td>
+<td headers="header-2">Margaret Martin</td>
+<td>Accountant</td>
+<td>56,000</td>
+<td>Female</td>
+<td>1230 North Ave. Dallas, Texas 98551</td>
+</tr>
+<tr>
+<td>EMP0002</td>
+<td>Martha Raynolds</td>
+<td>Secretary</td>
+<td>35,000</td>
+<td>Female</td>
+<td>1900 Dallas Road Dallas, Texas 98554</td>
+</tr>
+</tbody>
+</table>
+<table summary="Table 3">
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/table1.html b/test/testcases/tests/level2/html/files/table1.html
new file mode 100644
index 0000000..8f5d19b
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table1.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - TABLE</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<TABLE SUMMARY="Empty Table">
+<tr><td>HTML can't abide empty table</td></tr>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/table1.xhtml b/test/testcases/tests/level2/html/files/table1.xhtml
new file mode 100644
index 0000000..e174c63
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table1.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table summary="Empty Table">
+<tr><td>XHTML can't abide empty table</td></tr>
+</table>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/table1.xml b/test/testcases/tests/level2/html/files/table1.xml
new file mode 100644
index 0000000..e174c63
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table1.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table summary="Empty Table">
+<tr><td>XHTML can't abide empty table</td></tr>
+</table>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/tablerow.html b/test/testcases/tests/level2/html/files/tablerow.html
new file mode 100644
index 0000000..9e76a4c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/tablerow.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - TABLEROW</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<TABLE ALIGN="center" SUMMARY="Table 1">
+<TR>
+<TH>Id</TH>
+<TH>Name</TH>
+<TH>Position</TH>
+<TH>Salary</TH>
+</TR>
+</TABLE>
+<TABLE ID="table-1" ALIGN="center" BORDER="4" BGCOLOR="#ff0000" FRAME="border" CELLPADDING="2" CELLSPACING="2" SUMMARY="HTML Control Table" RULES="all" WIDTH="680">
+<CAPTION ALIGN="top">Table Caption</CAPTION>
+<THEAD ALIGN="center" VALIGN="middle">
+<TR ALIGN="center" BGCOLOR="#00FFFF" VALIGN="middle" CHAR="*" CHAROFF="1">
+<TH ID="header-1">Employee Id</TH>
+<TH ID="header-2" ABBR="maiden" AXIS="center" ALIGN="center" BGCOLOR="#00FFFF" COLSPAN="1" HEIGHT="50" NOWRAP="nowrap" ROWSPAN="1" SCOPE="col" HEADERS="header-1" VALIGN="middle" WIDTH="100">Employee Name</TH>
+<TH>Position</TH>
+<TH>Salary</TH>
+<TH>Gender</TH>
+<TH>Address</TH>
+</TR>
+</THEAD>
+<TFOOT ALIGN="center" VALIGN="middle">
+<TR>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+</TR>
+</TFOOT>
+<TBODY ALIGN="center" VALIGN="middle">
+<TR>
+<TD AXIS="center" ID="Table-3" ABBR="maiden2" ALIGN="center" BGCOLOR="#FF0000" COLSPAN="1" HEIGHT="50" NOWRAP="nowrap" ROWSPAN="1" SCOPE="col" HEADERS="header-2" VALIGN="middle" WIDTH="175">EMP0001</TD>
+<TD HEADERS="header-2">Margaret Martin</TD>
+<TD>Accountant</TD>
+<TD>56,000</TD>
+<TD>Female</TD>
+<TD>1230 North Ave. Dallas, Texas 98551</TD>
+</TR>
+<TR>
+<TD>EMP0002</TD>
+<TD>Martha Raynolds</TD>
+<TD>Secretary</TD>
+<TD>35,000</TD>
+<TD>Female</TD>
+<TD>1900 Dallas Road Dallas, Texas 98554</TD>
+</TR>
+</TBODY>
+</TABLE>
+</BODY>
+</HTML>
+
diff --git a/test/testcases/tests/level2/html/files/tablerow.xhtml b/test/testcases/tests/level2/html/files/tablerow.xhtml
new file mode 100644
index 0000000..b901e3c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/tablerow.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table align="center" summary="Table 1">
+<tr>
+<th>Id</th>
+<th>Name</th>
+<th>Position</th>
+<th>Salary</th>
+</tr>
+</table>
+<table id="table-1" align="center" border="4" bgcolor="#ff0000" frame="border" cellpadding="2" cellspacing="2" summary="HTML Control Table" rules="all" width="680">
+<caption align="top">Table Caption</caption>
+<thead align="center" valign="middle">
+<tr align="center" bgcolor="#00FFFF" valign="middle" char="*" charoff="1">
+<th id="header-1">Employee Id</th>
+<th id="header-2" abbr="maiden" axis="center" align="center" bgcolor="#00FFFF" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-1" valign="middle" width="100">Employee Name</th>
+<th>Position</th>
+<th>Salary</th>
+<th>Gender</th>
+<th>Address</th>
+</tr>
+</thead>
+<tfoot align="center" valign="middle">
+<tr>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+</tr>
+</tfoot>
+<tbody align="center" valign="middle">
+<tr>
+<td axis="center" id="Table-3" abbr="maiden2" align="center" bgcolor="#FF0000" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-2" valign="middle" width="175">EMP0001</td>
+<td headers="header-2">Margaret Martin</td>
+<td>Accountant</td>
+<td>56,000</td>
+<td>Female</td>
+<td>1230 North Ave. Dallas, Texas 98551</td>
+</tr>
+<tr>
+<td>EMP0002</td>
+<td>Martha Raynolds</td>
+<td>Secretary</td>
+<td>35,000</td>
+<td>Female</td>
+<td>1900 Dallas Road Dallas, Texas 98554</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
+
diff --git a/test/testcases/tests/level2/html/files/tablerow.xml b/test/testcases/tests/level2/html/files/tablerow.xml
new file mode 100644
index 0000000..b901e3c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/tablerow.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table align="center" summary="Table 1">
+<tr>
+<th>Id</th>
+<th>Name</th>
+<th>Position</th>
+<th>Salary</th>
+</tr>
+</table>
+<table id="table-1" align="center" border="4" bgcolor="#ff0000" frame="border" cellpadding="2" cellspacing="2" summary="HTML Control Table" rules="all" width="680">
+<caption align="top">Table Caption</caption>
+<thead align="center" valign="middle">
+<tr align="center" bgcolor="#00FFFF" valign="middle" char="*" charoff="1">
+<th id="header-1">Employee Id</th>
+<th id="header-2" abbr="maiden" axis="center" align="center" bgcolor="#00FFFF" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-1" valign="middle" width="100">Employee Name</th>
+<th>Position</th>
+<th>Salary</th>
+<th>Gender</th>
+<th>Address</th>
+</tr>
+</thead>
+<tfoot align="center" valign="middle">
+<tr>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+</tr>
+</tfoot>
+<tbody align="center" valign="middle">
+<tr>
+<td axis="center" id="Table-3" abbr="maiden2" align="center" bgcolor="#FF0000" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-2" valign="middle" width="175">EMP0001</td>
+<td headers="header-2">Margaret Martin</td>
+<td>Accountant</td>
+<td>56,000</td>
+<td>Female</td>
+<td>1230 North Ave. Dallas, Texas 98551</td>
+</tr>
+<tr>
+<td>EMP0002</td>
+<td>Martha Raynolds</td>
+<td>Secretary</td>
+<td>35,000</td>
+<td>Female</td>
+<td>1900 Dallas Road Dallas, Texas 98554</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
+
diff --git a/test/testcases/tests/level2/html/files/tablesection.html b/test/testcases/tests/level2/html/files/tablesection.html
new file mode 100644
index 0000000..0c1a5f7
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/tablesection.html
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - TABLESECTION</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<TABLE ALIGN="center" SUMMARY="Table 1">
+<TBODY>
+<TR>
+<TH>Id</TH>
+<TH>Name</TH>
+<TH>Position</TH>
+<TH>Salary</TH>
+</TR>
+</TBODY>
+</TABLE>
+<TABLE ID="table-1" ALIGN="center" BORDER="4" BGCOLOR="#ff0000" FRAME="border" CELLPADDING="2" CELLSPACING="2" SUMMARY="HTML Control Table" RULES="all" WIDTH="680">
+<CAPTION ALIGN="top">Table Caption</CAPTION>
+<THEAD ALIGN="center" VALIGN="middle" CHAR="*" CHAROFF="1">
+<TR ALIGN="center" BGCOLOR="#00FFFF" VALIGN="middle" CHAR="*" CHAROFF="1">
+<TH ID="header-1">Employee Id</TH>
+<TH ID="header-2" ABBR="maiden" AXIS="center" ALIGN="center" BGCOLOR="#00FFFF" COLSPAN="1" HEIGHT="50" NOWRAP="nowrap" ROWSPAN="1" SCOPE="col" HEADERS="header-1" VALIGN="middle" WIDTH="100">Employee Name</TH>
+<TH>Position</TH>
+<TH>Salary</TH>
+<TH>Gender</TH>
+<TH>Address</TH>
+</TR>
+</THEAD>
+<TFOOT ALIGN="center" VALIGN="middle" CHAR="+" CHAROFF="2">
+<TR>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+</TR>
+</TFOOT>
+<TBODY ALIGN="center" VALIGN="middle" CHAR="$" CHAROFF="3">
+<TR>
+<TD AXIS="center" ID="Table-3" ABBR="maiden2" ALIGN="center" BGCOLOR="#FF0000" COLSPAN="1" HEIGHT="50" NOWRAP="nowrap" ROWSPAN="1" SCOPE="col" HEADERS="header-2" VALIGN="middle" WIDTH="175">EMP0001</TD>
+<TD HEADERS="header-2">Margaret Martin</TD>
+<TD>Accountant</TD>
+<TD>56,000</TD>
+<TD>Female</TD>
+<TD>1230 North Ave. Dallas, Texas 98551</TD>
+</TR>
+<TR>
+<TD>EMP0002</TD>
+<TD>Martha Raynolds</TD>
+<TD>Secretary</TD>
+<TD>35,000</TD>
+<TD>Female</TD>
+<TD>1900 Dallas Road Dallas, Texas 98554</TD>
+</TR>
+</TBODY>
+</TABLE>
+</BODY>
+</HTML>
+
+
diff --git a/test/testcases/tests/level2/html/files/tablesection.xhtml b/test/testcases/tests/level2/html/files/tablesection.xhtml
new file mode 100644
index 0000000..3498650
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/tablesection.xhtml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLESECTION</title>
+</head>
+<body onload="parent.loadComplete()">
+<table align="center" summary="Table 1">
+<tbody>
+<tr>
+<th>Id</th>
+<th>Name</th>
+<th>Position</th>
+<th>Salary</th>
+</tr>
+</tbody>
+</table>
+<table id="table-1" align="center" border="4" bgcolor="#ff0000" frame="border" cellpadding="2" cellspacing="2" summary="HTML Control Table" rules="all" width="680">
+<caption align="top">Table Caption</caption>
+<thead align="center" valign="middle" char="*" charoff="1">
+<tr align="center" bgcolor="#00FFFF" valign="middle" char="*" charoff="1">
+<th id="header-1">Employee Id</th>
+<th id="header-2" abbr="maiden" axis="center" align="center" bgcolor="#00FFFF" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-1" valign="middle" width="100">Employee Name</th>
+<th>Position</th>
+<th>Salary</th>
+<th>Gender</th>
+<th>Address</th>
+</tr>
+</thead>
+<tfoot align="center" valign="middle" char="+" charoff="2">
+<tr>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+</tr>
+</tfoot>
+<tbody align="center" valign="middle" char="$" charoff="3">
+<tr>
+<td axis="center" id="Table-3" abbr="maiden2" align="center" bgcolor="#FF0000" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-2" valign="middle" width="175">EMP0001</td>
+<td headers="header-2">Margaret Martin</td>
+<td>Accountant</td>
+<td>56,000</td>
+<td>Female</td>
+<td>1230 North Ave. Dallas, Texas 98551</td>
+</tr>
+<tr>
+<td>EMP0002</td>
+<td>Martha Raynolds</td>
+<td>Secretary</td>
+<td>35,000</td>
+<td>Female</td>
+<td>1900 Dallas Road Dallas, Texas 98554</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
+
+
diff --git a/test/testcases/tests/level2/html/files/tablesection.xml b/test/testcases/tests/level2/html/files/tablesection.xml
new file mode 100644
index 0000000..3498650
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/tablesection.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLESECTION</title>
+</head>
+<body onload="parent.loadComplete()">
+<table align="center" summary="Table 1">
+<tbody>
+<tr>
+<th>Id</th>
+<th>Name</th>
+<th>Position</th>
+<th>Salary</th>
+</tr>
+</tbody>
+</table>
+<table id="table-1" align="center" border="4" bgcolor="#ff0000" frame="border" cellpadding="2" cellspacing="2" summary="HTML Control Table" rules="all" width="680">
+<caption align="top">Table Caption</caption>
+<thead align="center" valign="middle" char="*" charoff="1">
+<tr align="center" bgcolor="#00FFFF" valign="middle" char="*" charoff="1">
+<th id="header-1">Employee Id</th>
+<th id="header-2" abbr="maiden" axis="center" align="center" bgcolor="#00FFFF" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-1" valign="middle" width="100">Employee Name</th>
+<th>Position</th>
+<th>Salary</th>
+<th>Gender</th>
+<th>Address</th>
+</tr>
+</thead>
+<tfoot align="center" valign="middle" char="+" charoff="2">
+<tr>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+</tr>
+</tfoot>
+<tbody align="center" valign="middle" char="$" charoff="3">
+<tr>
+<td axis="center" id="Table-3" abbr="maiden2" align="center" bgcolor="#FF0000" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-2" valign="middle" width="175">EMP0001</td>
+<td headers="header-2">Margaret Martin</td>
+<td>Accountant</td>
+<td>56,000</td>
+<td>Female</td>
+<td>1230 North Ave. Dallas, Texas 98551</td>
+</tr>
+<tr>
+<td>EMP0002</td>
+<td>Martha Raynolds</td>
+<td>Secretary</td>
+<td>35,000</td>
+<td>Female</td>
+<td>1900 Dallas Road Dallas, Texas 98554</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
+
+
diff --git a/test/testcases/tests/level2/html/hasFeature02.xml b/test/testcases/tests/level2/html/hasFeature02.xml.kfail
index 560a60c..560a60c 100644
--- a/test/testcases/tests/level2/html/hasFeature02.xml
+++ b/test/testcases/tests/level2/html/hasFeature02.xml.kfail
diff --git a/test/testcases/tests/level2/html/hasFeature03.xml b/test/testcases/tests/level2/html/hasFeature03.xml.kfail
index 49fb3b5..49fb3b5 100644
--- a/test/testcases/tests/level2/html/hasFeature03.xml
+++ b/test/testcases/tests/level2/html/hasFeature03.xml.kfail
diff --git a/test/testcases/tests/level2/html/hasFeature04.xml b/test/testcases/tests/level2/html/hasFeature04.xml.kfail
index 077b913..077b913 100644
--- a/test/testcases/tests/level2/html/hasFeature04.xml
+++ b/test/testcases/tests/level2/html/hasFeature04.xml.kfail
diff --git a/test/testcases/tests/level2/html/hasFeature05.xml b/test/testcases/tests/level2/html/hasFeature05.xml.kfail
index c79f90b..c79f90b 100644
--- a/test/testcases/tests/level2/html/hasFeature05.xml
+++ b/test/testcases/tests/level2/html/hasFeature05.xml.kfail
diff --git a/test/testcases/tests/level2/html/hasFeature06.xml b/test/testcases/tests/level2/html/hasFeature06.xml.kfail
index 162e5cf..162e5cf 100644
--- a/test/testcases/tests/level2/html/hasFeature06.xml
+++ b/test/testcases/tests/level2/html/hasFeature06.xml.kfail
diff --git a/test/testcases/tests/level2/html/metadata.xml b/test/testcases/tests/level2/html/metadata.xml.kfail
index be6715a..be6715a 100644
--- a/test/testcases/tests/level2/html/metadata.xml
+++ b/test/testcases/tests/level2/html/metadata.xml.kfail
diff --git a/test/testutils/domtsasserts.c b/test/testutils/domtsasserts.c
index 41cacf2..cbb8ed0 100644
--- a/test/testutils/domtsasserts.c
+++ b/test/testutils/domtsasserts.c
@@ -124,7 +124,10 @@ bool is_equals_list(list *expected, list *actual, bool ignoreCase)
comparator rcmp = NULL;
if (expected->type == INT)
+ {
cmp = int_comparator;
+ rcmp = int_comparator;
+ }
if (expected->type == STRING) {
if (actual->type == DOM_STRING) {
cmp = ignoreCase? str_icmp : str_cmp;
@@ -139,6 +142,7 @@ bool is_equals_list(list *expected, list *actual, bool ignoreCase)
}
assert(cmp != NULL);
+ assert(rcmp != NULL);
return list_contains_all(expected, actual, cmp) && list_contains_all(actual, expected, rcmp);
}