blob: cbe5792c3b8d6b7517f4d7c57d83c1483265fd95 [file] [log] [blame]
Bram Moolenaarf75a9632005-09-13 21:20:47 +00001" Vim completion script
2" Language: XHTML 1.0 Strict
3" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
Bram Moolenaar362e1a32006-03-06 23:29:24 +00004" Last Change: 2006 Mar 5
Bram Moolenaarf75a9632005-09-13 21:20:47 +00005
6function! htmlcomplete#CompleteTags(findstart, base)
7 if a:findstart
8 " locate the start of the word
9 let line = getline('.')
10 let start = col('.') - 1
Bram Moolenaar28c258f2006-01-25 22:02:51 +000011 let curline = line('.')
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000012 let compl_begin = col('.') - 2
13 while start >= 0 && line[start - 1] =~ '\(\k\|[:.-]\)'
14 let start -= 1
Bram Moolenaarf75a9632005-09-13 21:20:47 +000015 endwhile
Bram Moolenaar8b6144b2006-02-08 09:20:24 +000016 " Handling of entities {{{
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000017 if start >= 0 && line[start - 1] =~ '&'
18 let b:entitiescompl = 1
19 let b:compl_context = ''
20 return start
21 endif
Bram Moolenaar8b6144b2006-02-08 09:20:24 +000022 " }}}
23 " Handling of <style> tag {{{
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000024 let stylestart = searchpair('<style\>', '', '<\/style\>', "bnW")
25 let styleend = searchpair('<style\>', '', '<\/style\>', "nW")
26 if stylestart != 0 && styleend != 0
Bram Moolenaar28c258f2006-01-25 22:02:51 +000027 if stylestart <= curline && styleend >= curline
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000028 let start = col('.') - 1
29 let b:csscompl = 1
30 while start >= 0 && line[start - 1] =~ '\(\k\|-\)'
31 let start -= 1
32 endwhile
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +000033 endif
34 endif
Bram Moolenaar8b6144b2006-02-08 09:20:24 +000035 " }}}
36 " Handling of <script> tag {{{
Bram Moolenaarb8a7b562006-02-01 21:47:16 +000037 let scriptstart = searchpair('<script\>', '', '<\/script\>', "bnW")
38 let scriptend = searchpair('<script\>', '', '<\/script\>', "nW")
39 if scriptstart != 0 && scriptend != 0
40 if scriptstart <= curline && scriptend >= curline
41 let start = col('.') - 1
42 let b:jscompl = 1
43 let b:jsrange = [scriptstart, scriptend]
Bram Moolenaar1d2ba7f2006-02-14 22:29:30 +000044 while start >= 0 && line[start - 1] =~ '\k'
Bram Moolenaarb8a7b562006-02-01 21:47:16 +000045 let start -= 1
46 endwhile
Bram Moolenaar8b6144b2006-02-08 09:20:24 +000047 " We are inside of <script> tag. But we should also get contents
48 " of all linked external files and (secondary, less probably) other <script> tags
49 " This logic could possible be done in separate function - may be
50 " reused in events scripting (also with option could be reused for
51 " CSS
52 let b:js_extfiles = []
53 let l = line('.')
54 let c = col('.')
55 call cursor(1,1)
56 while search('<\@<=script\>', 'W') && line('.') <= l
57 if synIDattr(synID(line('.'),col('.')-1,0),"name") !~? 'comment'
58 let sname = matchstr(getline('.'), '<script[^>]*src\s*=\s*\([''"]\)\zs.\{-}\ze\1')
59 if filereadable(sname)
60 let b:js_extfiles += readfile(sname)
61 endif
62 endif
63 endwhile
64 call cursor(1,1)
65 let js_scripttags = []
66 while search('<script\>', 'W') && line('.') < l
67 if matchstr(getline('.'), '<script[^>]*src') == ''
68 let js_scripttag = getline(line('.'), search('</script>', 'W'))
69 let js_scripttags += js_scripttag
70 endif
71 endwhile
72 let b:js_extfiles += js_scripttags
73 call cursor(l,c)
74 unlet! l c
Bram Moolenaarb8a7b562006-02-01 21:47:16 +000075 endif
76 endif
Bram Moolenaar8b6144b2006-02-08 09:20:24 +000077 " }}}
Bram Moolenaarb8a7b562006-02-01 21:47:16 +000078 if !exists("b:csscompl") && !exists("b:jscompl")
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000079 let b:compl_context = getline('.')[0:(compl_begin)]
Bram Moolenaar28c258f2006-01-25 22:02:51 +000080 if b:compl_context !~ '<[^>]*$'
Bram Moolenaar8b6144b2006-02-08 09:20:24 +000081 " Look like we may have broken tag. Check previous lines.
Bram Moolenaar28c258f2006-01-25 22:02:51 +000082 let i = 1
83 while 1
84 let context_line = getline(curline-i)
85 if context_line =~ '<[^>]*$'
86 " Yep, this is this line
87 let context_lines = getline(curline-i, curline)
88 let b:compl_context = join(context_lines, ' ')
89 break
90 elseif context_line =~ '>[^<]*$'
91 " Normal tag line, no need for completion at all
92 let b:compl_context = ''
93 break
94 endif
95 let i += 1
96 endwhile
97 " Make sure we don't have counter
98 unlet! i
99 endif
Bram Moolenaar09df3122006-01-23 22:23:09 +0000100 let b:compl_context = matchstr(b:compl_context, '.*\zs<.*')
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000101 " Return proper start for on-events. Without that beginning of
102 " completion will be badly reported
103 if b:compl_context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
104 let start = col('.') - 1
Bram Moolenaar1d2ba7f2006-02-14 22:29:30 +0000105 while start >= 0 && line[start - 1] =~ '\k'
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000106 let start -= 1
107 endwhile
108 endif
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000109 else
110 let b:compl_context = getline('.')[0:compl_begin]
111 endif
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000112 return start
113 else
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000114 " Initialize base return lists
115 let res = []
116 let res2 = []
117 " a:base is very short - we need context
118 let context = b:compl_context
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000119 " Check if we should do CSS completion inside of <style> tag
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000120 " or JS completion inside of <script> tag
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000121 if exists("b:csscompl")
122 unlet! b:csscompl
Bram Moolenaar09df3122006-01-23 22:23:09 +0000123 let context = b:compl_context
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000124 unlet! b:compl_context
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000125 return csscomplete#CompleteCSS(0, context)
Bram Moolenaarb8a7b562006-02-01 21:47:16 +0000126 elseif exists("b:jscompl")
127 unlet! b:jscompl
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000128 return javascriptcomplete#CompleteJS(0, a:base)
Bram Moolenaar09df3122006-01-23 22:23:09 +0000129 else
130 if len(b:compl_context) == 0 && !exists("b:entitiescompl")
131 return []
132 endif
133 let context = matchstr(b:compl_context, '.\zs.*')
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000134 endif
Bram Moolenaar09df3122006-01-23 22:23:09 +0000135 unlet! b:compl_context
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000136 " Entities completion {{{
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000137 if exists("b:entitiescompl")
138 unlet! b:entitiescompl
139
Bram Moolenaara5792f52005-11-23 21:25:05 +0000140 if !exists("g:xmldata_xhtml10s")
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000141 "runtime! autoload/xml/xhtml10s.vim
142 call htmlcomplete#LoadData()
Bram Moolenaara5792f52005-11-23 21:25:05 +0000143 endif
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000144
Bram Moolenaara5792f52005-11-23 21:25:05 +0000145 let entities = g:xmldata_xhtml10s['vimxmlentities']
146
Bram Moolenaar09df3122006-01-23 22:23:09 +0000147 if len(a:base) == 1
148 for m in entities
149 if m =~ '^'.a:base
150 call add(res, m.';')
151 endif
152 endfor
153 return res
154 else
155 for m in entities
156 if m =~? '^'.a:base
157 call add(res, m.';')
158 elseif m =~? a:base
159 call add(res2, m.';')
160 endif
161 endfor
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000162
Bram Moolenaar09df3122006-01-23 22:23:09 +0000163 return res + res2
164 endif
165
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000166
167 endif
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000168 " }}}
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000169 if context =~ '>'
170 " Generally if context contains > it means we are outside of tag and
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000171 " should abandon action - with one exception: <style> span { bo
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000172 if context =~ 'style[^>]\{-}>[^<]\{-}$'
173 return csscomplete#CompleteCSS(0, context)
Bram Moolenaarb8a7b562006-02-01 21:47:16 +0000174 elseif context =~ 'script[^>]\{-}>[^<]\{-}$'
175 let b:jsrange = [line('.'), search('<\/script\>', 'nW')]
176 return javascriptcomplete#CompleteJS(0, context)
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000177 else
178 return []
179 endif
180 endif
181
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000182 " If context contains > it means we are already outside of tag and we
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000183 " should abandon action
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000184 " If context contains white space it is attribute.
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000185 " It can be also value of attribute.
186 " We have to get first word to offer proper completions
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000187 if context == ''
188 let tag = ''
189 else
190 let tag = split(context)[0]
191 endif
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000192 " Get last word, it should be attr name
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000193 let attr = matchstr(context, '.*\s\zs.*')
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000194 " Possible situations where any prediction would be difficult:
195 " 1. Events attributes
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000196 if context =~ '\s'
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000197 " Sort out style, class, and on* cases
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000198 if context =~? "\\(on[a-z]*\\|id\\|style\\|class\\)\\s*=\\s*[\"']"
199 " Id, class completion {{{
200 if context =~? "\\(id\\|class\\)\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
201 if context =~? "class\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
Bram Moolenaar1e015462005-09-25 22:16:38 +0000202 let search_for = "class"
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000203 elseif context =~? "id\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
Bram Moolenaar1e015462005-09-25 22:16:38 +0000204 let search_for = "id"
205 endif
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000206 " Handle class name completion
207 " 1. Find lines of <link stylesheet>
208 " 1a. Check file for @import
209 " 2. Extract filename(s?) of stylesheet,
210 call cursor(1,1)
211 let head = getline(search('<head\>'), search('<\/head>'))
212 let headjoined = join(copy(head), ' ')
213 if headjoined =~ '<style'
Bram Moolenaara5792f52005-11-23 21:25:05 +0000214 " Remove possibly confusing CSS operators
Bram Moolenaar1e015462005-09-25 22:16:38 +0000215 let stylehead = substitute(headjoined, '+>\*[,', ' ', 'g')
216 if search_for == 'class'
217 let styleheadlines = split(stylehead)
218 let headclasslines = filter(copy(styleheadlines), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
219 else
220 let stylesheet = split(headjoined, '[{}]')
221 " Get all lines which fit id syntax
222 let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
223 " Filter out possible color definitions
224 call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
225 " Filter out complex border definitions
226 call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
227 let templines = join(classlines, ' ')
228 let headclasslines = split(templines)
229 call filter(headclasslines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
230 endif
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000231 let internal = 1
232 else
233 let internal = 0
234 endif
235 let styletable = []
236 let secimportfiles = []
237 let filestable = filter(copy(head), "v:val =~ '\\(@import\\|link.*stylesheet\\)'")
238 for line in filestable
239 if line =~ "@import"
240 let styletable += [matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")]
241 elseif line =~ "<link"
242 let styletable += [matchstr(line, "href\\s*=\\s*[\"']\\zs\\f\\+\\ze")]
243 endif
244 endfor
Bram Moolenaar1e015462005-09-25 22:16:38 +0000245 for file in styletable
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000246 if filereadable(file)
247 let stylesheet = readfile(file)
248 let secimport = filter(copy(stylesheet), "v:val =~ '@import'")
249 if len(secimport) > 0
250 for line in secimport
Bram Moolenaar1e015462005-09-25 22:16:38 +0000251 let secfile = matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")
252 let secfile = fnamemodify(file, ":p:h").'/'.secfile
253 let secimportfiles += [secfile]
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000254 endfor
255 endif
256 endif
257 endfor
258 let cssfiles = styletable + secimportfiles
259 let classes = []
260 for file in cssfiles
261 if filereadable(file)
262 let stylesheet = readfile(file)
Bram Moolenaar1e015462005-09-25 22:16:38 +0000263 let stylefile = join(stylesheet, ' ')
264 let stylefile = substitute(stylefile, '+>\*[,', ' ', 'g')
265 if search_for == 'class'
266 let stylesheet = split(stylefile)
267 let classlines = filter(copy(stylesheet), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
268 else
269 let stylesheet = split(stylefile, '[{}]')
270 " Get all lines which fit id syntax
271 let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
272 " Filter out possible color definitions
273 call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
274 " Filter out complex border definitions
275 call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
276 let templines = join(classlines, ' ')
277 let stylelines = split(templines)
278 let classlines = filter(stylelines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
279
280 endif
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000281 endif
282 " We gathered classes definitions from all external files
283 let classes += classlines
284 endfor
285 if internal == 1
286 let classes += headclasslines
287 endif
Bram Moolenaar1e015462005-09-25 22:16:38 +0000288
289 if search_for == 'class'
290 let elements = {}
291 for element in classes
292 if element =~ '^\.'
293 let class = matchstr(element, '^\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
294 let class = substitute(class, ':.*', '', '')
295 if has_key(elements, 'common')
296 let elements['common'] .= ' '.class
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000297 else
Bram Moolenaar1e015462005-09-25 22:16:38 +0000298 let elements['common'] = class
299 endif
300 else
301 let class = matchstr(element, '[a-zA-Z1-6]*\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
302 let tagname = tolower(matchstr(element, '[a-zA-Z1-6]*\ze.'))
303 if tagname != ''
304 if has_key(elements, tagname)
305 let elements[tagname] .= ' '.class
306 else
307 let elements[tagname] = class
308 endif
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000309 endif
310 endif
Bram Moolenaar1e015462005-09-25 22:16:38 +0000311 endfor
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000312
Bram Moolenaar1e015462005-09-25 22:16:38 +0000313 if has_key(elements, tag) && has_key(elements, 'common')
314 let values = split(elements[tag]." ".elements['common'])
315 elseif has_key(elements, tag) && !has_key(elements, 'common')
316 let values = split(elements[tag])
317 elseif !has_key(elements, tag) && has_key(elements, 'common')
318 let values = split(elements['common'])
319 else
320 return []
321 endif
322
323 elseif search_for == 'id'
324 " Find used IDs
325 " 1. Catch whole file
326 let filelines = getline(1, line('$'))
327 " 2. Find lines with possible id
328 let used_id_lines = filter(filelines, 'v:val =~ "id\\s*=\\s*[\"''][a-zA-Z0-9_-]\\+"')
329 " 3a. Join all filtered lines
330 let id_string = join(used_id_lines, ' ')
331 " 3b. And split them to be sure each id is in separate item
332 let id_list = split(id_string, 'id\s*=\s*')
333 " 4. Extract id values
334 let used_id = map(id_list, 'matchstr(v:val, "[\"'']\\zs[a-zA-Z0-9_-]\\+\\ze")')
335 let joined_used_id = ','.join(used_id, ',').','
336
337 let allvalues = map(classes, 'matchstr(v:val, ".*#\\zs[a-zA-Z0-9_-]\\+")')
338
339 let values = []
340
341 for element in classes
342 if joined_used_id !~ ','.element.','
343 let values += [element]
344 endif
345
346 endfor
347
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000348 endif
349
350 " We need special version of sbase
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000351 let classbase = matchstr(context, ".*[\"']")
Bram Moolenaar1e015462005-09-25 22:16:38 +0000352 let classquote = matchstr(classbase, '.$')
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000353
354 let entered_class = matchstr(attr, ".*=\\s*[\"']\\zs.*")
355
356 for m in sort(values)
357 if m =~? '^'.entered_class
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000358 call add(res, m . classquote)
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000359 elseif m =~? entered_class
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000360 call add(res2, m . classquote)
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000361 endif
362 endfor
363
364 return res + res2
365
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000366 elseif context =~? "style\\s*=\\s*[\"'][^\"']*$"
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000367 return csscomplete#CompleteCSS(0, context)
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000368
369 endif
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000370 " }}}
371 " Complete on-events {{{
372 if context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
373 " We have to:
374 " 1. Find external files
375 let b:js_extfiles = []
376 let l = line('.')
377 let c = col('.')
378 call cursor(1,1)
379 while search('<\@<=script\>', 'W') && line('.') <= l
380 if synIDattr(synID(line('.'),col('.')-1,0),"name") !~? 'comment'
381 let sname = matchstr(getline('.'), '<script[^>]*src\s*=\s*\([''"]\)\zs.\{-}\ze\1')
382 if filereadable(sname)
383 let b:js_extfiles += readfile(sname)
384 endif
385 endif
386 endwhile
387 " 2. Find at least one <script> tag
388 call cursor(1,1)
389 let js_scripttags = []
390 while search('<script\>', 'W') && line('.') < l
391 if matchstr(getline('.'), '<script[^>]*src') == ''
392 let js_scripttag = getline(line('.'), search('</script>', 'W'))
393 let js_scripttags += js_scripttag
394 endif
395 endwhile
396 let b:js_extfiles += js_scripttags
397
398 " 3. Proper call for javascriptcomplete#CompleteJS
399 call cursor(l,c)
Bram Moolenaar1d2ba7f2006-02-14 22:29:30 +0000400 let js_context = matchstr(a:base, '\k\+$')
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000401 let js_shortcontext = substitute(a:base, js_context.'$', '', '')
402 let b:compl_context = context
403 let b:jsrange = [l, l]
404 unlet! l c
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000405 return javascriptcomplete#CompleteJS(0, js_context)
406
407 endif
408
409 " }}}
410 let stripbase = matchstr(context, ".*\\(on[a-zA-Z]*\\|style\\|class\\)\\s*=\\s*[\"']\\zs.*")
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000411 " Now we have context stripped from all chars up to style/class.
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000412 " It may fail with some strange style value combinations.
413 if stripbase !~ "[\"']"
414 return []
415 endif
416 endif
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000417 " Value of attribute completion {{{
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000418 " If attr contains =\s*[\"'] we catched value of attribute
419 if attr =~ "=\s*[\"']"
420 " Let do attribute specific completion
421 let attrname = matchstr(attr, '.*\ze\s*=')
422 let entered_value = matchstr(attr, ".*=\\s*[\"']\\zs.*")
423 let values = []
424 if attrname == 'media'
425 let values = ["screen", "tty", "tv", "projection", "handheld", "print", "braille", "aural", "all"]
426 elseif attrname == 'xml:space'
427 let values = ["preserve"]
428 elseif attrname == 'shape'
Bram Moolenaar8349fd72005-10-12 20:52:20 +0000429 let values = ["rect", "circle", "poly", "default"]
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000430 elseif attrname == 'valuetype'
431 let values = ["data", "ref", "object"]
432 elseif attrname == 'method'
433 let values = ["get", "post"]
Bram Moolenaar4c903f92005-09-14 21:32:32 +0000434 elseif attrname == 'dir'
435 let values = ["ltr", "rtl"]
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000436 elseif attrname == 'frame'
437 let values = ["void", "above", "below", "hsides", "lhs", "rhs", "vsides", "box", "border"]
438 elseif attrname == 'rules'
439 let values = ["none", "groups", "rows", "all"]
440 elseif attrname == 'align'
441 let values = ["left", "center", "right", "justify", "char"]
442 elseif attrname == 'valign'
443 let values = ["top", "middle", "bottom", "baseline"]
444 elseif attrname == 'scope'
445 let values = ["row", "col", "rowgroup", "colgroup"]
446 elseif attrname == 'href'
447 " Now we are looking for local anchors defined by name or id
448 if entered_value =~ '^#'
449 let file = join(getline(1, line('$')), ' ')
450 " Split it be sure there will be one id/name element in
451 " item, it will be also first word [a-zA-Z0-9_-] in element
452 let oneelement = split(file, "\\(meta \\)\\@<!\\(name\\|id\\)\\s*=\\s*[\"']")
453 for i in oneelement
454 let values += ['#'.matchstr(i, "^[a-zA-Z][a-zA-Z0-9%_-]*")]
455 endfor
456 endif
457 elseif attrname == 'type'
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000458 if context =~ '^input'
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000459 let values = ["text", "password", "checkbox", "radio", "submit", "reset", "file", "hidden", "image", "button"]
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000460 elseif context =~ '^button'
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000461 let values = ["button", "submit", "reset"]
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000462 elseif context =~ '^style'
Bram Moolenaar1e015462005-09-25 22:16:38 +0000463 let values = ["text/css"]
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000464 elseif context =~ '^script'
Bram Moolenaar1e015462005-09-25 22:16:38 +0000465 let values = ["text/javascript"]
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000466 endif
467 else
468 return []
469 endif
470
471 if len(values) == 0
472 return []
473 endif
474
475 " We need special version of sbase
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000476 let attrbase = matchstr(context, ".*[\"']")
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000477 let attrquote = matchstr(attrbase, '.$')
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000478
479 for m in values
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000480 " This if is needed to not offer all completions as-is
481 " alphabetically but sort them. Those beginning with entered
482 " part will be as first choices
483 if m =~ '^'.entered_value
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000484 call add(res, m . attrquote.' ')
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000485 elseif m =~ entered_value
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000486 call add(res2, m . attrquote.' ')
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000487 endif
488 endfor
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000489
490 return res + res2
491
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000492 endif
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000493 " }}}
494 " Attribute completion {{{
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000495 " Shorten context to not include last word
496 let sbase = matchstr(context, '.*\ze\s.*')
Bram Moolenaar1d2ba7f2006-02-14 22:29:30 +0000497
498 " Load data {{{
499 if !exists("g:xmldata_xhtml10s")
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000500 "runtime! autoload/xml/xhtml10s.vim
501 call htmlcomplete#LoadData()
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000502 endif
Bram Moolenaar1d2ba7f2006-02-14 22:29:30 +0000503 " }}}
504 "
505 let attrs = keys(g:xmldata_xhtml10s[tag][1])
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000506
507 for m in sort(attrs)
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000508 if m =~ '^'.attr
Bram Moolenaar1d2ba7f2006-02-14 22:29:30 +0000509 call add(res, m)
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000510 elseif m =~ attr
Bram Moolenaar1d2ba7f2006-02-14 22:29:30 +0000511 call add(res2, m)
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000512 endif
513 endfor
Bram Moolenaar1d2ba7f2006-02-14 22:29:30 +0000514 let menu = res + res2
515 if has_key(g:xmldata_xhtml10s, 'vimxmlattrinfo')
516 let final_menu = []
517 for i in range(len(menu))
518 let item = menu[i]
519 if has_key(g:xmldata_xhtml10s['vimxmlattrinfo'], item)
520 let m_menu = g:xmldata_xhtml10s['vimxmlattrinfo'][item][0]
521 let m_info = g:xmldata_xhtml10s['vimxmlattrinfo'][item][1]
522 if m_menu !~ 'Bool'
523 let item .= '="'
524 endif
525 else
526 let m_menu = ''
527 let m_info = ''
528 let item .= '="'
529 endif
530 let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
531 endfor
532 else
533 let final_menu = map(menu, 'v:val."=\""')
534 endif
535 return final_menu
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000536
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000537 endif
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000538 " }}}
539 " Close tag {{{
Bram Moolenaar6b730e12005-09-16 21:47:57 +0000540 let b:unaryTagsStack = "base meta link hr br param img area input col"
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000541 if context =~ '^\/'
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000542 if context =~ '^\/.'
543 return []
544 else
545 let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
546 return [opentag.">"]
547 endif
Bram Moolenaar4c903f92005-09-14 21:32:32 +0000548 endif
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000549 " Load data {{{
Bram Moolenaara5792f52005-11-23 21:25:05 +0000550 if !exists("g:xmldata_xhtml10s")
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000551 "runtime! autoload/xml/xhtml10s.vim
552 call htmlcomplete#LoadData()
Bram Moolenaar4c903f92005-09-14 21:32:32 +0000553 endif
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000554 " }}}
555 " Tag completion {{{
Bram Moolenaar7e8fd632006-02-18 22:14:51 +0000556 " Deal with tag completion.
557 let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000558 " MM: TODO: GLOT works always the same but with some weird situation it
559 " behaves as intended in HTML but screws in PHP
560 let g:ot = opentag
561 if opentag == '' || &ft == 'php' && !has_key(g:xmldata_xhtml10s, opentag)
Bram Moolenaar7e8fd632006-02-18 22:14:51 +0000562 " Hack for sometimes failing GetLastOpenTag.
563 " As far as I tested fail isn't GLOT fault but problem
564 " of invalid document - not properly closed tags and other mish-mash.
565 " Also when document is empty. Return list of *all* tags.
566 let tags = keys(g:xmldata_xhtml10s)
567 call filter(tags, 'v:val !~ "^vimxml"')
568 else
569 let tags = g:xmldata_xhtml10s[opentag][0]
570 endif
571 " }}}
Bram Moolenaar4c903f92005-09-14 21:32:32 +0000572
Bram Moolenaarcef9dcc2005-12-06 19:50:41 +0000573 for m in sort(tags)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000574 if m =~ '^'.context
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000575 call add(res, m)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000576 elseif m =~ context
Bram Moolenaarbfd8fc02005-09-20 23:22:24 +0000577 call add(res2, m)
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000578 endif
Bram Moolenaar6b730e12005-09-16 21:47:57 +0000579 endfor
Bram Moolenaar1d2ba7f2006-02-14 22:29:30 +0000580 let menu = res + res2
581 if has_key(g:xmldata_xhtml10s, 'vimxmltaginfo')
582 let final_menu = []
583 for i in range(len(menu))
584 let item = menu[i]
585 if has_key(g:xmldata_xhtml10s['vimxmltaginfo'], item)
586 let m_menu = g:xmldata_xhtml10s['vimxmltaginfo'][item][0]
587 let m_info = g:xmldata_xhtml10s['vimxmltaginfo'][item][1]
588 else
589 let m_menu = ''
590 let m_info = ''
591 endif
592 let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
593 endfor
594 else
595 let final_menu = menu
596 endif
597 return final_menu
Bram Moolenaar6b730e12005-09-16 21:47:57 +0000598
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000599 " }}}
Bram Moolenaarf75a9632005-09-13 21:20:47 +0000600 endif
601endfunction
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000602function! htmlcomplete#LoadData()
603let g:xmldata_xhtml10s = {
604\ 'vimxmlentities' : ["AElig", "Aacute", "Acirc", "Agrave", "Alpha", "Aring", "Atilde", "Auml", "Beta", "Ccedil", "Chi", "Dagger", "Delta", "ETH", "Eacute", "Ecirc", "Egrave", "Epsilon", "Eta", "Euml", "Gamma", "Iacute", "Icirc", "Igrave", "Iota", "Iuml", "Kappa", "Lambda", "Mu", "Ntilde", "Nu", "OElig", "Oacute", "Ocirc", "Ograve", "Omega", "Omicron", "Oslash", "Otilde", "Ouml", "Phi", "Pi", "Prime", "Psi", "Rho", "Scaron", "Sigma", "THORN", "TITY", "Tau", "Theta", "Uacute", "Ucirc", "Ugrave", "Upsilon", "Uuml", "Xi", "Yacute", "Yuml", "Zeta", "amp", "aacute", "acirc", "acute", "aelig", "agrave", "alefsym", "alpha", "and", "ang", "apos", "aring", "asymp", "atilde", "auml", "bdquo", "beta", "brvbar", "bull", "cap", "ccedil", "cedil", "cent", "chi", "circ", "clubs", "copy", "cong", "crarr", "cup", "curren", "dArr", "dagger", "darr", "deg", "delta", "diams", "divide", "eacute", "ecirc", "egrave", "empty", "ensp", "emsp", "epsilon", "equiv", "eta", "eth", "euro", "euml", "exist", "fnof", "forall", "frac12", "frac14", "frac34", "frasl", "gt", "gamma", "ge", "hArr", "harr", "hearts", "hellip", "iacute", "icirc", "iexcl", "igrave", "image", "infin", "int", "iota", "iquest", "isin", "iuml", "kappa", "lt", "laquo", "lArr", "lambda", "lang", "larr", "lceil", "ldquo", "le", "lfloor", "lowast", "loz", "lrm", "lsaquo", "lsquo", "macr", "mdash", "micro", "middot", "minus", "mu", "nbsp", "nabla", "ndash", "ne", "ni", "not", "notin", "nsub", "ntilde", "nu", "oacute", "ocirc", "oelig", "ograve", "oline", "omega", "omicron", "oplus", "or", "ordf", "ordm", "oslash", "otilde", "otimes", "ouml", "para", "part", "permil", "perp", "phi", "pi", "piv", "plusmn", "pound", "prime", "prod", "prop", "psi", "quot", "rArr", "raquo", "radic", "rang", "rarr", "rceil", "rdquo", "real", "reg", "rfloor", "rho", "rlm", "rsaquo", "rsquo", "sbquo", "scaron", "sdot", "sect", "shy", "sigma", "sigmaf", "sim", "spades", "sub", "sube", "sum", "sup", "sup1", "sup2", "sup3", "supe", "szlig", "tau", "there4", "theta", "thetasym", "thinsp", "thorn", "tilde", "times", "trade", "uArr", "uacute", "uarr", "ucirc", "ugrave", "uml", "upsih", "upsilon", "uuml", "weierp", "xi", "yacute", "yen", "yuml", "zeta", "zwj", "zwnj"],
605\ 'vimxmlattrinfo' : {
606\ 'accept' : ['ContentType', ''],
607\ 'accesskey' : ['Character', ''],
608\ 'action' : ['*URI', ''],
609\ 'align' : ['String', ''],
610\ 'alt' : ['*Text', ''],
611\ 'archive' : ['UriList', ''],
612\ 'axis' : ['CDATA', ''],
613\ 'border' : ['Pixels', ''],
614\ 'cellpadding' : ['Length', ''],
615\ 'cellspacing' : ['Length', ''],
616\ 'char' : ['Character', ''],
617\ 'charoff' : ['Length', ''],
618\ 'charset' : ['LangCode', ''],
619\ 'checked' : ['Bool', ''],
620\ 'class' : ['CDATA', 'Name of class, used for connecting element with style'],
621\ 'codetype' : ['ContentType', ''],
622\ 'cols' : ['*Number', ''],
623\ 'colspan' : ['Number', ''],
624\ 'content' : ['*CDATA', ''],
625\ 'coords' : ['Coords', ''],
626\ 'data' : ['URI', ''],
627\ 'datetime' : ['DateTime', ''],
628\ 'declare' : ['Bool', ''],
629\ 'defer' : ['Bool', ''],
630\ 'dir' : ['String', ''],
631\ 'disabled' : ['Bool', ''],
632\ 'enctype' : ['ContentType', ''],
633\ 'for' : ['ID', ''],
634\ 'headers' : ['IDREFS', ''],
635\ 'height' : ['Number', ''],
636\ 'href' : ['*URI', ''],
637\ 'hreflang' : ['LangCode', ''],
638\ 'id' : ['ID', 'Unique string'],
639\ 'ismap' : ['Bool', ''],
640\ 'label' : ['*Text', ''],
641\ 'lang' : ['LangCode', ''],
642\ 'longdesc' : ['URI', ''],
643\ 'maxlength' : ['Number', ''],
644\ 'media' : ['MediaDesc', ''],
645\ 'method' : ['String', ''],
646\ 'multiple' : ['Bool', ''],
647\ 'name' : ['CDATA', ''],
648\ 'nohref' : ['Bool', ''],
649\ 'onblur' : ['Script', ''],
650\ 'onchange' : ['Script', ''],
651\ 'onclick' : ['Script', ''],
652\ 'ondblclick' : ['Script', ''],
653\ 'onfocus' : ['Script', ''],
654\ 'onkeydown' : ['Script', ''],
655\ 'onkeypress' : ['Script', ''],
656\ 'onkeyup' : ['Script', ''],
657\ 'onload' : ['Script', ''],
658\ 'onmousedown' : ['Script', ''],
659\ 'onmousemove' : ['Script', ''],
660\ 'onmouseout' : ['Script', ''],
661\ 'onmouseover' : ['Script', ''],
662\ 'onmouseup' : ['Script', ''],
663\ 'onreset' : ['Script', ''],
664\ 'onselect' : ['Script', ''],
665\ 'onsubmit' : ['Script', ''],
666\ 'onunload' : ['Script', ''],
667\ 'profile' : ['URI', ''],
668\ 'readonly' : ['Bool', ''],
669\ 'rel' : ['LinkTypes', ''],
670\ 'rev' : ['LinkTypes', ''],
671\ 'rows' : ['*Number', ''],
672\ 'rules' : ['String', ''],
673\ 'scheme' : ['CDATA', ''],
674\ 'selected' : ['Bool', ''],
675\ 'shape' : ['Shape', ''],
676\ 'size' : ['CDATA', ''],
677\ 'span' : ['Number', ''],
678\ 'src' : ['*URI', ''],
679\ 'standby' : ['Text', ''],
680\ 'style' : ['StyleSheet', ''],
681\ 'summary' : ['*Text', ''],
682\ 'tabindex' : ['Number', ''],
683\ 'title' : ['Text', ''],
684\ 'type' : ['*ContentType', ''],
685\ 'usemap' : ['URI', ''],
686\ 'valign' : ['String', ''],
687\ 'valuetype' : ['String', ''],
688\ 'width' : ['Number', ''],
689\ 'xmlns' : ['URI', '']
690\ },
691\ 'vimxmltaginfo' : {
692\ 'base' : ['/>', ''],
693\ 'meta' : ['/>', ''],
694\ 'link' : ['/>', ''],
695\ 'img' : ['/>', ''],
696\ 'hr' : ['/>', ''],
697\ 'br' : ['/>', ''],
698\ 'param' : ['/>', ''],
699\ 'area' : ['/>', ''],
700\ 'input' : ['/>', ''],
701\ 'col' : ['/>', '']
702\ },
703\ 'tr' : [
704\ [
705\ 'th',
706\ 'td'
707\ ],
708\ {
709\ 'ondblclick' : [],
710\ 'dir' : [
711\ 'ltr',
712\ 'rtl'
713\ ],
714\ 'onkeydown' : [],
715\ 'onkeyup' : [],
716\ 'onmouseup' : [],
717\ 'id' : [],
718\ 'charoff' : [],
719\ 'onmouseover' : [],
720\ 'lang' : [],
721\ 'align' : [
722\ 'left',
723\ 'center',
724\ 'right',
725\ 'justify',
726\ 'char'
727\ ],
728\ 'valign' : [
729\ 'top',
730\ 'middle',
731\ 'bottom',
732\ 'baseline'
733\ ],
734\ 'style' : [],
735\ 'onmousemove' : [],
736\ 'onmouseout' : [],
737\ 'xml:lang' : [],
738\ 'char' : [],
739\ 'onmousedown' : [],
740\ 'onkeypress' : [],
741\ 'onclick' : [],
742\ 'title' : [],
743\ 'class' : []
744\ }
745\ ],
746\ 'input' : [[],
747\ {
748\ 'ondblclick' : [],
749\ 'onchange' : [],
750\ 'readonly' : [
751\ 'BOOL'
752\ ],
753\ 'onkeydown' : [],
754\ 'onkeyup' : [],
755\ 'onmouseup' : [],
756\ 'id' : [],
757\ 'onmouseover' : [],
758\ 'lang' : [],
759\ 'src' : [],
760\ 'value' : [],
761\ 'name' : [],
762\ 'checked' : [
763\ 'BOOL'
764\ ],
765\ 'onmousedown' : [],
766\ 'onkeypress' : [],
767\ 'onclick' : [],
768\ 'title' : [],
769\ 'class' : [],
770\ 'type' : [
771\ 'text',
772\ 'password',
773\ 'checkbox',
774\ 'radio',
775\ 'submit',
776\ 'reset',
777\ 'file',
778\ 'hidden',
779\ 'image',
780\ 'button'
781\ ],
782\ 'accesskey' : [],
783\ 'disabled' : [
784\ 'BOOL'
785\ ],
786\ 'usemap' : [],
787\ 'dir' : [
788\ 'ltr',
789\ 'rtl'
790\ ],
791\ 'size' : [],
792\ 'onblur' : [],
793\ 'onfocus' : [],
794\ 'maxlength' : [],
795\ 'onselect' : [],
796\ 'accept' : [],
797\ 'alt' : [],
798\ 'tabindex' : [],
799\ 'onmouseout' : [],
800\ 'onmousemove' : [],
801\ 'style' : [],
802\ 'xml:lang' : []
803\ }
804\ ],
805\ 'table' : [
806\ [
807\ 'caption',
808\ 'col',
809\ 'colgroup',
810\ 'thead',
811\ 'tfoot',
812\ 'tbody',
813\ 'tr'
814\ ],
815\ {
816\ 'width' : [],
817\ 'frame' : [
818\ 'void',
819\ 'above',
820\ 'below',
821\ 'hsides',
822\ 'lhs',
823\ 'rhs',
824\ 'vsides',
825\ 'box',
826\ 'border'
827\ ],
828\ 'ondblclick' : [],
829\ 'rules' : [
830\ 'none',
831\ 'groups',
832\ 'rows',
833\ 'cols',
834\ 'all'
835\ ],
836\ 'dir' : [
837\ 'ltr',
838\ 'rtl'
839\ ],
840\ 'onkeydown' : [],
841\ 'summary' : [],
842\ 'onkeyup' : [],
843\ 'cellspacing' : [],
844\ 'onmouseup' : [],
845\ 'id' : [],
846\ 'onmouseover' : [],
847\ 'lang' : [],
848\ 'style' : [],
849\ 'onmousemove' : [],
850\ 'onmouseout' : [],
851\ 'xml:lang' : [],
852\ 'border' : [],
853\ 'onmousedown' : [],
854\ 'onkeypress' : [],
855\ 'cellpadding' : [],
856\ 'onclick' : [],
857\ 'title' : [],
858\ 'class' : []
859\ }
860\ ],
861\ 'form' : [
862\ [
863\ 'p',
864\ 'h1',
865\ 'h2',
866\ 'h3',
867\ 'h4',
868\ 'h5',
869\ 'h6',
870\ 'div',
871\ 'ul',
872\ 'ol',
873\ 'dl',
874\ 'pre',
875\ 'hr',
876\ 'blockquote',
877\ 'address',
878\ 'fieldset',
879\ 'table',
880\ 'ins',
881\ 'del',
882\ 'script',
883\ 'noscript'
884\ ],
885\ {
886\ 'onsubmit' : [],
887\ 'enctype' : [
888\ '',
889\ 'application/x-www-form-urlencoded',
890\ ],
891\ 'ondblclick' : [],
892\ 'dir' : [
893\ 'ltr',
894\ 'rtl'
895\ ],
896\ 'onkeydown' : [],
897\ 'onkeyup' : [],
898\ 'onreset' : [],
899\ 'onmouseup' : [],
900\ 'method' : [
901\ 'get',
902\ 'post'
903\ ],
904\ 'id' : [],
905\ 'onmouseover' : [],
906\ 'accept' : [],
907\ 'lang' : [],
908\ 'style' : [],
909\ 'onmousemove' : [],
910\ 'onmouseout' : [],
911\ 'xml:lang' : [],
912\ 'accept-charset' : [],
913\ 'onmousedown' : [],
914\ 'onkeypress' : [],
915\ 'action' : [],
916\ 'onclick' : [],
917\ 'title' : [],
918\ 'class' : []
919\ }
920\ ],
921\ 'h5' : [
922\ [
923\ 'a',
924\ 'br',
925\ 'span',
926\ 'bdo',
927\ 'object',
928\ 'img',
929\ 'map',
930\ 'tt',
931\ 'i',
932\ 'b',
933\ 'big',
934\ 'small',
935\ 'em',
936\ 'strong',
937\ 'dfn',
938\ 'code',
939\ 'q',
940\ 'sub',
941\ 'sup',
942\ 'samp',
943\ 'kbd',
944\ 'var',
945\ 'cite',
946\ 'abbr',
947\ 'acronym',
948\ 'input',
949\ 'select',
950\ 'textarea',
951\ 'label',
952\ 'button',
953\ 'ins',
954\ 'del',
955\ 'script',
956\ 'noscript'
957\ ],
958\ {
959\ 'onmouseover' : [],
960\ 'lang' : [],
961\ 'onmouseout' : [],
962\ 'onmousemove' : [],
963\ 'style' : [],
964\ 'ondblclick' : [],
965\ 'xml:lang' : [],
966\ 'dir' : [
967\ 'ltr',
968\ 'rtl'
969\ ],
970\ 'onkeydown' : [],
971\ 'onkeyup' : [],
972\ 'onkeypress' : [],
973\ 'onmousedown' : [],
974\ 'onmouseup' : [],
975\ 'id' : [],
976\ 'class' : [],
977\ 'title' : [],
978\ 'onclick' : []
979\ }
980\ ],
981\ 'meta' : [[],
982\ {
983\ 'http-equiv' : [],
984\ 'lang' : [],
985\ 'name' : [],
986\ 'scheme' : [],
987\ 'xml:lang' : [],
988\ 'dir' : [
989\ 'ltr',
990\ 'rtl'
991\ ]
992\ }
993\ ],
994\ 'map' : [
995\ [
996\ 'p',
997\ 'h1',
998\ 'h2',
999\ 'h3',
1000\ 'h4',
1001\ 'h5',
1002\ 'h6',
1003\ 'div',
1004\ 'ul',
1005\ 'ol',
1006\ 'dl',
1007\ 'pre',
1008\ 'hr',
1009\ 'blockquote',
1010\ 'address',
1011\ 'fieldset',
1012\ 'table',
1013\ 'form',
1014\ 'ins',
1015\ 'del',
1016\ 'script',
1017\ 'noscript',
1018\ 'area'
1019\ ],
1020\ {
1021\ 'ondblclick' : [],
1022\ 'dir' : [
1023\ 'ltr',
1024\ 'rtl'
1025\ ],
1026\ 'onkeydown' : [],
1027\ 'onkeyup' : [],
1028\ 'onmouseup' : [],
1029\ 'id' : [],
1030\ 'onmouseover' : [],
1031\ 'lang' : [],
1032\ 'name' : [],
1033\ 'onmousemove' : [],
1034\ 'onmouseout' : [],
1035\ 'style' : [],
1036\ 'xml:lang' : [],
1037\ 'onmousedown' : [],
1038\ 'onkeypress' : [],
1039\ 'title' : [],
1040\ 'onclick' : [],
1041\ 'class' : []
1042\ }
1043\ ],
1044\ 'tfoot' : [
1045\ [
1046\ 'tr'
1047\ ],
1048\ {
1049\ 'ondblclick' : [],
1050\ 'dir' : [
1051\ 'ltr',
1052\ 'rtl'
1053\ ],
1054\ 'onkeydown' : [],
1055\ 'onkeyup' : [],
1056\ 'onmouseup' : [],
1057\ 'id' : [],
1058\ 'charoff' : [],
1059\ 'onmouseover' : [],
1060\ 'lang' : [],
1061\ 'align' : [
1062\ 'left',
1063\ 'center',
1064\ 'right',
1065\ 'justify',
1066\ 'char'
1067\ ],
1068\ 'valign' : [
1069\ 'top',
1070\ 'middle',
1071\ 'bottom',
1072\ 'baseline'
1073\ ],
1074\ 'style' : [],
1075\ 'onmousemove' : [],
1076\ 'onmouseout' : [],
1077\ 'xml:lang' : [],
1078\ 'char' : [],
1079\ 'onmousedown' : [],
1080\ 'onkeypress' : [],
1081\ 'onclick' : [],
1082\ 'title' : [],
1083\ 'class' : []
1084\ }
1085\ ],
1086\ 'caption' : [
1087\ [
1088\ 'a',
1089\ 'br',
1090\ 'span',
1091\ 'bdo',
1092\ 'object',
1093\ 'img',
1094\ 'map',
1095\ 'tt',
1096\ 'i',
1097\ 'b',
1098\ 'big',
1099\ 'small',
1100\ 'em',
1101\ 'strong',
1102\ 'dfn',
1103\ 'code',
1104\ 'q',
1105\ 'sub',
1106\ 'sup',
1107\ 'samp',
1108\ 'kbd',
1109\ 'var',
1110\ 'cite',
1111\ 'abbr',
1112\ 'acronym',
1113\ 'input',
1114\ 'select',
1115\ 'textarea',
1116\ 'label',
1117\ 'button',
1118\ 'ins',
1119\ 'del',
1120\ 'script',
1121\ 'noscript'
1122\ ],
1123\ {
1124\ 'onmouseover' : [],
1125\ 'lang' : [],
1126\ 'onmouseout' : [],
1127\ 'onmousemove' : [],
1128\ 'style' : [],
1129\ 'ondblclick' : [],
1130\ 'xml:lang' : [],
1131\ 'dir' : [
1132\ 'ltr',
1133\ 'rtl'
1134\ ],
1135\ 'onkeydown' : [],
1136\ 'onkeyup' : [],
1137\ 'onkeypress' : [],
1138\ 'onmousedown' : [],
1139\ 'onmouseup' : [],
1140\ 'id' : [],
1141\ 'class' : [],
1142\ 'title' : [],
1143\ 'onclick' : []
1144\ }
1145\ ],
1146\ 'code' : [
1147\ [
1148\ 'a',
1149\ 'br',
1150\ 'span',
1151\ 'bdo',
1152\ 'object',
1153\ 'img',
1154\ 'map',
1155\ 'tt',
1156\ 'i',
1157\ 'b',
1158\ 'big',
1159\ 'small',
1160\ 'em',
1161\ 'strong',
1162\ 'dfn',
1163\ 'code',
1164\ 'q',
1165\ 'sub',
1166\ 'sup',
1167\ 'samp',
1168\ 'kbd',
1169\ 'var',
1170\ 'cite',
1171\ 'abbr',
1172\ 'acronym',
1173\ 'input',
1174\ 'select',
1175\ 'textarea',
1176\ 'label',
1177\ 'button',
1178\ 'ins',
1179\ 'del',
1180\ 'script',
1181\ 'noscript'
1182\ ],
1183\ {
1184\ 'onmouseover' : [],
1185\ 'lang' : [],
1186\ 'onmouseout' : [],
1187\ 'onmousemove' : [],
1188\ 'style' : [],
1189\ 'ondblclick' : [],
1190\ 'xml:lang' : [],
1191\ 'dir' : [
1192\ 'ltr',
1193\ 'rtl'
1194\ ],
1195\ 'onkeydown' : [],
1196\ 'onkeyup' : [],
1197\ 'onkeypress' : [],
1198\ 'onmousedown' : [],
1199\ 'onmouseup' : [],
1200\ 'id' : [],
1201\ 'class' : [],
1202\ 'title' : [],
1203\ 'onclick' : []
1204\ }
1205\ ],
1206\ 'base' : [[],
1207\ {
1208\ 'href' : []
1209\ }
1210\ ],
1211\ 'br' : [[],
1212\ {
1213\ 'style' : [],
1214\ 'title' : [],
1215\ 'class' : [],
1216\ 'id' : []
1217\ }
1218\ ],
1219\ 'acronym' : [
1220\ [
1221\ 'a',
1222\ 'br',
1223\ 'span',
1224\ 'bdo',
1225\ 'object',
1226\ 'img',
1227\ 'map',
1228\ 'tt',
1229\ 'i',
1230\ 'b',
1231\ 'big',
1232\ 'small',
1233\ 'em',
1234\ 'strong',
1235\ 'dfn',
1236\ 'code',
1237\ 'q',
1238\ 'sub',
1239\ 'sup',
1240\ 'samp',
1241\ 'kbd',
1242\ 'var',
1243\ 'cite',
1244\ 'abbr',
1245\ 'acronym',
1246\ 'input',
1247\ 'select',
1248\ 'textarea',
1249\ 'label',
1250\ 'button',
1251\ 'ins',
1252\ 'del',
1253\ 'script',
1254\ 'noscript'
1255\ ],
1256\ {
1257\ 'onmouseover' : [],
1258\ 'lang' : [],
1259\ 'onmouseout' : [],
1260\ 'onmousemove' : [],
1261\ 'style' : [],
1262\ 'ondblclick' : [],
1263\ 'xml:lang' : [],
1264\ 'dir' : [
1265\ 'ltr',
1266\ 'rtl'
1267\ ],
1268\ 'onkeydown' : [],
1269\ 'onkeyup' : [],
1270\ 'onkeypress' : [],
1271\ 'onmousedown' : [],
1272\ 'onmouseup' : [],
1273\ 'id' : [],
1274\ 'class' : [],
1275\ 'title' : [],
1276\ 'onclick' : []
1277\ }
1278\ ],
1279\ 'strong' : [
1280\ [
1281\ 'a',
1282\ 'br',
1283\ 'span',
1284\ 'bdo',
1285\ 'object',
1286\ 'img',
1287\ 'map',
1288\ 'tt',
1289\ 'i',
1290\ 'b',
1291\ 'big',
1292\ 'small',
1293\ 'em',
1294\ 'strong',
1295\ 'dfn',
1296\ 'code',
1297\ 'q',
1298\ 'sub',
1299\ 'sup',
1300\ 'samp',
1301\ 'kbd',
1302\ 'var',
1303\ 'cite',
1304\ 'abbr',
1305\ 'acronym',
1306\ 'input',
1307\ 'select',
1308\ 'textarea',
1309\ 'label',
1310\ 'button',
1311\ 'ins',
1312\ 'del',
1313\ 'script',
1314\ 'noscript'
1315\ ],
1316\ {
1317\ 'onmouseover' : [],
1318\ 'lang' : [],
1319\ 'onmouseout' : [],
1320\ 'onmousemove' : [],
1321\ 'style' : [],
1322\ 'ondblclick' : [],
1323\ 'xml:lang' : [],
1324\ 'dir' : [
1325\ 'ltr',
1326\ 'rtl'
1327\ ],
1328\ 'onkeydown' : [],
1329\ 'onkeyup' : [],
1330\ 'onkeypress' : [],
1331\ 'onmousedown' : [],
1332\ 'onmouseup' : [],
1333\ 'id' : [],
1334\ 'class' : [],
1335\ 'title' : [],
1336\ 'onclick' : []
1337\ }
1338\ ],
1339\ 'h4' : [
1340\ [
1341\ 'a',
1342\ 'br',
1343\ 'span',
1344\ 'bdo',
1345\ 'object',
1346\ 'img',
1347\ 'map',
1348\ 'tt',
1349\ 'i',
1350\ 'b',
1351\ 'big',
1352\ 'small',
1353\ 'em',
1354\ 'strong',
1355\ 'dfn',
1356\ 'code',
1357\ 'q',
1358\ 'sub',
1359\ 'sup',
1360\ 'samp',
1361\ 'kbd',
1362\ 'var',
1363\ 'cite',
1364\ 'abbr',
1365\ 'acronym',
1366\ 'input',
1367\ 'select',
1368\ 'textarea',
1369\ 'label',
1370\ 'button',
1371\ 'ins',
1372\ 'del',
1373\ 'script',
1374\ 'noscript'
1375\ ],
1376\ {
1377\ 'onmouseover' : [],
1378\ 'lang' : [],
1379\ 'onmouseout' : [],
1380\ 'onmousemove' : [],
1381\ 'style' : [],
1382\ 'ondblclick' : [],
1383\ 'xml:lang' : [],
1384\ 'dir' : [
1385\ 'ltr',
1386\ 'rtl'
1387\ ],
1388\ 'onkeydown' : [],
1389\ 'onkeyup' : [],
1390\ 'onkeypress' : [],
1391\ 'onmousedown' : [],
1392\ 'onmouseup' : [],
1393\ 'id' : [],
1394\ 'class' : [],
1395\ 'title' : [],
1396\ 'onclick' : []
1397\ }
1398\ ],
1399\ 'em' : [
1400\ [
1401\ 'a',
1402\ 'br',
1403\ 'span',
1404\ 'bdo',
1405\ 'object',
1406\ 'img',
1407\ 'map',
1408\ 'tt',
1409\ 'i',
1410\ 'b',
1411\ 'big',
1412\ 'small',
1413\ 'em',
1414\ 'strong',
1415\ 'dfn',
1416\ 'code',
1417\ 'q',
1418\ 'sub',
1419\ 'sup',
1420\ 'samp',
1421\ 'kbd',
1422\ 'var',
1423\ 'cite',
1424\ 'abbr',
1425\ 'acronym',
1426\ 'input',
1427\ 'select',
1428\ 'textarea',
1429\ 'label',
1430\ 'button',
1431\ 'ins',
1432\ 'del',
1433\ 'script',
1434\ 'noscript'
1435\ ],
1436\ {
1437\ 'onmouseover' : [],
1438\ 'lang' : [],
1439\ 'onmouseout' : [],
1440\ 'onmousemove' : [],
1441\ 'style' : [],
1442\ 'ondblclick' : [],
1443\ 'xml:lang' : [],
1444\ 'dir' : [
1445\ 'ltr',
1446\ 'rtl'
1447\ ],
1448\ 'onkeydown' : [],
1449\ 'onkeyup' : [],
1450\ 'onkeypress' : [],
1451\ 'onmousedown' : [],
1452\ 'onmouseup' : [],
1453\ 'id' : [],
1454\ 'class' : [],
1455\ 'title' : [],
1456\ 'onclick' : []
1457\ }
1458\ ],
1459\ 'b' : [
1460\ [
1461\ 'a',
1462\ 'br',
1463\ 'span',
1464\ 'bdo',
1465\ 'object',
1466\ 'img',
1467\ 'map',
1468\ 'tt',
1469\ 'i',
1470\ 'b',
1471\ 'big',
1472\ 'small',
1473\ 'em',
1474\ 'strong',
1475\ 'dfn',
1476\ 'code',
1477\ 'q',
1478\ 'sub',
1479\ 'sup',
1480\ 'samp',
1481\ 'kbd',
1482\ 'var',
1483\ 'cite',
1484\ 'abbr',
1485\ 'acronym',
1486\ 'input',
1487\ 'select',
1488\ 'textarea',
1489\ 'label',
1490\ 'button',
1491\ 'ins',
1492\ 'del',
1493\ 'script',
1494\ 'noscript'
1495\ ],
1496\ {
1497\ 'onmouseover' : [],
1498\ 'lang' : [],
1499\ 'onmouseout' : [],
1500\ 'onmousemove' : [],
1501\ 'style' : [],
1502\ 'ondblclick' : [],
1503\ 'xml:lang' : [],
1504\ 'dir' : [
1505\ 'ltr',
1506\ 'rtl'
1507\ ],
1508\ 'onkeydown' : [],
1509\ 'onkeyup' : [],
1510\ 'onkeypress' : [],
1511\ 'onmousedown' : [],
1512\ 'onmouseup' : [],
1513\ 'id' : [],
1514\ 'class' : [],
1515\ 'title' : [],
1516\ 'onclick' : []
1517\ }
1518\ ],
1519\ 'q' : [
1520\ [
1521\ 'a',
1522\ 'br',
1523\ 'span',
1524\ 'bdo',
1525\ 'object',
1526\ 'img',
1527\ 'map',
1528\ 'tt',
1529\ 'i',
1530\ 'b',
1531\ 'big',
1532\ 'small',
1533\ 'em',
1534\ 'strong',
1535\ 'dfn',
1536\ 'code',
1537\ 'q',
1538\ 'sub',
1539\ 'sup',
1540\ 'samp',
1541\ 'kbd',
1542\ 'var',
1543\ 'cite',
1544\ 'abbr',
1545\ 'acronym',
1546\ 'input',
1547\ 'select',
1548\ 'textarea',
1549\ 'label',
1550\ 'button',
1551\ 'ins',
1552\ 'del',
1553\ 'script',
1554\ 'noscript'
1555\ ],
1556\ {
1557\ 'onmouseover' : [],
1558\ 'lang' : [],
1559\ 'onmouseout' : [],
1560\ 'onmousemove' : [],
1561\ 'style' : [],
1562\ 'ondblclick' : [],
1563\ 'xml:lang' : [],
1564\ 'dir' : [
1565\ 'ltr',
1566\ 'rtl'
1567\ ],
1568\ 'onkeydown' : [],
1569\ 'onkeyup' : [],
1570\ 'onkeypress' : [],
1571\ 'onmousedown' : [],
1572\ 'onmouseup' : [],
1573\ 'id' : [],
1574\ 'class' : [],
1575\ 'title' : [],
1576\ 'onclick' : [],
1577\ 'cite' : []
1578\ }
1579\ ],
1580\ 'span' : [
1581\ [
1582\ 'a',
1583\ 'br',
1584\ 'span',
1585\ 'bdo',
1586\ 'object',
1587\ 'img',
1588\ 'map',
1589\ 'tt',
1590\ 'i',
1591\ 'b',
1592\ 'big',
1593\ 'small',
1594\ 'em',
1595\ 'strong',
1596\ 'dfn',
1597\ 'code',
1598\ 'q',
1599\ 'sub',
1600\ 'sup',
1601\ 'samp',
1602\ 'kbd',
1603\ 'var',
1604\ 'cite',
1605\ 'abbr',
1606\ 'acronym',
1607\ 'input',
1608\ 'select',
1609\ 'textarea',
1610\ 'label',
1611\ 'button',
1612\ 'ins',
1613\ 'del',
1614\ 'script',
1615\ 'noscript'
1616\ ],
1617\ {
1618\ 'onmouseover' : [],
1619\ 'lang' : [],
1620\ 'onmouseout' : [],
1621\ 'onmousemove' : [],
1622\ 'style' : [],
1623\ 'ondblclick' : [],
1624\ 'xml:lang' : [],
1625\ 'dir' : [
1626\ 'ltr',
1627\ 'rtl'
1628\ ],
1629\ 'onkeydown' : [],
1630\ 'onkeyup' : [],
1631\ 'onkeypress' : [],
1632\ 'onmousedown' : [],
1633\ 'onmouseup' : [],
1634\ 'id' : [],
1635\ 'class' : [],
1636\ 'title' : [],
1637\ 'onclick' : []
1638\ }
1639\ ],
1640\ 'title' : [
1641\ {
1642\ 'lang' : [],
1643\ 'xml:lang' : [],
1644\ 'dir' : [
1645\ 'ltr',
1646\ 'rtl'
1647\ ]
1648\ }
1649\ ],
1650\ 'small' : [
1651\ [
1652\ 'a',
1653\ 'br',
1654\ 'span',
1655\ 'bdo',
1656\ 'object',
1657\ 'img',
1658\ 'map',
1659\ 'tt',
1660\ 'i',
1661\ 'b',
1662\ 'big',
1663\ 'small',
1664\ 'em',
1665\ 'strong',
1666\ 'dfn',
1667\ 'code',
1668\ 'q',
1669\ 'sub',
1670\ 'sup',
1671\ 'samp',
1672\ 'kbd',
1673\ 'var',
1674\ 'cite',
1675\ 'abbr',
1676\ 'acronym',
1677\ 'input',
1678\ 'select',
1679\ 'textarea',
1680\ 'label',
1681\ 'button',
1682\ 'ins',
1683\ 'del',
1684\ 'script',
1685\ 'noscript'
1686\ ],
1687\ {
1688\ 'onmouseover' : [],
1689\ 'lang' : [],
1690\ 'onmouseout' : [],
1691\ 'onmousemove' : [],
1692\ 'style' : [],
1693\ 'ondblclick' : [],
1694\ 'xml:lang' : [],
1695\ 'dir' : [
1696\ 'ltr',
1697\ 'rtl'
1698\ ],
1699\ 'onkeydown' : [],
1700\ 'onkeyup' : [],
1701\ 'onkeypress' : [],
1702\ 'onmousedown' : [],
1703\ 'onmouseup' : [],
1704\ 'id' : [],
1705\ 'class' : [],
1706\ 'title' : [],
1707\ 'onclick' : []
1708\ }
1709\ ],
1710\ 'area' : [[],
1711\ {
1712\ 'accesskey' : [],
1713\ 'coords' : [],
1714\ 'ondblclick' : [],
1715\ 'onblur' : [],
1716\ 'dir' : [
1717\ 'ltr',
1718\ 'rtl'
1719\ ],
1720\ 'onfocus' : [],
1721\ 'nohref' : [
1722\ 'BOOL'
1723\ ],
1724\ 'onkeydown' : [],
1725\ 'onkeyup' : [],
1726\ 'href' : [],
1727\ 'onmouseup' : [],
1728\ 'id' : [],
1729\ 'onmouseover' : [],
1730\ 'tabindex' : [],
1731\ 'alt' : [],
1732\ 'lang' : [],
1733\ 'style' : [],
1734\ 'onmousemove' : [],
1735\ 'onmouseout' : [],
1736\ 'xml:lang' : [],
1737\ 'onmousedown' : [],
1738\ 'onkeypress' : [],
1739\ 'onclick' : [],
1740\ 'title' : [],
1741\ 'class' : [],
1742\ 'shape' : [
1743\ 'rect',
1744\ 'circle',
1745\ 'poly',
1746\ 'default'
1747\ ]
1748\ }
1749\ ],
1750\ 'body' : [
1751\ [
1752\ 'p',
1753\ 'h1',
1754\ 'h2',
1755\ 'h3',
1756\ 'h4',
1757\ 'h5',
1758\ 'h6',
1759\ 'div',
1760\ 'ul',
1761\ 'ol',
1762\ 'dl',
1763\ 'pre',
1764\ 'hr',
1765\ 'blockquote',
1766\ 'address',
1767\ 'fieldset',
1768\ 'table',
1769\ 'form',
1770\ 'ins',
1771\ 'del',
1772\ 'script',
1773\ 'noscript'
1774\ ],
1775\ {
1776\ 'ondblclick' : [],
1777\ 'dir' : [
1778\ 'ltr',
1779\ 'rtl'
1780\ ],
1781\ 'onkeydown' : [],
1782\ 'onkeyup' : [],
1783\ 'onmouseup' : [],
1784\ 'id' : [],
1785\ 'onmouseover' : [],
1786\ 'lang' : [],
1787\ 'style' : [],
1788\ 'onmousemove' : [],
1789\ 'onmouseout' : [],
1790\ 'xml:lang' : [],
1791\ 'onunload' : [],
1792\ 'onmousedown' : [],
1793\ 'onkeypress' : [],
1794\ 'onload' : [],
1795\ 'onclick' : [],
1796\ 'title' : [],
1797\ 'class' : []
1798\ }
1799\ ],
1800\ 'ol' : [
1801\ [
1802\ 'li'
1803\ ],
1804\ {
1805\ 'onmouseover' : [],
1806\ 'lang' : [],
1807\ 'onmouseout' : [],
1808\ 'onmousemove' : [],
1809\ 'style' : [],
1810\ 'ondblclick' : [],
1811\ 'xml:lang' : [],
1812\ 'dir' : [
1813\ 'ltr',
1814\ 'rtl'
1815\ ],
1816\ 'onkeydown' : [],
1817\ 'onkeyup' : [],
1818\ 'onkeypress' : [],
1819\ 'onmousedown' : [],
1820\ 'onmouseup' : [],
1821\ 'id' : [],
1822\ 'class' : [],
1823\ 'title' : [],
1824\ 'onclick' : []
1825\ }
1826\ ],
1827\ 'html' : [
1828\ [
1829\ 'head',
1830\ 'body'
1831\ ],
1832\ {
1833\ 'xmlns' : [
1834\ 'http://www.w3.org/1999/xhtml',
1835\ ],
1836\ 'lang' : [],
1837\ 'xml:lang' : [],
1838\ 'dir' : [
1839\ 'ltr',
1840\ 'rtl'
1841\ ]
1842\ }
1843\ ],
1844\ 'var' : [
1845\ [
1846\ 'a',
1847\ 'br',
1848\ 'span',
1849\ 'bdo',
1850\ 'object',
1851\ 'img',
1852\ 'map',
1853\ 'tt',
1854\ 'i',
1855\ 'b',
1856\ 'big',
1857\ 'small',
1858\ 'em',
1859\ 'strong',
1860\ 'dfn',
1861\ 'code',
1862\ 'q',
1863\ 'sub',
1864\ 'sup',
1865\ 'samp',
1866\ 'kbd',
1867\ 'var',
1868\ 'cite',
1869\ 'abbr',
1870\ 'acronym',
1871\ 'input',
1872\ 'select',
1873\ 'textarea',
1874\ 'label',
1875\ 'button',
1876\ 'ins',
1877\ 'del',
1878\ 'script',
1879\ 'noscript'
1880\ ],
1881\ {
1882\ 'onmouseover' : [],
1883\ 'lang' : [],
1884\ 'onmouseout' : [],
1885\ 'onmousemove' : [],
1886\ 'style' : [],
1887\ 'ondblclick' : [],
1888\ 'xml:lang' : [],
1889\ 'dir' : [
1890\ 'ltr',
1891\ 'rtl'
1892\ ],
1893\ 'onkeydown' : [],
1894\ 'onkeyup' : [],
1895\ 'onkeypress' : [],
1896\ 'onmousedown' : [],
1897\ 'onmouseup' : [],
1898\ 'id' : [],
1899\ 'class' : [],
1900\ 'title' : [],
1901\ 'onclick' : []
1902\ }
1903\ ],
1904\ 'ul' : [
1905\ [
1906\ 'li'
1907\ ],
1908\ {
1909\ 'onmouseover' : [],
1910\ 'lang' : [],
1911\ 'onmouseout' : [],
1912\ 'onmousemove' : [],
1913\ 'style' : [],
1914\ 'ondblclick' : [],
1915\ 'xml:lang' : [],
1916\ 'dir' : [
1917\ 'ltr',
1918\ 'rtl'
1919\ ],
1920\ 'onkeydown' : [],
1921\ 'onkeyup' : [],
1922\ 'onkeypress' : [],
1923\ 'onmousedown' : [],
1924\ 'onmouseup' : [],
1925\ 'id' : [],
1926\ 'class' : [],
1927\ 'title' : [],
1928\ 'onclick' : []
1929\ }
1930\ ],
1931\ 'del' : [
1932\ [
1933\ 'p',
1934\ 'h1',
1935\ 'h2',
1936\ 'h3',
1937\ 'h4',
1938\ 'h5',
1939\ 'h6',
1940\ 'div',
1941\ 'ul',
1942\ 'ol',
1943\ 'dl',
1944\ 'pre',
1945\ 'hr',
1946\ 'blockquote',
1947\ 'address',
1948\ 'fieldset',
1949\ 'table',
1950\ 'form',
1951\ 'a',
1952\ 'br',
1953\ 'span',
1954\ 'bdo',
1955\ 'object',
1956\ 'img',
1957\ 'map',
1958\ 'tt',
1959\ 'i',
1960\ 'b',
1961\ 'big',
1962\ 'small',
1963\ 'em',
1964\ 'strong',
1965\ 'dfn',
1966\ 'code',
1967\ 'q',
1968\ 'sub',
1969\ 'sup',
1970\ 'samp',
1971\ 'kbd',
1972\ 'var',
1973\ 'cite',
1974\ 'abbr',
1975\ 'acronym',
1976\ 'input',
1977\ 'select',
1978\ 'textarea',
1979\ 'label',
1980\ 'button',
1981\ 'ins',
1982\ 'del',
1983\ 'script',
1984\ 'noscript'
1985\ ],
1986\ {
1987\ 'ondblclick' : [],
1988\ 'datetime' : [],
1989\ 'dir' : [
1990\ 'ltr',
1991\ 'rtl'
1992\ ],
1993\ 'onkeydown' : [],
1994\ 'onkeyup' : [],
1995\ 'onmouseup' : [],
1996\ 'id' : [],
1997\ 'cite' : [],
1998\ 'onmouseover' : [],
1999\ 'lang' : [],
2000\ 'style' : [],
2001\ 'onmousemove' : [],
2002\ 'onmouseout' : [],
2003\ 'xml:lang' : [],
2004\ 'onmousedown' : [],
2005\ 'onkeypress' : [],
2006\ 'onclick' : [],
2007\ 'title' : [],
2008\ 'class' : []
2009\ }
2010\ ],
2011\ 'blockquote' : [
2012\ [
2013\ 'p',
2014\ 'h1',
2015\ 'h2',
2016\ 'h3',
2017\ 'h4',
2018\ 'h5',
2019\ 'h6',
2020\ 'div',
2021\ 'ul',
2022\ 'ol',
2023\ 'dl',
2024\ 'pre',
2025\ 'hr',
2026\ 'blockquote',
2027\ 'address',
2028\ 'fieldset',
2029\ 'table',
2030\ 'form',
2031\ 'ins',
2032\ 'del',
2033\ 'script',
2034\ 'noscript'
2035\ ],
2036\ {
2037\ 'onmouseover' : [],
2038\ 'lang' : [],
2039\ 'onmouseout' : [],
2040\ 'onmousemove' : [],
2041\ 'style' : [],
2042\ 'ondblclick' : [],
2043\ 'xml:lang' : [],
2044\ 'dir' : [
2045\ 'ltr',
2046\ 'rtl'
2047\ ],
2048\ 'onkeydown' : [],
2049\ 'onkeyup' : [],
2050\ 'onkeypress' : [],
2051\ 'onmousedown' : [],
2052\ 'onmouseup' : [],
2053\ 'id' : [],
2054\ 'class' : [],
2055\ 'title' : [],
2056\ 'onclick' : [],
2057\ 'cite' : []
2058\ }
2059\ ],
2060\ 'style' : [[],
2061\ {
2062\ 'lang' : [],
2063\ 'media' : [],
2064\ 'title' : [],
2065\ 'type' : [],
2066\ 'xml:space' : [
2067\ 'preserve'
2068\ ],
2069\ 'xml:lang' : [],
2070\ 'dir' : [
2071\ 'ltr',
2072\ 'rtl'
2073\ ]
2074\ }
2075\ ],
2076\ 'dfn' : [
2077\ [
2078\ 'a',
2079\ 'br',
2080\ 'span',
2081\ 'bdo',
2082\ 'object',
2083\ 'img',
2084\ 'map',
2085\ 'tt',
2086\ 'i',
2087\ 'b',
2088\ 'big',
2089\ 'small',
2090\ 'em',
2091\ 'strong',
2092\ 'dfn',
2093\ 'code',
2094\ 'q',
2095\ 'sub',
2096\ 'sup',
2097\ 'samp',
2098\ 'kbd',
2099\ 'var',
2100\ 'cite',
2101\ 'abbr',
2102\ 'acronym',
2103\ 'input',
2104\ 'select',
2105\ 'textarea',
2106\ 'label',
2107\ 'button',
2108\ 'ins',
2109\ 'del',
2110\ 'script',
2111\ 'noscript'
2112\ ],
2113\ {
2114\ 'onmouseover' : [],
2115\ 'lang' : [],
2116\ 'onmouseout' : [],
2117\ 'onmousemove' : [],
2118\ 'style' : [],
2119\ 'ondblclick' : [],
2120\ 'xml:lang' : [],
2121\ 'dir' : [
2122\ 'ltr',
2123\ 'rtl'
2124\ ],
2125\ 'onkeydown' : [],
2126\ 'onkeyup' : [],
2127\ 'onkeypress' : [],
2128\ 'onmousedown' : [],
2129\ 'onmouseup' : [],
2130\ 'id' : [],
2131\ 'class' : [],
2132\ 'title' : [],
2133\ 'onclick' : []
2134\ }
2135\ ],
2136\ 'h3' : [
2137\ [
2138\ 'a',
2139\ 'br',
2140\ 'span',
2141\ 'bdo',
2142\ 'object',
2143\ 'img',
2144\ 'map',
2145\ 'tt',
2146\ 'i',
2147\ 'b',
2148\ 'big',
2149\ 'small',
2150\ 'em',
2151\ 'strong',
2152\ 'dfn',
2153\ 'code',
2154\ 'q',
2155\ 'sub',
2156\ 'sup',
2157\ 'samp',
2158\ 'kbd',
2159\ 'var',
2160\ 'cite',
2161\ 'abbr',
2162\ 'acronym',
2163\ 'input',
2164\ 'select',
2165\ 'textarea',
2166\ 'label',
2167\ 'button',
2168\ 'ins',
2169\ 'del',
2170\ 'script',
2171\ 'noscript'
2172\ ],
2173\ {
2174\ 'onmouseover' : [],
2175\ 'lang' : [],
2176\ 'onmouseout' : [],
2177\ 'onmousemove' : [],
2178\ 'style' : [],
2179\ 'ondblclick' : [],
2180\ 'xml:lang' : [],
2181\ 'dir' : [
2182\ 'ltr',
2183\ 'rtl'
2184\ ],
2185\ 'onkeydown' : [],
2186\ 'onkeyup' : [],
2187\ 'onkeypress' : [],
2188\ 'onmousedown' : [],
2189\ 'onmouseup' : [],
2190\ 'id' : [],
2191\ 'class' : [],
2192\ 'title' : [],
2193\ 'onclick' : []
2194\ }
2195\ ],
2196\ 'textarea' : [[],
2197\ {
2198\ 'accesskey' : [],
2199\ 'disabled' : [
2200\ 'disabled'
2201\ ],
2202\ 'ondblclick' : [],
2203\ 'rows' : [],
2204\ 'onblur' : [],
2205\ 'cols' : [],
2206\ 'dir' : [
2207\ 'ltr',
2208\ 'rtl'
2209\ ],
2210\ 'onchange' : [],
2211\ 'onfocus' : [],
2212\ 'readonly' : [
2213\ 'BOOL'
2214\ ],
2215\ 'onkeydown' : [],
2216\ 'onkeyup' : [],
2217\ 'onmouseup' : [],
2218\ 'id' : [],
2219\ 'onselect' : [],
2220\ 'onmouseover' : [],
2221\ 'tabindex' : [],
2222\ 'lang' : [],
2223\ 'style' : [],
2224\ 'onmousemove' : [],
2225\ 'onmouseout' : [],
2226\ 'name' : [],
2227\ 'xml:lang' : [],
2228\ 'onmousedown' : [],
2229\ 'onkeypress' : [],
2230\ 'onclick' : [],
2231\ 'title' : [],
2232\ 'class' : []
2233\ }
2234\ ],
2235\ 'a' : [
2236\ [
2237\ 'br',
2238\ 'span',
2239\ 'bdo',
2240\ 'object',
2241\ 'img',
2242\ 'map',
2243\ 'tt',
2244\ 'i',
2245\ 'b',
2246\ 'big',
2247\ 'small',
2248\ 'em',
2249\ 'strong',
2250\ 'dfn',
2251\ 'code',
2252\ 'q',
2253\ 'sub',
2254\ 'sup',
2255\ 'samp',
2256\ 'kbd',
2257\ 'var',
2258\ 'cite',
2259\ 'abbr',
2260\ 'acronym',
2261\ 'input',
2262\ 'select',
2263\ 'textarea',
2264\ 'label',
2265\ 'button',
2266\ 'ins',
2267\ 'del',
2268\ 'script',
2269\ 'noscript'
2270\ ],
2271\ {
2272\ 'accesskey' : [],
2273\ 'rel' : [],
2274\ 'coords' : [],
2275\ 'ondblclick' : [],
2276\ 'onblur' : [],
2277\ 'dir' : [
2278\ 'ltr',
2279\ 'rtl'
2280\ ],
2281\ 'onfocus' : [],
2282\ 'onkeydown' : [],
2283\ 'onkeyup' : [],
2284\ 'href' : [],
2285\ 'onmouseup' : [],
2286\ 'id' : [],
2287\ 'onmouseover' : [],
2288\ 'tabindex' : [],
2289\ 'lang' : [],
2290\ 'name' : [],
2291\ 'style' : [],
2292\ 'onmousemove' : [],
2293\ 'onmouseout' : [],
2294\ 'charset' : [],
2295\ 'hreflang' : [],
2296\ 'xml:lang' : [],
2297\ 'onmousedown' : [],
2298\ 'onkeypress' : [],
2299\ 'rev' : [],
2300\ 'shape' : [
2301\ 'rect',
2302\ 'circle',
2303\ 'poly',
2304\ 'default'
2305\ ],
2306\ 'type' : [],
2307\ 'onclick' : [],
2308\ 'title' : [],
2309\ 'class' : []
2310\ }
2311\ ],
2312\ 'img' : [[],
2313\ {
2314\ 'width' : [],
2315\ 'ismap' : [
2316\ 'BOOL'
2317\ ],
2318\ 'usemap' : [],
2319\ 'ondblclick' : [],
2320\ 'dir' : [
2321\ 'ltr',
2322\ 'rtl'
2323\ ],
2324\ 'onkeydown' : [],
2325\ 'onkeyup' : [],
2326\ 'onmouseup' : [],
2327\ 'id' : [],
2328\ 'onmouseover' : [],
2329\ 'lang' : [],
2330\ 'alt' : [],
2331\ 'longdesc' : [],
2332\ 'src' : [],
2333\ 'style' : [],
2334\ 'onmousemove' : [],
2335\ 'onmouseout' : [],
2336\ 'height' : [],
2337\ 'xml:lang' : [],
2338\ 'onmousedown' : [],
2339\ 'onkeypress' : [],
2340\ 'onclick' : [],
2341\ 'title' : [],
2342\ 'class' : []
2343\ }
2344\ ],
2345\ 'tt' : [
2346\ [
2347\ 'a',
2348\ 'br',
2349\ 'span',
2350\ 'bdo',
2351\ 'object',
2352\ 'img',
2353\ 'map',
2354\ 'tt',
2355\ 'i',
2356\ 'b',
2357\ 'big',
2358\ 'small',
2359\ 'em',
2360\ 'strong',
2361\ 'dfn',
2362\ 'code',
2363\ 'q',
2364\ 'sub',
2365\ 'sup',
2366\ 'samp',
2367\ 'kbd',
2368\ 'var',
2369\ 'cite',
2370\ 'abbr',
2371\ 'acronym',
2372\ 'input',
2373\ 'select',
2374\ 'textarea',
2375\ 'label',
2376\ 'button',
2377\ 'ins',
2378\ 'del',
2379\ 'script',
2380\ 'noscript'
2381\ ],
2382\ {
2383\ 'onmouseover' : [],
2384\ 'lang' : [],
2385\ 'onmouseout' : [],
2386\ 'onmousemove' : [],
2387\ 'style' : [],
2388\ 'ondblclick' : [],
2389\ 'xml:lang' : [],
2390\ 'dir' : [
2391\ 'ltr',
2392\ 'rtl'
2393\ ],
2394\ 'onkeydown' : [],
2395\ 'onkeyup' : [],
2396\ 'onkeypress' : [],
2397\ 'onmousedown' : [],
2398\ 'onmouseup' : [],
2399\ 'id' : [],
2400\ 'class' : [],
2401\ 'title' : [],
2402\ 'onclick' : []
2403\ }
2404\ ],
2405\ 'thead' : [
2406\ [
2407\ 'tr'
2408\ ],
2409\ {
2410\ 'ondblclick' : [],
2411\ 'dir' : [
2412\ 'ltr',
2413\ 'rtl'
2414\ ],
2415\ 'onkeydown' : [],
2416\ 'onkeyup' : [],
2417\ 'onmouseup' : [],
2418\ 'id' : [],
2419\ 'charoff' : [],
2420\ 'onmouseover' : [],
2421\ 'lang' : [],
2422\ 'align' : [
2423\ 'left',
2424\ 'center',
2425\ 'right',
2426\ 'justify',
2427\ 'char'
2428\ ],
2429\ 'valign' : [
2430\ 'top',
2431\ 'middle',
2432\ 'bottom',
2433\ 'baseline'
2434\ ],
2435\ 'style' : [],
2436\ 'onmousemove' : [],
2437\ 'onmouseout' : [],
2438\ 'xml:lang' : [],
2439\ 'char' : [],
2440\ 'onmousedown' : [],
2441\ 'onkeypress' : [],
2442\ 'onclick' : [],
2443\ 'title' : [],
2444\ 'class' : []
2445\ }
2446\ ],
2447\ 'abbr' : [
2448\ [
2449\ 'a',
2450\ 'br',
2451\ 'span',
2452\ 'bdo',
2453\ 'object',
2454\ 'img',
2455\ 'map',
2456\ 'tt',
2457\ 'i',
2458\ 'b',
2459\ 'big',
2460\ 'small',
2461\ 'em',
2462\ 'strong',
2463\ 'dfn',
2464\ 'code',
2465\ 'q',
2466\ 'sub',
2467\ 'sup',
2468\ 'samp',
2469\ 'kbd',
2470\ 'var',
2471\ 'cite',
2472\ 'abbr',
2473\ 'acronym',
2474\ 'input',
2475\ 'select',
2476\ 'textarea',
2477\ 'label',
2478\ 'button',
2479\ 'ins',
2480\ 'del',
2481\ 'script',
2482\ 'noscript'
2483\ ],
2484\ {
2485\ 'onmouseover' : [],
2486\ 'lang' : [],
2487\ 'onmouseout' : [],
2488\ 'onmousemove' : [],
2489\ 'style' : [],
2490\ 'ondblclick' : [],
2491\ 'xml:lang' : [],
2492\ 'dir' : [
2493\ 'ltr',
2494\ 'rtl'
2495\ ],
2496\ 'onkeydown' : [],
2497\ 'onkeyup' : [],
2498\ 'onkeypress' : [],
2499\ 'onmousedown' : [],
2500\ 'onmouseup' : [],
2501\ 'id' : [],
2502\ 'class' : [],
2503\ 'title' : [],
2504\ 'onclick' : []
2505\ }
2506\ ],
2507\ 'h6' : [
2508\ [
2509\ 'a',
2510\ 'br',
2511\ 'span',
2512\ 'bdo',
2513\ 'object',
2514\ 'img',
2515\ 'map',
2516\ 'tt',
2517\ 'i',
2518\ 'b',
2519\ 'big',
2520\ 'small',
2521\ 'em',
2522\ 'strong',
2523\ 'dfn',
2524\ 'code',
2525\ 'q',
2526\ 'sub',
2527\ 'sup',
2528\ 'samp',
2529\ 'kbd',
2530\ 'var',
2531\ 'cite',
2532\ 'abbr',
2533\ 'acronym',
2534\ 'input',
2535\ 'select',
2536\ 'textarea',
2537\ 'label',
2538\ 'button',
2539\ 'ins',
2540\ 'del',
2541\ 'script',
2542\ 'noscript'
2543\ ],
2544\ {
2545\ 'onmouseover' : [],
2546\ 'lang' : [],
2547\ 'onmouseout' : [],
2548\ 'onmousemove' : [],
2549\ 'style' : [],
2550\ 'ondblclick' : [],
2551\ 'xml:lang' : [],
2552\ 'dir' : [
2553\ 'ltr',
2554\ 'rtl'
2555\ ],
2556\ 'onkeydown' : [],
2557\ 'onkeyup' : [],
2558\ 'onkeypress' : [],
2559\ 'onmousedown' : [],
2560\ 'onmouseup' : [],
2561\ 'id' : [],
2562\ 'class' : [],
2563\ 'title' : [],
2564\ 'onclick' : []
2565\ }
2566\ ],
2567\ 'sup' : [
2568\ [
2569\ 'a',
2570\ 'br',
2571\ 'span',
2572\ 'bdo',
2573\ 'object',
2574\ 'img',
2575\ 'map',
2576\ 'tt',
2577\ 'i',
2578\ 'b',
2579\ 'big',
2580\ 'small',
2581\ 'em',
2582\ 'strong',
2583\ 'dfn',
2584\ 'code',
2585\ 'q',
2586\ 'sub',
2587\ 'sup',
2588\ 'samp',
2589\ 'kbd',
2590\ 'var',
2591\ 'cite',
2592\ 'abbr',
2593\ 'acronym',
2594\ 'input',
2595\ 'select',
2596\ 'textarea',
2597\ 'label',
2598\ 'button',
2599\ 'ins',
2600\ 'del',
2601\ 'script',
2602\ 'noscript'
2603\ ],
2604\ {
2605\ 'onmouseover' : [],
2606\ 'lang' : [],
2607\ 'onmouseout' : [],
2608\ 'onmousemove' : [],
2609\ 'style' : [],
2610\ 'ondblclick' : [],
2611\ 'xml:lang' : [],
2612\ 'dir' : [
2613\ 'ltr',
2614\ 'rtl'
2615\ ],
2616\ 'onkeydown' : [],
2617\ 'onkeyup' : [],
2618\ 'onkeypress' : [],
2619\ 'onmousedown' : [],
2620\ 'onmouseup' : [],
2621\ 'id' : [],
2622\ 'class' : [],
2623\ 'title' : [],
2624\ 'onclick' : []
2625\ }
2626\ ],
2627\ 'address' : [
2628\ [
2629\ 'a',
2630\ 'br',
2631\ 'span',
2632\ 'bdo',
2633\ 'object',
2634\ 'img',
2635\ 'map',
2636\ 'tt',
2637\ 'i',
2638\ 'b',
2639\ 'big',
2640\ 'small',
2641\ 'em',
2642\ 'strong',
2643\ 'dfn',
2644\ 'code',
2645\ 'q',
2646\ 'sub',
2647\ 'sup',
2648\ 'samp',
2649\ 'kbd',
2650\ 'var',
2651\ 'cite',
2652\ 'abbr',
2653\ 'acronym',
2654\ 'input',
2655\ 'select',
2656\ 'textarea',
2657\ 'label',
2658\ 'button',
2659\ 'ins',
2660\ 'del',
2661\ 'script',
2662\ 'noscript'
2663\ ],
2664\ {
2665\ 'onmouseover' : [],
2666\ 'lang' : [],
2667\ 'onmouseout' : [],
2668\ 'onmousemove' : [],
2669\ 'style' : [],
2670\ 'ondblclick' : [],
2671\ 'xml:lang' : [],
2672\ 'dir' : [
2673\ 'ltr',
2674\ 'rtl'
2675\ ],
2676\ 'onkeydown' : [],
2677\ 'onkeyup' : [],
2678\ 'onkeypress' : [],
2679\ 'onmousedown' : [],
2680\ 'onmouseup' : [],
2681\ 'id' : [],
2682\ 'class' : [],
2683\ 'title' : [],
2684\ 'onclick' : []
2685\ }
2686\ ],
2687\ 'param' : [[],
2688\ {
2689\ 'value' : [],
2690\ 'name' : [],
2691\ 'type' : [],
2692\ 'valuetype' : [
2693\ 'data',
2694\ 'ref',
2695\ 'object'
2696\ ],
2697\ 'id' : []
2698\ }
2699\ ],
2700\ 'th' : [
2701\ [
2702\ 'p',
2703\ 'h1',
2704\ 'h2',
2705\ 'h3',
2706\ 'h4',
2707\ 'h5',
2708\ 'h6',
2709\ 'div',
2710\ 'ul',
2711\ 'ol',
2712\ 'dl',
2713\ 'pre',
2714\ 'hr',
2715\ 'blockquote',
2716\ 'address',
2717\ 'fieldset',
2718\ 'table',
2719\ 'form',
2720\ 'a',
2721\ 'br',
2722\ 'span',
2723\ 'bdo',
2724\ 'object',
2725\ 'img',
2726\ 'map',
2727\ 'tt',
2728\ 'i',
2729\ 'b',
2730\ 'big',
2731\ 'small',
2732\ 'em',
2733\ 'strong',
2734\ 'dfn',
2735\ 'code',
2736\ 'q',
2737\ 'sub',
2738\ 'sup',
2739\ 'samp',
2740\ 'kbd',
2741\ 'var',
2742\ 'cite',
2743\ 'abbr',
2744\ 'acronym',
2745\ 'input',
2746\ 'select',
2747\ 'textarea',
2748\ 'label',
2749\ 'button',
2750\ 'ins',
2751\ 'del',
2752\ 'script',
2753\ 'noscript'
2754\ ],
2755\ {
2756\ 'headers' : [],
2757\ 'ondblclick' : [],
2758\ 'axis' : [],
2759\ 'dir' : [
2760\ 'ltr',
2761\ 'rtl'
2762\ ],
2763\ 'abbr' : [],
2764\ 'onkeydown' : [],
2765\ 'onkeyup' : [],
2766\ 'onmouseup' : [],
2767\ 'id' : [],
2768\ 'onmouseover' : [],
2769\ 'lang' : [],
2770\ 'style' : [],
2771\ 'onmousemove' : [],
2772\ 'onmouseout' : [],
2773\ 'xml:lang' : [],
2774\ 'onmousedown' : [],
2775\ 'onkeypress' : [],
2776\ 'onclick' : [],
2777\ 'title' : [],
2778\ 'class' : []
2779\ }
2780\ ],
2781\ 'h1' : [
2782\ [
2783\ 'a',
2784\ 'br',
2785\ 'span',
2786\ 'bdo',
2787\ 'object',
2788\ 'img',
2789\ 'map',
2790\ 'tt',
2791\ 'i',
2792\ 'b',
2793\ 'big',
2794\ 'small',
2795\ 'em',
2796\ 'strong',
2797\ 'dfn',
2798\ 'code',
2799\ 'q',
2800\ 'sub',
2801\ 'sup',
2802\ 'samp',
2803\ 'kbd',
2804\ 'var',
2805\ 'cite',
2806\ 'abbr',
2807\ 'acronym',
2808\ 'input',
2809\ 'select',
2810\ 'textarea',
2811\ 'label',
2812\ 'button',
2813\ 'ins',
2814\ 'del',
2815\ 'script',
2816\ 'noscript'
2817\ ],
2818\ {
2819\ 'onmouseover' : [],
2820\ 'lang' : [],
2821\ 'onmouseout' : [],
2822\ 'onmousemove' : [],
2823\ 'style' : [],
2824\ 'ondblclick' : [],
2825\ 'xml:lang' : [],
2826\ 'dir' : [
2827\ 'ltr',
2828\ 'rtl'
2829\ ],
2830\ 'onkeydown' : [],
2831\ 'onkeyup' : [],
2832\ 'onkeypress' : [],
2833\ 'onmousedown' : [],
2834\ 'onmouseup' : [],
2835\ 'id' : [],
2836\ 'class' : [],
2837\ 'title' : [],
2838\ 'onclick' : []
2839\ }
2840\ ],
2841\ 'head' : [
2842\ [
2843\ 'script',
2844\ 'style',
2845\ 'meta',
2846\ 'link',
2847\ 'object',
2848\ 'title',
2849\ 'script',
2850\ 'style',
2851\ 'meta',
2852\ 'link',
2853\ 'object',
2854\ 'base',
2855\ 'script',
2856\ 'style',
2857\ 'meta',
2858\ 'link',
2859\ 'object',
2860\ 'base',
2861\ 'script',
2862\ 'style',
2863\ 'meta',
2864\ 'link',
2865\ 'object',
2866\ 'title',
2867\ 'script',
2868\ 'style',
2869\ 'meta',
2870\ 'link',
2871\ 'object'
2872\ ],
2873\ {
2874\ 'profile' : [],
2875\ 'lang' : [],
2876\ 'xml:lang' : [],
2877\ 'dir' : [
2878\ 'ltr',
2879\ 'rtl'
2880\ ]
2881\ }
2882\ ],
2883\ 'tbody' : [
2884\ [
2885\ 'tr'
2886\ ],
2887\ {
2888\ 'ondblclick' : [],
2889\ 'dir' : [
2890\ 'ltr',
2891\ 'rtl'
2892\ ],
2893\ 'onkeydown' : [],
2894\ 'onkeyup' : [],
2895\ 'onmouseup' : [],
2896\ 'id' : [],
2897\ 'charoff' : [],
2898\ 'onmouseover' : [],
2899\ 'lang' : [],
2900\ 'align' : [
2901\ 'left',
2902\ 'center',
2903\ 'right',
2904\ 'justify',
2905\ 'char'
2906\ ],
2907\ 'valign' : [
2908\ 'top',
2909\ 'middle',
2910\ 'bottom',
2911\ 'baseline'
2912\ ],
2913\ 'style' : [],
2914\ 'onmousemove' : [],
2915\ 'onmouseout' : [],
2916\ 'xml:lang' : [],
2917\ 'char' : [],
2918\ 'onmousedown' : [],
2919\ 'onkeypress' : [],
2920\ 'onclick' : [],
2921\ 'title' : [],
2922\ 'class' : []
2923\ }
2924\ ],
2925\ 'legend' : [
2926\ [
2927\ 'a',
2928\ 'br',
2929\ 'span',
2930\ 'bdo',
2931\ 'object',
2932\ 'img',
2933\ 'map',
2934\ 'tt',
2935\ 'i',
2936\ 'b',
2937\ 'big',
2938\ 'small',
2939\ 'em',
2940\ 'strong',
2941\ 'dfn',
2942\ 'code',
2943\ 'q',
2944\ 'sub',
2945\ 'sup',
2946\ 'samp',
2947\ 'kbd',
2948\ 'var',
2949\ 'cite',
2950\ 'abbr',
2951\ 'acronym',
2952\ 'input',
2953\ 'select',
2954\ 'textarea',
2955\ 'label',
2956\ 'button',
2957\ 'ins',
2958\ 'del',
2959\ 'script',
2960\ 'noscript'
2961\ ],
2962\ {
2963\ 'accesskey' : [],
2964\ 'onmouseover' : [],
2965\ 'lang' : [],
2966\ 'onmouseout' : [],
2967\ 'onmousemove' : [],
2968\ 'style' : [],
2969\ 'ondblclick' : [],
2970\ 'xml:lang' : [],
2971\ 'dir' : [
2972\ 'ltr',
2973\ 'rtl'
2974\ ],
2975\ 'onkeydown' : [],
2976\ 'onkeyup' : [],
2977\ 'onkeypress' : [],
2978\ 'onmousedown' : [],
2979\ 'onmouseup' : [],
2980\ 'id' : [],
2981\ 'class' : [],
2982\ 'title' : [],
2983\ 'onclick' : []
2984\ }
2985\ ],
2986\ 'dd' : [
2987\ [
2988\ 'p',
2989\ 'h1',
2990\ 'h2',
2991\ 'h3',
2992\ 'h4',
2993\ 'h5',
2994\ 'h6',
2995\ 'div',
2996\ 'ul',
2997\ 'ol',
2998\ 'dl',
2999\ 'pre',
3000\ 'hr',
3001\ 'blockquote',
3002\ 'address',
3003\ 'fieldset',
3004\ 'table',
3005\ 'form',
3006\ 'a',
3007\ 'br',
3008\ 'span',
3009\ 'bdo',
3010\ 'object',
3011\ 'img',
3012\ 'map',
3013\ 'tt',
3014\ 'i',
3015\ 'b',
3016\ 'big',
3017\ 'small',
3018\ 'em',
3019\ 'strong',
3020\ 'dfn',
3021\ 'code',
3022\ 'q',
3023\ 'sub',
3024\ 'sup',
3025\ 'samp',
3026\ 'kbd',
3027\ 'var',
3028\ 'cite',
3029\ 'abbr',
3030\ 'acronym',
3031\ 'input',
3032\ 'select',
3033\ 'textarea',
3034\ 'label',
3035\ 'button',
3036\ 'ins',
3037\ 'del',
3038\ 'script',
3039\ 'noscript'
3040\ ],
3041\ {
3042\ 'onmouseover' : [],
3043\ 'lang' : [],
3044\ 'onmouseout' : [],
3045\ 'onmousemove' : [],
3046\ 'style' : [],
3047\ 'ondblclick' : [],
3048\ 'xml:lang' : [],
3049\ 'dir' : [
3050\ 'ltr',
3051\ 'rtl'
3052\ ],
3053\ 'onkeydown' : [],
3054\ 'onkeyup' : [],
3055\ 'onkeypress' : [],
3056\ 'onmousedown' : [],
3057\ 'onmouseup' : [],
3058\ 'id' : [],
3059\ 'class' : [],
3060\ 'title' : [],
3061\ 'onclick' : []
3062\ }
3063\ ],
3064\ 'hr' : [[],
3065\ {
3066\ 'onmouseover' : [],
3067\ 'lang' : [],
3068\ 'onmouseout' : [],
3069\ 'onmousemove' : [],
3070\ 'style' : [],
3071\ 'ondblclick' : [],
3072\ 'xml:lang' : [],
3073\ 'dir' : [
3074\ 'ltr',
3075\ 'rtl'
3076\ ],
3077\ 'onkeydown' : [],
3078\ 'onkeyup' : [],
3079\ 'onkeypress' : [],
3080\ 'onmousedown' : [],
3081\ 'onmouseup' : [],
3082\ 'id' : [],
3083\ 'class' : [],
3084\ 'title' : [],
3085\ 'onclick' : []
3086\ }
3087\ ],
3088\ 'li' : [
3089\ [
3090\ 'p',
3091\ 'h1',
3092\ 'h2',
3093\ 'h3',
3094\ 'h4',
3095\ 'h5',
3096\ 'h6',
3097\ 'div',
3098\ 'ul',
3099\ 'ol',
3100\ 'dl',
3101\ 'pre',
3102\ 'hr',
3103\ 'blockquote',
3104\ 'address',
3105\ 'fieldset',
3106\ 'table',
3107\ 'form',
3108\ 'a',
3109\ 'br',
3110\ 'span',
3111\ 'bdo',
3112\ 'object',
3113\ 'img',
3114\ 'map',
3115\ 'tt',
3116\ 'i',
3117\ 'b',
3118\ 'big',
3119\ 'small',
3120\ 'em',
3121\ 'strong',
3122\ 'dfn',
3123\ 'code',
3124\ 'q',
3125\ 'sub',
3126\ 'sup',
3127\ 'samp',
3128\ 'kbd',
3129\ 'var',
3130\ 'cite',
3131\ 'abbr',
3132\ 'acronym',
3133\ 'input',
3134\ 'select',
3135\ 'textarea',
3136\ 'label',
3137\ 'button',
3138\ 'ins',
3139\ 'del',
3140\ 'script',
3141\ 'noscript'
3142\ ],
3143\ {
3144\ 'onmouseover' : [],
3145\ 'lang' : [],
3146\ 'onmouseout' : [],
3147\ 'onmousemove' : [],
3148\ 'style' : [],
3149\ 'ondblclick' : [],
3150\ 'xml:lang' : [],
3151\ 'dir' : [
3152\ 'ltr',
3153\ 'rtl'
3154\ ],
3155\ 'onkeydown' : [],
3156\ 'onkeyup' : [],
3157\ 'onkeypress' : [],
3158\ 'onmousedown' : [],
3159\ 'onmouseup' : [],
3160\ 'id' : [],
3161\ 'class' : [],
3162\ 'title' : [],
3163\ 'onclick' : []
3164\ }
3165\ ],
3166\ 'td' : [
3167\ [
3168\ 'p',
3169\ 'h1',
3170\ 'h2',
3171\ 'h3',
3172\ 'h4',
3173\ 'h5',
3174\ 'h6',
3175\ 'div',
3176\ 'ul',
3177\ 'ol',
3178\ 'dl',
3179\ 'pre',
3180\ 'hr',
3181\ 'blockquote',
3182\ 'address',
3183\ 'fieldset',
3184\ 'table',
3185\ 'form',
3186\ 'a',
3187\ 'br',
3188\ 'span',
3189\ 'bdo',
3190\ 'object',
3191\ 'img',
3192\ 'map',
3193\ 'tt',
3194\ 'i',
3195\ 'b',
3196\ 'big',
3197\ 'small',
3198\ 'em',
3199\ 'strong',
3200\ 'dfn',
3201\ 'code',
3202\ 'q',
3203\ 'sub',
3204\ 'sup',
3205\ 'samp',
3206\ 'kbd',
3207\ 'var',
3208\ 'cite',
3209\ 'abbr',
3210\ 'acronym',
3211\ 'input',
3212\ 'select',
3213\ 'textarea',
3214\ 'label',
3215\ 'button',
3216\ 'ins',
3217\ 'del',
3218\ 'script',
3219\ 'noscript'
3220\ ],
3221\ {
3222\ 'headers' : [],
3223\ 'ondblclick' : [],
3224\ 'axis' : [],
3225\ 'dir' : [
3226\ 'ltr',
3227\ 'rtl'
3228\ ],
3229\ 'abbr' : [],
3230\ 'onkeydown' : [],
3231\ 'onkeyup' : [],
3232\ 'onmouseup' : [],
3233\ 'id' : [],
3234\ 'onmouseover' : [],
3235\ 'lang' : [],
3236\ 'style' : [],
3237\ 'onmousemove' : [],
3238\ 'onmouseout' : [],
3239\ 'xml:lang' : [],
3240\ 'onmousedown' : [],
3241\ 'onkeypress' : [],
3242\ 'onclick' : [],
3243\ 'title' : [],
3244\ 'class' : []
3245\ }
3246\ ],
3247\ 'label' : [
3248\ [
3249\ 'a',
3250\ 'br',
3251\ 'span',
3252\ 'bdo',
3253\ 'object',
3254\ 'img',
3255\ 'map',
3256\ 'tt',
3257\ 'i',
3258\ 'b',
3259\ 'big',
3260\ 'small',
3261\ 'em',
3262\ 'strong',
3263\ 'dfn',
3264\ 'code',
3265\ 'q',
3266\ 'sub',
3267\ 'sup',
3268\ 'samp',
3269\ 'kbd',
3270\ 'var',
3271\ 'cite',
3272\ 'abbr',
3273\ 'acronym',
3274\ 'input',
3275\ 'select',
3276\ 'textarea',
3277\ 'label',
3278\ 'button',
3279\ 'ins',
3280\ 'del',
3281\ 'script',
3282\ 'noscript'
3283\ ],
3284\ {
3285\ 'onmouseover' : [],
3286\ 'lang' : [],
3287\ 'for' : [],
3288\ 'onmouseout' : [],
3289\ 'onmousemove' : [],
3290\ 'style' : [],
3291\ 'ondblclick' : [],
3292\ 'xml:lang' : [],
3293\ 'dir' : [
3294\ 'ltr',
3295\ 'rtl'
3296\ ],
3297\ 'onkeydown' : [],
3298\ 'onkeyup' : [],
3299\ 'onkeypress' : [],
3300\ 'onmousedown' : [],
3301\ 'onmouseup' : [],
3302\ 'id' : [],
3303\ 'class' : [],
3304\ 'title' : [],
3305\ 'onclick' : []
3306\ }
3307\ ],
3308\ 'dl' : [
3309\ [
3310\ 'dt',
3311\ 'dd'
3312\ ],
3313\ {
3314\ 'onmouseover' : [],
3315\ 'lang' : [],
3316\ 'onmouseout' : [],
3317\ 'onmousemove' : [],
3318\ 'style' : [],
3319\ 'ondblclick' : [],
3320\ 'xml:lang' : [],
3321\ 'dir' : [
3322\ 'ltr',
3323\ 'rtl'
3324\ ],
3325\ 'onkeydown' : [],
3326\ 'onkeyup' : [],
3327\ 'onkeypress' : [],
3328\ 'onmousedown' : [],
3329\ 'onmouseup' : [],
3330\ 'id' : [],
3331\ 'class' : [],
3332\ 'title' : [],
3333\ 'onclick' : []
3334\ }
3335\ ],
3336\ 'kbd' : [
3337\ [
3338\ 'a',
3339\ 'br',
3340\ 'span',
3341\ 'bdo',
3342\ 'object',
3343\ 'img',
3344\ 'map',
3345\ 'tt',
3346\ 'i',
3347\ 'b',
3348\ 'big',
3349\ 'small',
3350\ 'em',
3351\ 'strong',
3352\ 'dfn',
3353\ 'code',
3354\ 'q',
3355\ 'sub',
3356\ 'sup',
3357\ 'samp',
3358\ 'kbd',
3359\ 'var',
3360\ 'cite',
3361\ 'abbr',
3362\ 'acronym',
3363\ 'input',
3364\ 'select',
3365\ 'textarea',
3366\ 'label',
3367\ 'button',
3368\ 'ins',
3369\ 'del',
3370\ 'script',
3371\ 'noscript'
3372\ ],
3373\ {
3374\ 'onmouseover' : [],
3375\ 'lang' : [],
3376\ 'onmouseout' : [],
3377\ 'onmousemove' : [],
3378\ 'style' : [],
3379\ 'ondblclick' : [],
3380\ 'xml:lang' : [],
3381\ 'dir' : [
3382\ 'ltr',
3383\ 'rtl'
3384\ ],
3385\ 'onkeydown' : [],
3386\ 'onkeyup' : [],
3387\ 'onkeypress' : [],
3388\ 'onmousedown' : [],
3389\ 'onmouseup' : [],
3390\ 'id' : [],
3391\ 'class' : [],
3392\ 'title' : [],
3393\ 'onclick' : []
3394\ }
3395\ ],
3396\ 'div' : [
3397\ [
3398\ 'p',
3399\ 'h1',
3400\ 'h2',
3401\ 'h3',
3402\ 'h4',
3403\ 'h5',
3404\ 'h6',
3405\ 'div',
3406\ 'ul',
3407\ 'ol',
3408\ 'dl',
3409\ 'pre',
3410\ 'hr',
3411\ 'blockquote',
3412\ 'address',
3413\ 'fieldset',
3414\ 'table',
3415\ 'form',
3416\ 'a',
3417\ 'br',
3418\ 'span',
3419\ 'bdo',
3420\ 'object',
3421\ 'img',
3422\ 'map',
3423\ 'tt',
3424\ 'i',
3425\ 'b',
3426\ 'big',
3427\ 'small',
3428\ 'em',
3429\ 'strong',
3430\ 'dfn',
3431\ 'code',
3432\ 'q',
3433\ 'sub',
3434\ 'sup',
3435\ 'samp',
3436\ 'kbd',
3437\ 'var',
3438\ 'cite',
3439\ 'abbr',
3440\ 'acronym',
3441\ 'input',
3442\ 'select',
3443\ 'textarea',
3444\ 'label',
3445\ 'button',
3446\ 'ins',
3447\ 'del',
3448\ 'script',
3449\ 'noscript'
3450\ ],
3451\ {
3452\ 'onmouseover' : [],
3453\ 'lang' : [],
3454\ 'onmouseout' : [],
3455\ 'onmousemove' : [],
3456\ 'style' : [],
3457\ 'ondblclick' : [],
3458\ 'xml:lang' : [],
3459\ 'dir' : [
3460\ 'ltr',
3461\ 'rtl'
3462\ ],
3463\ 'onkeydown' : [],
3464\ 'onkeyup' : [],
3465\ 'onkeypress' : [],
3466\ 'onmousedown' : [],
3467\ 'onmouseup' : [],
3468\ 'id' : [],
3469\ 'class' : [],
3470\ 'title' : [],
3471\ 'onclick' : []
3472\ }
3473\ ],
3474\ 'object' : [
3475\ [
3476\ 'param',
3477\ 'p',
3478\ 'h1',
3479\ 'h2',
3480\ 'h3',
3481\ 'h4',
3482\ 'h5',
3483\ 'h6',
3484\ 'div',
3485\ 'ul',
3486\ 'ol',
3487\ 'dl',
3488\ 'pre',
3489\ 'hr',
3490\ 'blockquote',
3491\ 'address',
3492\ 'fieldset',
3493\ 'table',
3494\ 'form',
3495\ 'a',
3496\ 'br',
3497\ 'span',
3498\ 'bdo',
3499\ 'object',
3500\ 'img',
3501\ 'map',
3502\ 'tt',
3503\ 'i',
3504\ 'b',
3505\ 'big',
3506\ 'small',
3507\ 'em',
3508\ 'strong',
3509\ 'dfn',
3510\ 'code',
3511\ 'q',
3512\ 'sub',
3513\ 'sup',
3514\ 'samp',
3515\ 'kbd',
3516\ 'var',
3517\ 'cite',
3518\ 'abbr',
3519\ 'acronym',
3520\ 'input',
3521\ 'select',
3522\ 'textarea',
3523\ 'label',
3524\ 'button',
3525\ 'ins',
3526\ 'del',
3527\ 'script',
3528\ 'noscript'
3529\ ],
3530\ {
3531\ 'width' : [],
3532\ 'usemap' : [],
3533\ 'ondblclick' : [],
3534\ 'dir' : [
3535\ 'ltr',
3536\ 'rtl'
3537\ ],
3538\ 'onkeydown' : [],
3539\ 'onkeyup' : [],
3540\ 'onmouseup' : [],
3541\ 'id' : [],
3542\ 'onmouseover' : [],
3543\ 'tabindex' : [],
3544\ 'standby' : [],
3545\ 'archive' : [],
3546\ 'lang' : [],
3547\ 'classid' : [],
3548\ 'name' : [],
3549\ 'style' : [],
3550\ 'onmousemove' : [],
3551\ 'onmouseout' : [],
3552\ 'data' : [],
3553\ 'height' : [],
3554\ 'xml:lang' : [],
3555\ 'codetype' : [],
3556\ 'declare' : [
3557\ 'BOOL'
3558\ ],
3559\ 'onmousedown' : [],
3560\ 'onkeypress' : [],
3561\ 'type' : [],
3562\ 'onclick' : [],
3563\ 'title' : [],
3564\ 'class' : [],
3565\ 'codebase' : []
3566\ }
3567\ ],
3568\ 'dt' : [
3569\ [
3570\ 'a',
3571\ 'br',
3572\ 'span',
3573\ 'bdo',
3574\ 'object',
3575\ 'img',
3576\ 'map',
3577\ 'tt',
3578\ 'i',
3579\ 'b',
3580\ 'big',
3581\ 'small',
3582\ 'em',
3583\ 'strong',
3584\ 'dfn',
3585\ 'code',
3586\ 'q',
3587\ 'sub',
3588\ 'sup',
3589\ 'samp',
3590\ 'kbd',
3591\ 'var',
3592\ 'cite',
3593\ 'abbr',
3594\ 'acronym',
3595\ 'input',
3596\ 'select',
3597\ 'textarea',
3598\ 'label',
3599\ 'button',
3600\ 'ins',
3601\ 'del',
3602\ 'script',
3603\ 'noscript'
3604\ ],
3605\ {
3606\ 'onmouseover' : [],
3607\ 'lang' : [],
3608\ 'onmouseout' : [],
3609\ 'onmousemove' : [],
3610\ 'style' : [],
3611\ 'ondblclick' : [],
3612\ 'xml:lang' : [],
3613\ 'dir' : [
3614\ 'ltr',
3615\ 'rtl'
3616\ ],
3617\ 'onkeydown' : [],
3618\ 'onkeyup' : [],
3619\ 'onkeypress' : [],
3620\ 'onmousedown' : [],
3621\ 'onmouseup' : [],
3622\ 'id' : [],
3623\ 'class' : [],
3624\ 'title' : [],
3625\ 'onclick' : []
3626\ }
3627\ ],
3628\ 'pre' : [
3629\ [
3630\ 'a',
3631\ 'br',
3632\ 'span',
3633\ 'bdo',
3634\ 'map',
3635\ 'tt',
3636\ 'i',
3637\ 'b',
3638\ 'em',
3639\ 'strong',
3640\ 'dfn',
3641\ 'code',
3642\ 'q',
3643\ 'sub',
3644\ 'sup',
3645\ 'samp',
3646\ 'kbd',
3647\ 'var',
3648\ 'cite',
3649\ 'abbr',
3650\ 'acronym',
3651\ 'input',
3652\ 'select',
3653\ 'textarea',
3654\ 'label',
3655\ 'button'
3656\ ],
3657\ {
3658\ 'ondblclick' : [],
3659\ 'dir' : [
3660\ 'ltr',
3661\ 'rtl'
3662\ ],
3663\ 'onkeydown' : [],
3664\ 'onkeyup' : [],
3665\ 'onmouseup' : [],
3666\ 'id' : [],
3667\ 'onmouseover' : [],
3668\ 'lang' : [],
3669\ 'style' : [],
3670\ 'onmousemove' : [],
3671\ 'onmouseout' : [],
3672\ 'xml:lang' : [],
3673\ 'xml:space' : [
3674\ 'preserve'
3675\ ],
3676\ 'onmousedown' : [],
3677\ 'onkeypress' : [],
3678\ 'onclick' : [],
3679\ 'title' : [],
3680\ 'class' : []
3681\ }
3682\ ],
3683\ 'samp' : [
3684\ [
3685\ 'a',
3686\ 'br',
3687\ 'span',
3688\ 'bdo',
3689\ 'object',
3690\ 'img',
3691\ 'map',
3692\ 'tt',
3693\ 'i',
3694\ 'b',
3695\ 'big',
3696\ 'small',
3697\ 'em',
3698\ 'strong',
3699\ 'dfn',
3700\ 'code',
3701\ 'q',
3702\ 'sub',
3703\ 'sup',
3704\ 'samp',
3705\ 'kbd',
3706\ 'var',
3707\ 'cite',
3708\ 'abbr',
3709\ 'acronym',
3710\ 'input',
3711\ 'select',
3712\ 'textarea',
3713\ 'label',
3714\ 'button',
3715\ 'ins',
3716\ 'del',
3717\ 'script',
3718\ 'noscript'
3719\ ],
3720\ {
3721\ 'onmouseover' : [],
3722\ 'lang' : [],
3723\ 'onmouseout' : [],
3724\ 'onmousemove' : [],
3725\ 'style' : [],
3726\ 'ondblclick' : [],
3727\ 'xml:lang' : [],
3728\ 'dir' : [
3729\ 'ltr',
3730\ 'rtl'
3731\ ],
3732\ 'onkeydown' : [],
3733\ 'onkeyup' : [],
3734\ 'onkeypress' : [],
3735\ 'onmousedown' : [],
3736\ 'onmouseup' : [],
3737\ 'id' : [],
3738\ 'class' : [],
3739\ 'title' : [],
3740\ 'onclick' : []
3741\ }
3742\ ],
3743\ 'col' : [[],
3744\ {
3745\ 'disabled' : [
3746\ 'disabled'
3747\ ],
3748\ 'ondblclick' : [],
3749\ 'dir' : [
3750\ 'ltr',
3751\ 'rtl'
3752\ ],
3753\ 'onkeydown' : [],
3754\ 'onkeyup' : [],
3755\ 'onmouseup' : [],
3756\ 'id' : [],
3757\ 'onmouseover' : [],
3758\ 'lang' : [],
3759\ 'value' : [],
3760\ 'style' : [],
3761\ 'onmousemove' : [],
3762\ 'onmouseout' : [],
3763\ 'xml:lang' : [],
3764\ 'onmousedown' : [],
3765\ 'onkeypress' : [],
3766\ 'label' : [],
3767\ 'onclick' : [],
3768\ 'title' : [],
3769\ 'class' : [],
3770\ 'selected' : [
3771\ 'BOOL'
3772\ ]
3773\ }
3774\ ],
3775\ 'cite' : [
3776\ [
3777\ 'a',
3778\ 'br',
3779\ 'span',
3780\ 'bdo',
3781\ 'object',
3782\ 'img',
3783\ 'map',
3784\ 'tt',
3785\ 'i',
3786\ 'b',
3787\ 'big',
3788\ 'small',
3789\ 'em',
3790\ 'strong',
3791\ 'dfn',
3792\ 'code',
3793\ 'q',
3794\ 'sub',
3795\ 'sup',
3796\ 'samp',
3797\ 'kbd',
3798\ 'var',
3799\ 'cite',
3800\ 'abbr',
3801\ 'acronym',
3802\ 'input',
3803\ 'select',
3804\ 'textarea',
3805\ 'label',
3806\ 'button',
3807\ 'ins',
3808\ 'del',
3809\ 'script',
3810\ 'noscript'
3811\ ],
3812\ {
3813\ 'onmouseover' : [],
3814\ 'lang' : [],
3815\ 'onmouseout' : [],
3816\ 'onmousemove' : [],
3817\ 'style' : [],
3818\ 'ondblclick' : [],
3819\ 'xml:lang' : [],
3820\ 'dir' : [
3821\ 'ltr',
3822\ 'rtl'
3823\ ],
3824\ 'onkeydown' : [],
3825\ 'onkeyup' : [],
3826\ 'onkeypress' : [],
3827\ 'onmousedown' : [],
3828\ 'onmouseup' : [],
3829\ 'id' : [],
3830\ 'class' : [],
3831\ 'title' : [],
3832\ 'onclick' : []
3833\ }
3834\ ],
3835\ 'i' : [
3836\ [
3837\ 'a',
3838\ 'br',
3839\ 'span',
3840\ 'bdo',
3841\ 'object',
3842\ 'img',
3843\ 'map',
3844\ 'tt',
3845\ 'i',
3846\ 'b',
3847\ 'big',
3848\ 'small',
3849\ 'em',
3850\ 'strong',
3851\ 'dfn',
3852\ 'code',
3853\ 'q',
3854\ 'sub',
3855\ 'sup',
3856\ 'samp',
3857\ 'kbd',
3858\ 'var',
3859\ 'cite',
3860\ 'abbr',
3861\ 'acronym',
3862\ 'input',
3863\ 'select',
3864\ 'textarea',
3865\ 'label',
3866\ 'button',
3867\ 'ins',
3868\ 'del',
3869\ 'script',
3870\ 'noscript'
3871\ ],
3872\ {
3873\ 'onmouseover' : [],
3874\ 'lang' : [],
3875\ 'onmouseout' : [],
3876\ 'onmousemove' : [],
3877\ 'style' : [],
3878\ 'ondblclick' : [],
3879\ 'xml:lang' : [],
3880\ 'dir' : [
3881\ 'ltr',
3882\ 'rtl'
3883\ ],
3884\ 'onkeydown' : [],
3885\ 'onkeyup' : [],
3886\ 'onkeypress' : [],
3887\ 'onmousedown' : [],
3888\ 'onmouseup' : [],
3889\ 'id' : [],
3890\ 'class' : [],
3891\ 'title' : [],
3892\ 'onclick' : []
3893\ }
3894\ ],
3895\ 'select' : [
3896\ [
3897\ 'optgroup',
3898\ 'option'
3899\ ],
3900\ {
3901\ 'disabled' : [
3902\ 'BOOL'
3903\ ],
3904\ 'ondblclick' : [],
3905\ 'onblur' : [],
3906\ 'size' : [],
3907\ 'dir' : [
3908\ 'ltr',
3909\ 'rtl'
3910\ ],
3911\ 'onchange' : [],
3912\ 'onfocus' : [],
3913\ 'onkeydown' : [],
3914\ 'onkeyup' : [],
3915\ 'onmouseup' : [],
3916\ 'id' : [],
3917\ 'onmouseover' : [],
3918\ 'tabindex' : [],
3919\ 'lang' : [],
3920\ 'style' : [],
3921\ 'onmousemove' : [],
3922\ 'onmouseout' : [],
3923\ 'name' : [],
3924\ 'xml:lang' : [],
3925\ 'onmousedown' : [],
3926\ 'onkeypress' : [],
3927\ 'multiple' : [
3928\ 'multiple'
3929\ ],
3930\ 'onclick' : [],
3931\ 'title' : [],
3932\ 'class' : []
3933\ }
3934\ ],
3935\ 'link' : [[],
3936\ {
3937\ 'rel' : [],
3938\ 'ondblclick' : [],
3939\ 'dir' : [
3940\ 'ltr',
3941\ 'rtl'
3942\ ],
3943\ 'onkeydown' : [],
3944\ 'onkeyup' : [],
3945\ 'media' : [],
3946\ 'href' : [],
3947\ 'onmouseup' : [],
3948\ 'id' : [],
3949\ 'onmouseover' : [],
3950\ 'lang' : [],
3951\ 'style' : [],
3952\ 'onmousemove' : [],
3953\ 'onmouseout' : [],
3954\ 'charset' : [],
3955\ 'hreflang' : [],
3956\ 'xml:lang' : [],
3957\ 'onmousedown' : [],
3958\ 'onkeypress' : [],
3959\ 'rev' : [],
3960\ 'type' : [],
3961\ 'onclick' : [],
3962\ 'title' : [],
3963\ 'class' : []
3964\ }
3965\ ],
3966\ 'script' : [[],
3967\ {
3968\ 'defer' : [
3969\ 'BOOL'
3970\ ],
3971\ 'src' : [],
3972\ 'type' : [],
3973\ 'charset' : [],
3974\ 'xml:space' : [
3975\ 'preserve'
3976\ ]
3977\ }
3978\ ],
3979\ 'bdo' : [
3980\ [
3981\ 'a',
3982\ 'br',
3983\ 'span',
3984\ 'bdo',
3985\ 'object',
3986\ 'img',
3987\ 'map',
3988\ 'tt',
3989\ 'i',
3990\ 'b',
3991\ 'big',
3992\ 'small',
3993\ 'em',
3994\ 'strong',
3995\ 'dfn',
3996\ 'code',
3997\ 'q',
3998\ 'sub',
3999\ 'sup',
4000\ 'samp',
4001\ 'kbd',
4002\ 'var',
4003\ 'cite',
4004\ 'abbr',
4005\ 'acronym',
4006\ 'input',
4007\ 'select',
4008\ 'textarea',
4009\ 'label',
4010\ 'button',
4011\ 'ins',
4012\ 'del',
4013\ 'script',
4014\ 'noscript'
4015\ ],
4016\ {
4017\ 'onmouseover' : [],
4018\ 'lang' : [],
4019\ 'onmouseout' : [],
4020\ 'onmousemove' : [],
4021\ 'style' : [],
4022\ 'ondblclick' : [],
4023\ 'xml:lang' : [],
4024\ 'dir' : [
4025\ 'ltr',
4026\ 'rtl'
4027\ ],
4028\ 'onkeydown' : [],
4029\ 'onkeyup' : [],
4030\ 'onkeypress' : [],
4031\ 'onmousedown' : [],
4032\ 'onmouseup' : [],
4033\ 'id' : [],
4034\ 'class' : [],
4035\ 'title' : [],
4036\ 'onclick' : []
4037\ }
4038\ ],
4039\ 'colgroup' : [
4040\ [
4041\ 'col'
4042\ ],
4043\ {
4044\ 'width' : [],
4045\ 'ondblclick' : [],
4046\ 'dir' : [
4047\ 'ltr',
4048\ 'rtl'
4049\ ],
4050\ 'onkeydown' : [],
4051\ 'onkeyup' : [],
4052\ 'onmouseup' : [],
4053\ 'id' : [],
4054\ 'charoff' : [],
4055\ 'onmouseover' : [],
4056\ 'align' : [
4057\ 'left',
4058\ 'center',
4059\ 'right',
4060\ 'justify',
4061\ 'char'
4062\ ],
4063\ 'lang' : [],
4064\ 'valign' : [
4065\ 'top',
4066\ 'middle',
4067\ 'bottom',
4068\ 'baseline'
4069\ ],
4070\ 'style' : [],
4071\ 'onmousemove' : [],
4072\ 'onmouseout' : [],
4073\ 'xml:lang' : [],
4074\ 'char' : [],
4075\ 'onmousedown' : [],
4076\ 'onkeypress' : [],
4077\ 'onclick' : [],
4078\ 'title' : [],
4079\ 'class' : [],
4080\ 'span' : [
4081\ '',
4082\ '1',
4083\ ]
4084\ }
4085\ ],
4086\ 'h2' : [
4087\ [
4088\ 'a',
4089\ 'br',
4090\ 'span',
4091\ 'bdo',
4092\ 'object',
4093\ 'img',
4094\ 'map',
4095\ 'tt',
4096\ 'i',
4097\ 'b',
4098\ 'big',
4099\ 'small',
4100\ 'em',
4101\ 'strong',
4102\ 'dfn',
4103\ 'code',
4104\ 'q',
4105\ 'sub',
4106\ 'sup',
4107\ 'samp',
4108\ 'kbd',
4109\ 'var',
4110\ 'cite',
4111\ 'abbr',
4112\ 'acronym',
4113\ 'input',
4114\ 'select',
4115\ 'textarea',
4116\ 'label',
4117\ 'button',
4118\ 'ins',
4119\ 'del',
4120\ 'script',
4121\ 'noscript'
4122\ ],
4123\ {
4124\ 'onmouseover' : [],
4125\ 'lang' : [],
4126\ 'onmouseout' : [],
4127\ 'onmousemove' : [],
4128\ 'style' : [],
4129\ 'ondblclick' : [],
4130\ 'xml:lang' : [],
4131\ 'dir' : [
4132\ 'ltr',
4133\ 'rtl'
4134\ ],
4135\ 'onkeydown' : [],
4136\ 'onkeyup' : [],
4137\ 'onkeypress' : [],
4138\ 'onmousedown' : [],
4139\ 'onmouseup' : [],
4140\ 'id' : [],
4141\ 'class' : [],
4142\ 'title' : [],
4143\ 'onclick' : []
4144\ }
4145\ ],
4146\ 'ins' : [
4147\ [
4148\ 'p',
4149\ 'h1',
4150\ 'h2',
4151\ 'h3',
4152\ 'h4',
4153\ 'h5',
4154\ 'h6',
4155\ 'div',
4156\ 'ul',
4157\ 'ol',
4158\ 'dl',
4159\ 'pre',
4160\ 'hr',
4161\ 'blockquote',
4162\ 'address',
4163\ 'fieldset',
4164\ 'table',
4165\ 'form',
4166\ 'a',
4167\ 'br',
4168\ 'span',
4169\ 'bdo',
4170\ 'object',
4171\ 'img',
4172\ 'map',
4173\ 'tt',
4174\ 'i',
4175\ 'b',
4176\ 'big',
4177\ 'small',
4178\ 'em',
4179\ 'strong',
4180\ 'dfn',
4181\ 'code',
4182\ 'q',
4183\ 'sub',
4184\ 'sup',
4185\ 'samp',
4186\ 'kbd',
4187\ 'var',
4188\ 'cite',
4189\ 'abbr',
4190\ 'acronym',
4191\ 'input',
4192\ 'select',
4193\ 'textarea',
4194\ 'label',
4195\ 'button',
4196\ 'ins',
4197\ 'del',
4198\ 'script',
4199\ 'noscript'
4200\ ],
4201\ {
4202\ 'ondblclick' : [],
4203\ 'datetime' : [],
4204\ 'dir' : [
4205\ 'ltr',
4206\ 'rtl'
4207\ ],
4208\ 'onkeydown' : [],
4209\ 'onkeyup' : [],
4210\ 'onmouseup' : [],
4211\ 'id' : [],
4212\ 'cite' : [],
4213\ 'onmouseover' : [],
4214\ 'lang' : [],
4215\ 'style' : [],
4216\ 'onmousemove' : [],
4217\ 'onmouseout' : [],
4218\ 'xml:lang' : [],
4219\ 'onmousedown' : [],
4220\ 'onkeypress' : [],
4221\ 'onclick' : [],
4222\ 'title' : [],
4223\ 'class' : []
4224\ }
4225\ ],
4226\ 'p' : [
4227\ [
4228\ 'a',
4229\ 'br',
4230\ 'span',
4231\ 'bdo',
4232\ 'object',
4233\ 'img',
4234\ 'map',
4235\ 'tt',
4236\ 'i',
4237\ 'b',
4238\ 'big',
4239\ 'small',
4240\ 'em',
4241\ 'strong',
4242\ 'dfn',
4243\ 'code',
4244\ 'q',
4245\ 'sub',
4246\ 'sup',
4247\ 'samp',
4248\ 'kbd',
4249\ 'var',
4250\ 'cite',
4251\ 'abbr',
4252\ 'acronym',
4253\ 'input',
4254\ 'select',
4255\ 'textarea',
4256\ 'label',
4257\ 'button',
4258\ 'ins',
4259\ 'del',
4260\ 'script',
4261\ 'noscript'
4262\ ],
4263\ {
4264\ 'onmouseover' : [],
4265\ 'lang' : [],
4266\ 'onmouseout' : [],
4267\ 'onmousemove' : [],
4268\ 'style' : [],
4269\ 'ondblclick' : [],
4270\ 'xml:lang' : [],
4271\ 'dir' : [
4272\ 'ltr',
4273\ 'rtl'
4274\ ],
4275\ 'onkeydown' : [],
4276\ 'onkeyup' : [],
4277\ 'onkeypress' : [],
4278\ 'onmousedown' : [],
4279\ 'onmouseup' : [],
4280\ 'id' : [],
4281\ 'class' : [],
4282\ 'title' : [],
4283\ 'onclick' : []
4284\ }
4285\ ],
4286\ 'sub' : [
4287\ [
4288\ 'a',
4289\ 'br',
4290\ 'span',
4291\ 'bdo',
4292\ 'object',
4293\ 'img',
4294\ 'map',
4295\ 'tt',
4296\ 'i',
4297\ 'b',
4298\ 'big',
4299\ 'small',
4300\ 'em',
4301\ 'strong',
4302\ 'dfn',
4303\ 'code',
4304\ 'q',
4305\ 'sub',
4306\ 'sup',
4307\ 'samp',
4308\ 'kbd',
4309\ 'var',
4310\ 'cite',
4311\ 'abbr',
4312\ 'acronym',
4313\ 'input',
4314\ 'select',
4315\ 'textarea',
4316\ 'label',
4317\ 'button',
4318\ 'ins',
4319\ 'del',
4320\ 'script',
4321\ 'noscript'
4322\ ],
4323\ {
4324\ 'onmouseover' : [],
4325\ 'lang' : [],
4326\ 'onmouseout' : [],
4327\ 'onmousemove' : [],
4328\ 'style' : [],
4329\ 'ondblclick' : [],
4330\ 'xml:lang' : [],
4331\ 'dir' : [
4332\ 'ltr',
4333\ 'rtl'
4334\ ],
4335\ 'onkeydown' : [],
4336\ 'onkeyup' : [],
4337\ 'onkeypress' : [],
4338\ 'onmousedown' : [],
4339\ 'onmouseup' : [],
4340\ 'id' : [],
4341\ 'class' : [],
4342\ 'title' : [],
4343\ 'onclick' : []
4344\ }
4345\ ],
4346\ 'big' : [
4347\ [
4348\ 'a',
4349\ 'br',
4350\ 'span',
4351\ 'bdo',
4352\ 'object',
4353\ 'img',
4354\ 'map',
4355\ 'tt',
4356\ 'i',
4357\ 'b',
4358\ 'big',
4359\ 'small',
4360\ 'em',
4361\ 'strong',
4362\ 'dfn',
4363\ 'code',
4364\ 'q',
4365\ 'sub',
4366\ 'sup',
4367\ 'samp',
4368\ 'kbd',
4369\ 'var',
4370\ 'cite',
4371\ 'abbr',
4372\ 'acronym',
4373\ 'input',
4374\ 'select',
4375\ 'textarea',
4376\ 'label',
4377\ 'button',
4378\ 'ins',
4379\ 'del',
4380\ 'script',
4381\ 'noscript'
4382\ ],
4383\ {
4384\ 'onmouseover' : [],
4385\ 'lang' : [],
4386\ 'onmouseout' : [],
4387\ 'onmousemove' : [],
4388\ 'style' : [],
4389\ 'ondblclick' : [],
4390\ 'xml:lang' : [],
4391\ 'dir' : [
4392\ 'ltr',
4393\ 'rtl'
4394\ ],
4395\ 'onkeydown' : [],
4396\ 'onkeyup' : [],
4397\ 'onkeypress' : [],
4398\ 'onmousedown' : [],
4399\ 'onmouseup' : [],
4400\ 'id' : [],
4401\ 'class' : [],
4402\ 'title' : [],
4403\ 'onclick' : []
4404\ }
4405\ ],
4406\ 'fieldset' : [
4407\ [
4408\ 'legend',
4409\ 'p',
4410\ 'h1',
4411\ 'h2',
4412\ 'h3',
4413\ 'h4',
4414\ 'h5',
4415\ 'h6',
4416\ 'div',
4417\ 'ul',
4418\ 'ol',
4419\ 'dl',
4420\ 'pre',
4421\ 'hr',
4422\ 'blockquote',
4423\ 'address',
4424\ 'fieldset',
4425\ 'table',
4426\ 'form',
4427\ 'a',
4428\ 'br',
4429\ 'span',
4430\ 'bdo',
4431\ 'object',
4432\ 'img',
4433\ 'map',
4434\ 'tt',
4435\ 'i',
4436\ 'b',
4437\ 'big',
4438\ 'small',
4439\ 'em',
4440\ 'strong',
4441\ 'dfn',
4442\ 'code',
4443\ 'q',
4444\ 'sub',
4445\ 'sup',
4446\ 'samp',
4447\ 'kbd',
4448\ 'var',
4449\ 'cite',
4450\ 'abbr',
4451\ 'acronym',
4452\ 'input',
4453\ 'select',
4454\ 'textarea',
4455\ 'label',
4456\ 'button',
4457\ 'ins',
4458\ 'del',
4459\ 'script',
4460\ 'noscript'
4461\ ],
4462\ {
4463\ 'onmouseover' : [],
4464\ 'lang' : [],
4465\ 'onmouseout' : [],
4466\ 'onmousemove' : [],
4467\ 'style' : [],
4468\ 'ondblclick' : [],
4469\ 'xml:lang' : [],
4470\ 'dir' : [
4471\ 'ltr',
4472\ 'rtl'
4473\ ],
4474\ 'onkeydown' : [],
4475\ 'onkeyup' : [],
4476\ 'onkeypress' : [],
4477\ 'onmousedown' : [],
4478\ 'onmouseup' : [],
4479\ 'id' : [],
4480\ 'class' : [],
4481\ 'title' : [],
4482\ 'onclick' : []
4483\ }
4484\ ],
4485\ 'noscript' : [
4486\ [
4487\ 'p',
4488\ 'h1',
4489\ 'h2',
4490\ 'h3',
4491\ 'h4',
4492\ 'h5',
4493\ 'h6',
4494\ 'div',
4495\ 'ul',
4496\ 'ol',
4497\ 'dl',
4498\ 'pre',
4499\ 'hr',
4500\ 'blockquote',
4501\ 'address',
4502\ 'fieldset',
4503\ 'table',
4504\ 'form',
4505\ 'ins',
4506\ 'del',
4507\ 'script',
4508\ 'noscript'
4509\ ],
4510\ {
4511\ 'onmouseover' : [],
4512\ 'lang' : [],
4513\ 'onmouseout' : [],
4514\ 'onmousemove' : [],
4515\ 'style' : [],
4516\ 'ondblclick' : [],
4517\ 'xml:lang' : [],
4518\ 'dir' : [
4519\ 'ltr',
4520\ 'rtl'
4521\ ],
4522\ 'onkeydown' : [],
4523\ 'onkeyup' : [],
4524\ 'onkeypress' : [],
4525\ 'onmousedown' : [],
4526\ 'onmouseup' : [],
4527\ 'id' : [],
4528\ 'class' : [],
4529\ 'title' : [],
4530\ 'onclick' : []
4531\ }
4532\ ],
4533\ 'button' : [
4534\ [
4535\ 'p',
4536\ 'h1',
4537\ 'h2',
4538\ 'h3',
4539\ 'h4',
4540\ 'h5',
4541\ 'h6',
4542\ 'div',
4543\ 'ul',
4544\ 'ol',
4545\ 'dl',
4546\ 'pre',
4547\ 'hr',
4548\ 'blockquote',
4549\ 'address',
4550\ 'table',
4551\ 'br',
4552\ 'span',
4553\ 'bdo',
4554\ 'object',
4555\ 'img',
4556\ 'map',
4557\ 'tt',
4558\ 'i',
4559\ 'b',
4560\ 'big',
4561\ 'small',
4562\ 'em',
4563\ 'strong',
4564\ 'dfn',
4565\ 'code',
4566\ 'q',
4567\ 'sub',
4568\ 'sup',
4569\ 'samp',
4570\ 'kbd',
4571\ 'var',
4572\ 'cite',
4573\ 'abbr',
4574\ 'acronym',
4575\ 'ins',
4576\ 'del',
4577\ 'script',
4578\ 'noscript'
4579\ ],
4580\ {
4581\ 'accesskey' : [],
4582\ 'disabled' : [
4583\ 'disabled'
4584\ ],
4585\ 'ondblclick' : [],
4586\ 'onblur' : [],
4587\ 'dir' : [
4588\ 'ltr',
4589\ 'rtl'
4590\ ],
4591\ 'onfocus' : [],
4592\ 'onkeydown' : [],
4593\ 'onkeyup' : [],
4594\ 'onmouseup' : [],
4595\ 'id' : [],
4596\ 'onmouseover' : [],
4597\ 'tabindex' : [],
4598\ 'lang' : [],
4599\ 'value' : [],
4600\ 'style' : [],
4601\ 'onmousemove' : [],
4602\ 'onmouseout' : [],
4603\ 'name' : [],
4604\ 'xml:lang' : [],
4605\ 'onmousedown' : [],
4606\ 'onkeypress' : [],
4607\ 'type' : [
4608\ 'button',
4609\ 'submit',
4610\ 'reset'
4611\ ],
4612\ 'onclick' : [],
4613\ 'title' : [],
4614\ 'class' : []
4615\ }
4616\ ],
4617\ 'optgroup' : [
4618\ [
4619\ 'option'
4620\ ],
4621\ {
4622\ 'disabled' : [
4623\ 'disabled'
4624\ ],
4625\ 'ondblclick' : [],
4626\ 'dir' : [
4627\ 'ltr',
4628\ 'rtl'
4629\ ],
4630\ 'onkeydown' : [],
4631\ 'onkeyup' : [],
4632\ 'onmouseup' : [],
4633\ 'id' : [],
4634\ 'onmouseover' : [],
4635\ 'lang' : [],
4636\ 'style' : [],
4637\ 'onmousemove' : [],
4638\ 'onmouseout' : [],
4639\ 'xml:lang' : [],
4640\ 'onmousedown' : [],
4641\ 'onkeypress' : [],
4642\ 'label' : [],
4643\ 'onclick' : [],
4644\ 'title' : [],
4645\ 'class' : []
4646\ }
4647\ ]
4648\ }
4649endfunction
Bram Moolenaar8b6144b2006-02-08 09:20:24 +00004650" vim:set foldmethod=marker: