1# FIXME: this should all be confirmed against what a DTD says 2# (probably in a test; this may not match the DTD exactly, but we 3# should document just how it differs). 4 5# Data taken from http://www.w3.org/TR/html401/index/elements.html 6# and http://www.w3.org/community/webed/wiki/HTML/New_HTML5_Elements 7# for html5_tags. 8 9empty_tags=frozenset([ 10'area','base','basefont','br','col','frame','hr', 11'img','input','isindex','link','meta','param']) 12 13deprecated_tags=frozenset([ 14'applet','basefont','center','dir','font','isindex', 15'menu','s','strike','u']) 16 17# archive actually takes a space-separated list of URIs 18link_attrs=frozenset([ 19'action','archive','background','cite','classid', 20'codebase','data','href','longdesc','profile','src', 21'usemap', 22# Not standard: 23'dynsrc','lowsrc', 24]) 25 26# Not in the HTML 4 spec: 27# onerror, onresize 28event_attrs=frozenset([ 29'onblur','onchange','onclick','ondblclick','onerror', 30'onfocus','onkeydown','onkeypress','onkeyup','onload', 31'onmousedown','onmousemove','onmouseout','onmouseover', 32'onmouseup','onreset','onresize','onselect','onsubmit', 33'onunload', 34]) 35 36safe_attrs=frozenset([ 37'abbr','accept','accept-charset','accesskey','action','align', 38'alt','axis','border','cellpadding','cellspacing','char','charoff', 39'charset','checked','cite','class','clear','cols','colspan', 40'color','compact','coords','datetime','dir','disabled','enctype', 41'for','frame','headers','height','href','hreflang','hspace','id', 42'ismap','label','lang','longdesc','maxlength','media','method', 43'multiple','name','nohref','noshade','nowrap','prompt','readonly', 44'rel','rev','rows','rowspan','rules','scope','selected','shape', 45'size','span','src','start','summary','tabindex','target','title', 46'type','usemap','valign','value','vspace','width']) 47 48# From http://htmlhelp.com/reference/html40/olist.html 49top_level_tags=frozenset([ 50'html','head','body','frameset', 51]) 52 53head_tags=frozenset([ 54'base','isindex','link','meta','script','style','title', 55]) 56 57general_block_tags=frozenset([ 58'address', 59'blockquote', 60'center', 61'del', 62'div', 63'h1', 64'h2', 65'h3', 66'h4', 67'h5', 68'h6', 69'hr', 70'ins', 71'isindex', 72'noscript', 73'p', 74'pre', 75]) 76 77list_tags=frozenset([ 78'dir','dl','dt','dd','li','menu','ol','ul', 79]) 80 81table_tags=frozenset([ 82'table','caption','colgroup','col', 83'thead','tfoot','tbody','tr','td','th', 84]) 85 86# just this one from 87# http://www.georgehernandez.com/h/XComputers/HTML/2BlockLevel.htm 88block_tags=general_block_tags|list_tags|table_tags|frozenset([ 89# Partial form tags 90'fieldset','form','legend','optgroup','option', 91]) 92 93form_tags=frozenset([ 94'form','button','fieldset','legend','input','label', 95'select','optgroup','option','textarea', 96]) 97 98special_inline_tags=frozenset([ 99'a','applet','basefont','bdo','br','embed','font','iframe',100'img','map','area','object','param','q','script',101'span','sub','sup',102])103104phrase_tags=frozenset([105'abbr','acronym','cite','code','del','dfn','em',106'ins','kbd','samp','strong','var',107])108109font_style_tags=frozenset([110'b','big','i','s','small','strike','tt','u',111])112113frame_tags=frozenset([114'frameset','frame','noframes',115])116117html5_tags=frozenset([118'article','aside','audio','canvas','command','datalist',119'details','embed','figcaption','figure','footer','header',120'hgroup','keygen','mark','math','meter','nav','output',121'progress','rp','rt','ruby','section','source','summary',122'svg','time','track','video','wbr'123])124125# These tags aren't standard126nonstandard_tags=frozenset(['blink','marquee'])127128129tags=(top_level_tags|head_tags|general_block_tags|list_tags130|table_tags|form_tags|special_inline_tags|phrase_tags131|font_style_tags|nonstandard_tags|html5_tags)132