hpricot 0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ require 'hpricot_scan'
2
+ require 'hpricot/tag'
3
+ require 'hpricot/modules'
4
+ require 'hpricot/traverse'
5
+ require 'hpricot/inspect'
6
+ require 'hpricot/parse'
@@ -0,0 +1,292 @@
1
+ module Hpricot
2
+ class Elements < Array
3
+ def search(*expr,&blk)
4
+ map { |x| x.search(*expr,&blk) }.flatten.uniq
5
+ end
6
+ alias_method :/, :search
7
+
8
+ def at(expr, &blk)
9
+ search(expr, &blk).first
10
+ end
11
+ alias_method :%, :at
12
+
13
+ def to_html
14
+ map { |x| x.output("") }.join
15
+ end
16
+ alias_method :to_s, :to_html
17
+
18
+ def inner_html(*str)
19
+ if str.empty?
20
+ map { |x| x.inner_html }.join
21
+ else
22
+ x = self.inner_html = str.pop || x
23
+ end
24
+ end
25
+ alias_method :text, :inner_html
26
+ alias_method :html, :inner_html
27
+ alias_method :innerHTML, :inner_html
28
+
29
+ def inner_html=(str)
30
+ each { |x| x.inner_html = str }
31
+ end
32
+ alias_method :html=, :inner_html=
33
+ alias_method :innerHTML=, :inner_html=
34
+
35
+ def filter(expr)
36
+ nodes, = Elements.filter(self, expr)
37
+ nodes
38
+ end
39
+
40
+ def remove
41
+ each { |x| x.parent.children.delete(x) }
42
+ end
43
+
44
+ def empty
45
+ each { |x| x.inner_html = nil }
46
+ end
47
+
48
+ def append(str)
49
+ each { |x| x.inner_html += str }
50
+ end
51
+
52
+ def prepend(str)
53
+ each { |x| x.inner_html = str + x.inner_html }
54
+ end
55
+
56
+ def before(str)
57
+ each { |x| x.parent.insert_before Hpricot.make(str), x }
58
+ end
59
+
60
+ def after(str)
61
+ each { |x| x.parent.insert_after Hpricot.make(str), x }
62
+ end
63
+
64
+ def wrap(str)
65
+ each do |x|
66
+ wrap = Hpricot.make(str)
67
+ nest = wrap.detect { |w| w.respond_to? :children }
68
+ unless nest
69
+ raise Exception, "No wrapping element found."
70
+ end
71
+ x.parent.replace_child(x, wrap)
72
+ nest = nest.children.first until nest.empty?
73
+ nest.children << x
74
+ end
75
+ end
76
+
77
+ def not(expr)
78
+ if expr.is_a? Container::Trav
79
+ nodes = self - [expr]
80
+ else
81
+ nodes, = Elements.filter(self, expr, false)
82
+ end
83
+ nodes
84
+ end
85
+
86
+ def set(k, v = nil)
87
+ case k
88
+ when Hash
89
+ each do |node|
90
+ k.each { |a,b| node.set_attribute(a, b) }
91
+ end
92
+ else
93
+ each do |node|
94
+ node.set_attribute(k, v)
95
+ end
96
+ end
97
+ end
98
+
99
+ ATTR_RE = %r!\[ *(@)([a-zA-Z0-9\(\)_-]+) *([~\!\|\*$\^=]*) *'?"?([^'"]*)'?"? *\]!i
100
+ BRACK_RE = %r!(\[) *([^\]]*) *\]!i
101
+ FUNC_RE = %r!(:)([a-zA-Z0-9\*_-]*)\( *[\"']?([^ \)'\"]*)['\"]? *\)!
102
+ CATCH_RE = %r!([:\.#]*)([a-zA-Z0-9\*_-]+)!
103
+
104
+ def self.filter(nodes, expr, truth = true)
105
+ until expr.empty?
106
+ _, *m = *expr.match(/^(?:#{ATTR_RE}|#{BRACK_RE}|#{FUNC_RE}|#{CATCH_RE})/)
107
+ break unless _
108
+
109
+ expr = $'
110
+ m.compact!
111
+ if m[0] == '@'
112
+ m[0] = "@#{m.slice!(2,1)}"
113
+ end
114
+
115
+ if m[0] == ":" && m[1] == "not"
116
+ nodes, = Elements.filter(nodes, m[2], false)
117
+ else
118
+ meth = "filter[#{m[0]}]"
119
+ if Container::Trav.method_defined? meth
120
+ args = m[1..-1]
121
+ else
122
+ meth = "filter[#{m[0]}#{m[1]}]"
123
+ if Container::Trav.method_defined? meth
124
+ args = m[2..-1]
125
+ end
126
+ end
127
+ i = -1
128
+ nodes = Elements[*nodes.find_all do |x|
129
+ i += 1
130
+ x.send(meth, *([*args] + [i])) ? truth : !truth
131
+ end]
132
+ end
133
+ end
134
+ [nodes, expr]
135
+ end
136
+
137
+ def inspect; "#<#{self.class}#{super}>" end
138
+
139
+ private
140
+ def copy_node(node, l)
141
+ l.instance_variables.each do |iv|
142
+ node.instance_variable_set(iv, l.instance_variable_get(iv))
143
+ end
144
+ end
145
+
146
+ end
147
+
148
+ module Container::Trav
149
+ def self.filter(tok, &blk)
150
+ define_method("filter[#{tok.is_a?(String) ? tok : tok.inspect}]", &blk)
151
+ end
152
+
153
+ filter '' do |name,i|
154
+ name == '*' || self.name.downcase == name.downcase
155
+ end
156
+
157
+ filter '#' do |id,i|
158
+ get_attribute('id').to_s == id
159
+ end
160
+
161
+ filter '.' do |name,i|
162
+ classes.include? name
163
+ end
164
+
165
+ filter :lt do |num,i|
166
+ parent.containers.index(self) < num.to_i
167
+ end
168
+
169
+ filter :gt do |num,i|
170
+ parent.containers.index(self) > num.to_i
171
+ end
172
+
173
+ nth = proc { |num,i| parent.containers.index(self) == num.to_i }
174
+
175
+ filter :nth, &nth
176
+ filter :eq, &nth
177
+
178
+ filter :first do |num,i|
179
+ parent.containers.index(self) == 0
180
+ end
181
+
182
+ filter :last do |i|
183
+ self == parent.containers.last
184
+ end
185
+
186
+ filter :even do |num,i|
187
+ parent.containers.index(self) % 2 == 0
188
+ end
189
+
190
+ filter :odd do |num,i|
191
+ parent.containers.index(self) % 2 == 1
192
+ end
193
+
194
+ filter ':first-child' do |i|
195
+ self == parent.containers.first
196
+ end
197
+
198
+ filter ':nth-child' do |arg,i|
199
+ case arg
200
+ when 'even'; parent.containers.index(self) % 2 == 0
201
+ when 'odd'; parent.containers.index(self) % 2 == 1
202
+ else self == parent.containers[arg.to_i]
203
+ end
204
+ end
205
+
206
+ filter ":last-child" do |i|
207
+ self == parent.containers.first
208
+ end
209
+
210
+ filter ":nth-last-child" do |arg,i|
211
+ self == parent.containers[-1-arg.to_i]
212
+ end
213
+
214
+ filter ":first-of-type" do |i|
215
+ self == parent.containers.detect { |x| x.name == arg }
216
+ end
217
+
218
+ filter ":nth-of-type" do |arg,i|
219
+ self == parent.containers.find_all { |x| x.name == arg }[arg.to_i]
220
+ end
221
+
222
+ filter ":last-of-type" do |i|
223
+ self == parent.containers.find_all { |x| x.name == self.name }.last
224
+ end
225
+
226
+ filter :"nth-last-of-type" do |arg,i|
227
+ self == parent.containers.find_all { |x| x.name == arg }[-1-arg.to_i]
228
+ end
229
+
230
+ filter ":only-of-type" do |arg,i|
231
+ of_type = parent.containers.find_all { |x| x.name == arg }
232
+ of_type.length == 1
233
+ end
234
+
235
+ filter ":only-child" do |arg,i|
236
+ parent.containers.length == 1
237
+ end
238
+
239
+ filter :parent do
240
+ childNodes.length > 0
241
+ end
242
+
243
+ filter :empty do
244
+ childNodes.length == 0
245
+ end
246
+
247
+ filter :root do
248
+ self.is_a? Hpricot::Doc
249
+ end
250
+
251
+ filter :contains do |arg,|
252
+ html.include? arg
253
+ end
254
+
255
+ filter '@=' do |attr,val,i|
256
+ get_attribute(attr).to_s == val
257
+ end
258
+
259
+ filter '@!=' do |attr,val,i|
260
+ get_attribute(attr).to_s != val
261
+ end
262
+
263
+ filter '@~=' do |attr,val,i|
264
+ get_attribute(attr).to_s.split(/\s+/).include? val
265
+ end
266
+
267
+ filter '@|=' do |attr,val,i|
268
+ get_attribute(attr).to_s =~ /^#{Regexp::quote val}(-|$)/
269
+ end
270
+
271
+ filter '@^=' do |attr,val,i|
272
+ get_attribute(attr).to_s.index(val) == 0
273
+ end
274
+
275
+ filter '@$=' do |attr,val,i|
276
+ get_attribute(attr).to_s =~ /#{Regexp::quote val}$/
277
+ end
278
+
279
+ filter '@*=' do |attr,val,i|
280
+ get_attribute(attr).to_s.index(val) >= 0
281
+ end
282
+
283
+ filter '@' do |attr,val,i|
284
+ has_attribute? attr
285
+ end
286
+
287
+ filter '[' do |val,i|
288
+ search(val).length > 0
289
+ end
290
+
291
+ end
292
+ end
@@ -0,0 +1,672 @@
1
+ module Hpricot
2
+ # The code below is auto-generated. Don't edit manually.
3
+ # :stopdoc:
4
+ NamedCharacters =
5
+ {"AElig"=>198, "Aacute"=>193, "Acirc"=>194, "Agrave"=>192, "Alpha"=>913,
6
+ "Aring"=>197, "Atilde"=>195, "Auml"=>196, "Beta"=>914, "Ccedil"=>199,
7
+ "Chi"=>935, "Dagger"=>8225, "Delta"=>916, "ETH"=>208, "Eacute"=>201,
8
+ "Ecirc"=>202, "Egrave"=>200, "Epsilon"=>917, "Eta"=>919, "Euml"=>203,
9
+ "Gamma"=>915, "Iacute"=>205, "Icirc"=>206, "Igrave"=>204, "Iota"=>921,
10
+ "Iuml"=>207, "Kappa"=>922, "Lambda"=>923, "Mu"=>924, "Ntilde"=>209, "Nu"=>925,
11
+ "OElig"=>338, "Oacute"=>211, "Ocirc"=>212, "Ograve"=>210, "Omega"=>937,
12
+ "Omicron"=>927, "Oslash"=>216, "Otilde"=>213, "Ouml"=>214, "Phi"=>934,
13
+ "Pi"=>928, "Prime"=>8243, "Psi"=>936, "Rho"=>929, "Scaron"=>352, "Sigma"=>931,
14
+ "THORN"=>222, "Tau"=>932, "Theta"=>920, "Uacute"=>218, "Ucirc"=>219,
15
+ "Ugrave"=>217, "Upsilon"=>933, "Uuml"=>220, "Xi"=>926, "Yacute"=>221,
16
+ "Yuml"=>376, "Zeta"=>918, "aacute"=>225, "acirc"=>226, "acute"=>180,
17
+ "aelig"=>230, "agrave"=>224, "alefsym"=>8501, "alpha"=>945, "amp"=>38,
18
+ "and"=>8743, "ang"=>8736, "apos"=>39, "aring"=>229, "asymp"=>8776,
19
+ "atilde"=>227, "auml"=>228, "bdquo"=>8222, "beta"=>946, "brvbar"=>166,
20
+ "bull"=>8226, "cap"=>8745, "ccedil"=>231, "cedil"=>184, "cent"=>162,
21
+ "chi"=>967, "circ"=>710, "clubs"=>9827, "cong"=>8773, "copy"=>169,
22
+ "crarr"=>8629, "cup"=>8746, "curren"=>164, "dArr"=>8659, "dagger"=>8224,
23
+ "darr"=>8595, "deg"=>176, "delta"=>948, "diams"=>9830, "divide"=>247,
24
+ "eacute"=>233, "ecirc"=>234, "egrave"=>232, "empty"=>8709, "emsp"=>8195,
25
+ "ensp"=>8194, "epsilon"=>949, "equiv"=>8801, "eta"=>951, "eth"=>240,
26
+ "euml"=>235, "euro"=>8364, "exist"=>8707, "fnof"=>402, "forall"=>8704,
27
+ "frac12"=>189, "frac14"=>188, "frac34"=>190, "frasl"=>8260, "gamma"=>947,
28
+ "ge"=>8805, "gt"=>62, "hArr"=>8660, "harr"=>8596, "hearts"=>9829,
29
+ "hellip"=>8230, "iacute"=>237, "icirc"=>238, "iexcl"=>161, "igrave"=>236,
30
+ "image"=>8465, "infin"=>8734, "int"=>8747, "iota"=>953, "iquest"=>191,
31
+ "isin"=>8712, "iuml"=>239, "kappa"=>954, "lArr"=>8656, "lambda"=>955,
32
+ "lang"=>9001, "laquo"=>171, "larr"=>8592, "lceil"=>8968, "ldquo"=>8220,
33
+ "le"=>8804, "lfloor"=>8970, "lowast"=>8727, "loz"=>9674, "lrm"=>8206,
34
+ "lsaquo"=>8249, "lsquo"=>8216, "lt"=>60, "macr"=>175, "mdash"=>8212,
35
+ "micro"=>181, "middot"=>183, "minus"=>8722, "mu"=>956, "nabla"=>8711,
36
+ "nbsp"=>160, "ndash"=>8211, "ne"=>8800, "ni"=>8715, "not"=>172, "notin"=>8713,
37
+ "nsub"=>8836, "ntilde"=>241, "nu"=>957, "oacute"=>243, "ocirc"=>244,
38
+ "oelig"=>339, "ograve"=>242, "oline"=>8254, "omega"=>969, "omicron"=>959,
39
+ "oplus"=>8853, "or"=>8744, "ordf"=>170, "ordm"=>186, "oslash"=>248,
40
+ "otilde"=>245, "otimes"=>8855, "ouml"=>246, "para"=>182, "part"=>8706,
41
+ "permil"=>8240, "perp"=>8869, "phi"=>966, "pi"=>960, "piv"=>982,
42
+ "plusmn"=>177, "pound"=>163, "prime"=>8242, "prod"=>8719, "prop"=>8733,
43
+ "psi"=>968, "quot"=>34, "rArr"=>8658, "radic"=>8730, "rang"=>9002,
44
+ "raquo"=>187, "rarr"=>8594, "rceil"=>8969, "rdquo"=>8221, "real"=>8476,
45
+ "reg"=>174, "rfloor"=>8971, "rho"=>961, "rlm"=>8207, "rsaquo"=>8250,
46
+ "rsquo"=>8217, "sbquo"=>8218, "scaron"=>353, "sdot"=>8901, "sect"=>167,
47
+ "shy"=>173, "sigma"=>963, "sigmaf"=>962, "sim"=>8764, "spades"=>9824,
48
+ "sub"=>8834, "sube"=>8838, "sum"=>8721, "sup"=>8835, "sup1"=>185, "sup2"=>178,
49
+ "sup3"=>179, "supe"=>8839, "szlig"=>223, "tau"=>964, "there4"=>8756,
50
+ "theta"=>952, "thetasym"=>977, "thinsp"=>8201, "thorn"=>254, "tilde"=>732,
51
+ "times"=>215, "trade"=>8482, "uArr"=>8657, "uacute"=>250, "uarr"=>8593,
52
+ "ucirc"=>251, "ugrave"=>249, "uml"=>168, "upsih"=>978, "upsilon"=>965,
53
+ "uuml"=>252, "weierp"=>8472, "xi"=>958, "yacute"=>253, "yen"=>165,
54
+ "yuml"=>255, "zeta"=>950, "zwj"=>8205, "zwnj"=>8204}
55
+
56
+
57
+ NamedCharactersPattern = /\A(?-mix: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|Tau|Theta|Uacute|Ucirc|Ugrave|Upsilon|Uuml|Xi|Yacute|Yuml|Zeta|aacute|acirc|acute|aelig|agrave|alefsym|alpha|amp|and|ang|apos|aring|asymp|atilde|auml|bdquo|beta|brvbar|bull|cap|ccedil|cedil|cent|chi|circ|clubs|cong|copy|crarr|cup|curren|dArr|dagger|darr|deg|delta|diams|divide|eacute|ecirc|egrave|empty|emsp|ensp|epsilon|equiv|eta|eth|euml|euro|exist|fnof|forall|frac12|frac14|frac34|frasl|gamma|ge|gt|hArr|harr|hearts|hellip|iacute|icirc|iexcl|igrave|image|infin|int|iota|iquest|isin|iuml|kappa|lArr|lambda|lang|laquo|larr|lceil|ldquo|le|lfloor|lowast|loz|lrm|lsaquo|lsquo|lt|macr|mdash|micro|middot|minus|mu|nabla|nbsp|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|radic|rang|raquo|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)\z/
58
+
59
+ ElementContent =
60
+ {"h6"=>
61
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
62
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
63
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
64
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
65
+ "tt", "u", "var"],
66
+ "object"=>
67
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
68
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
69
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
70
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
71
+ "menu", "noframes", "noscript", "object", "ol", "p", "param", "pre", "q",
72
+ "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub",
73
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
74
+ "dl"=>["dd", "dt"],
75
+ "p"=>
76
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
77
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
78
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
79
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
80
+ "tt", "u", "var"],
81
+ "acronym"=>
82
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
83
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
84
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
85
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
86
+ "tt", "u", "var"],
87
+ "code"=>
88
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
89
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
90
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
91
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
92
+ "tt", "u", "var"],
93
+ "ul"=>["li"],
94
+ "tt"=>
95
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
96
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
97
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
98
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
99
+ "tt", "u", "var"],
100
+ "label"=>
101
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
102
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
103
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
104
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
105
+ "tt", "u", "var"],
106
+ "form"=>
107
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
108
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
109
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
110
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
111
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
112
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
113
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
114
+ "q"=>
115
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
116
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
117
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
118
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
119
+ "tt", "u", "var"],
120
+ "thead"=>["tr"],
121
+ "area"=>:EMPTY,
122
+ "td"=>
123
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
124
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
125
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
126
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
127
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
128
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
129
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
130
+ "title"=>[],
131
+ "dir"=>["li"],
132
+ "s"=>
133
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
134
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
135
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
136
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
137
+ "tt", "u", "var"],
138
+ "ol"=>["li"],
139
+ "hr"=>:EMPTY,
140
+ "applet"=>
141
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
142
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
143
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
144
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
145
+ "menu", "noframes", "noscript", "object", "ol", "p", "param", "pre", "q",
146
+ "s", "samp", "script", "select", "small", "span", "strike", "strong", "sub",
147
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
148
+ "table"=>["caption", "col", "colgroup", "tbody", "tfoot", "thead", "tr"],
149
+ "legend"=>
150
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
151
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
152
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
153
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
154
+ "tt", "u", "var"],
155
+ "cite"=>
156
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
157
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
158
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
159
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
160
+ "tt", "u", "var"],
161
+ "a"=>
162
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
163
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
164
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
165
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
166
+ "tt", "u", "var"],
167
+ "html"=>
168
+ ["a", "abbr", "acronym", "address", "applet", "b", "base", "basefont", "bdo",
169
+ "big", "blockquote", "body", "br", "button", "center", "cite", "code",
170
+ "dfn", "dir", "div", "dl", "em", "fieldset", "font", "form", "h1", "h2",
171
+ "h3", "h4", "h5", "h6", "head", "hr", "i", "iframe", "img", "input",
172
+ "isindex", "kbd", "label", "map", "menu", "noframes", "noscript", "object",
173
+ "ol", "p", "pre", "q", "s", "samp", "script", "select", "small", "span",
174
+ "strike", "strong", "sub", "sup", "table", "textarea", "title", "tt", "u",
175
+ "ul", "var"],
176
+ "u"=>
177
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
178
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
179
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
180
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
181
+ "tt", "u", "var"],
182
+ "blockquote"=>
183
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
184
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
185
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
186
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
187
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
188
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
189
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
190
+ "center"=>
191
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
192
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
193
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
194
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
195
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
196
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
197
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
198
+ "b"=>
199
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
200
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
201
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
202
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
203
+ "tt", "u", "var"],
204
+ "base"=>:EMPTY,
205
+ "th"=>
206
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
207
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
208
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
209
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
210
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
211
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
212
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
213
+ "link"=>:EMPTY,
214
+ "var"=>
215
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
216
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
217
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
218
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
219
+ "tt", "u", "var"],
220
+ "samp"=>
221
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
222
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
223
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
224
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
225
+ "tt", "u", "var"],
226
+ "div"=>
227
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
228
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
229
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
230
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
231
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
232
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
233
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
234
+ "textarea"=>[],
235
+ "pre"=>
236
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
237
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
238
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
239
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
240
+ "tt", "u", "var"],
241
+ "head"=>["base", "isindex", "title"],
242
+ "span"=>
243
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
244
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
245
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
246
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
247
+ "tt", "u", "var"],
248
+ "br"=>:EMPTY,
249
+ "script"=>:CDATA,
250
+ "noframes"=>
251
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
252
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
253
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
254
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
255
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
256
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
257
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
258
+ "style"=>:CDATA,
259
+ "meta"=>:EMPTY,
260
+ "dt"=>
261
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
262
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
263
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
264
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
265
+ "tt", "u", "var"],
266
+ "option"=>[],
267
+ "kbd"=>
268
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
269
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
270
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
271
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
272
+ "tt", "u", "var"],
273
+ "big"=>
274
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
275
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
276
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
277
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
278
+ "tt", "u", "var"],
279
+ "tfoot"=>["tr"],
280
+ "sup"=>
281
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
282
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
283
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
284
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
285
+ "tt", "u", "var"],
286
+ "bdo"=>
287
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
288
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
289
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
290
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
291
+ "tt", "u", "var"],
292
+ "isindex"=>:EMPTY,
293
+ "dfn"=>
294
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
295
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
296
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
297
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
298
+ "tt", "u", "var"],
299
+ "fieldset"=>
300
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
301
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
302
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
303
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "legend",
304
+ "map", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
305
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
306
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
307
+ "em"=>
308
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
309
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
310
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
311
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
312
+ "tt", "u", "var"],
313
+ "font"=>
314
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
315
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
316
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
317
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
318
+ "tt", "u", "var"],
319
+ "tbody"=>["tr"],
320
+ "noscript"=>
321
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
322
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
323
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
324
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
325
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
326
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
327
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
328
+ "li"=>
329
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
330
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
331
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
332
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
333
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
334
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
335
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
336
+ "col"=>:EMPTY,
337
+ "small"=>
338
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
339
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
340
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
341
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
342
+ "tt", "u", "var"],
343
+ "dd"=>
344
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
345
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
346
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
347
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
348
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
349
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
350
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
351
+ "i"=>
352
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
353
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
354
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
355
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
356
+ "tt", "u", "var"],
357
+ "menu"=>["li"],
358
+ "strong"=>
359
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
360
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
361
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
362
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
363
+ "tt", "u", "var"],
364
+ "basefont"=>:EMPTY,
365
+ "img"=>:EMPTY,
366
+ "optgroup"=>["option"],
367
+ "map"=>
368
+ ["address", "area", "blockquote", "center", "dir", "div", "dl", "fieldset",
369
+ "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "isindex", "menu",
370
+ "noframes", "noscript", "ol", "p", "pre", "table", "ul"],
371
+ "h1"=>
372
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
373
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
374
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
375
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
376
+ "tt", "u", "var"],
377
+ "address"=>
378
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
379
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
380
+ "input", "kbd", "label", "map", "object", "p", "q", "s", "samp", "script",
381
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
382
+ "tt", "u", "var"],
383
+ "sub"=>
384
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
385
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
386
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
387
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
388
+ "tt", "u", "var"],
389
+ "param"=>:EMPTY,
390
+ "input"=>:EMPTY,
391
+ "h2"=>
392
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
393
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
394
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
395
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
396
+ "tt", "u", "var"],
397
+ "abbr"=>
398
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
399
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
400
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
401
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
402
+ "tt", "u", "var"],
403
+ "h3"=>
404
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
405
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
406
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
407
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
408
+ "tt", "u", "var"],
409
+ "strike"=>
410
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
411
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
412
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
413
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
414
+ "tt", "u", "var"],
415
+ "body"=>
416
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
417
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
418
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
419
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
420
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
421
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
422
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
423
+ "ins"=>
424
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
425
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
426
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
427
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
428
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
429
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
430
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
431
+ "button"=>
432
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
433
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
434
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
435
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
436
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
437
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
438
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
439
+ "h4"=>
440
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
441
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
442
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
443
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
444
+ "tt", "u", "var"],
445
+ "select"=>["optgroup", "option"],
446
+ "caption"=>
447
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
448
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
449
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
450
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
451
+ "tt", "u", "var"],
452
+ "colgroup"=>["col"],
453
+ "tr"=>["td", "th"],
454
+ "del"=>
455
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
456
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
457
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
458
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
459
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
460
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
461
+ "sup", "table", "textarea", "tt", "u", "ul", "var"],
462
+ "h5"=>
463
+ ["a", "abbr", "acronym", "applet", "b", "basefont", "bdo", "big", "br",
464
+ "button", "cite", "code", "dfn", "em", "font", "i", "iframe", "img",
465
+ "input", "kbd", "label", "map", "object", "q", "s", "samp", "script",
466
+ "select", "small", "span", "strike", "strong", "sub", "sup", "textarea",
467
+ "tt", "u", "var"],
468
+ "iframe"=>
469
+ ["a", "abbr", "acronym", "address", "applet", "b", "basefont", "bdo", "big",
470
+ "blockquote", "br", "button", "center", "cite", "code", "dfn", "dir", "div",
471
+ "dl", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6",
472
+ "hr", "i", "iframe", "img", "input", "isindex", "kbd", "label", "map",
473
+ "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "s",
474
+ "samp", "script", "select", "small", "span", "strike", "strong", "sub",
475
+ "sup", "table", "textarea", "tt", "u", "ul", "var"]}
476
+
477
+ ElementInclusions =
478
+ {"head"=>["link", "meta", "object", "script", "style"], "body"=>["del", "ins"]}
479
+
480
+ ElementExclusions =
481
+ {"button"=>
482
+ ["a", "button", "fieldset", "form", "iframe", "input", "isindex", "label",
483
+ "select", "textarea"],
484
+ "a"=>["a"],
485
+ "dir"=>
486
+ ["address", "blockquote", "center", "dir", "div", "dl", "fieldset", "form",
487
+ "h1", "h2", "h3", "h4", "h5", "h6", "hr", "isindex", "menu", "noframes",
488
+ "noscript", "ol", "p", "pre", "table", "ul"],
489
+ "title"=>["link", "meta", "object", "script", "style"],
490
+ "pre"=>
491
+ ["applet", "basefont", "big", "font", "img", "object", "small", "sub",
492
+ "sup"],
493
+ "form"=>["form"],
494
+ "menu"=>
495
+ ["address", "blockquote", "center", "dir", "div", "dl", "fieldset", "form",
496
+ "h1", "h2", "h3", "h4", "h5", "h6", "hr", "isindex", "menu", "noframes",
497
+ "noscript", "ol", "p", "pre", "table", "ul"],
498
+ "label"=>["label"]}
499
+
500
+ OmittedAttrName =
501
+ {"h6"=>
502
+ {"center"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
503
+ "right"=>"align", "rtl"=>"dir"},
504
+ "object"=>
505
+ {"bottom"=>"align", "declare"=>"declare", "left"=>"align", "ltr"=>"dir",
506
+ "middle"=>"align", "right"=>"align", "rtl"=>"dir", "top"=>"align"},
507
+ "dl"=>{"compact"=>"compact", "ltr"=>"dir", "rtl"=>"dir"},
508
+ "p"=>
509
+ {"center"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
510
+ "right"=>"align", "rtl"=>"dir"},
511
+ "acronym"=>{"ltr"=>"dir", "rtl"=>"dir"},
512
+ "code"=>{"ltr"=>"dir", "rtl"=>"dir"},
513
+ "ul"=>
514
+ {"circle"=>"type", "compact"=>"compact", "disc"=>"type", "ltr"=>"dir",
515
+ "rtl"=>"dir", "square"=>"type"},
516
+ "tt"=>{"ltr"=>"dir", "rtl"=>"dir"},
517
+ "label"=>{"ltr"=>"dir", "rtl"=>"dir"},
518
+ "form"=>{"get"=>"method", "ltr"=>"dir", "post"=>"method", "rtl"=>"dir"},
519
+ "q"=>{"ltr"=>"dir", "rtl"=>"dir"},
520
+ "thead"=>
521
+ {"baseline"=>"valign", "bottom"=>"valign", "center"=>"align",
522
+ "char"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
523
+ "middle"=>"valign", "right"=>"align", "rtl"=>"dir", "top"=>"valign"},
524
+ "area"=>
525
+ {"circle"=>"shape", "default"=>"shape", "ltr"=>"dir", "nohref"=>"nohref",
526
+ "poly"=>"shape", "rect"=>"shape", "rtl"=>"dir"},
527
+ "td"=>
528
+ {"baseline"=>"valign", "bottom"=>"valign", "center"=>"align",
529
+ "char"=>"align", "col"=>"scope", "colgroup"=>"scope", "justify"=>"align",
530
+ "left"=>"align", "ltr"=>"dir", "middle"=>"valign", "nowrap"=>"nowrap",
531
+ "right"=>"align", "row"=>"scope", "rowgroup"=>"scope", "rtl"=>"dir",
532
+ "top"=>"valign"},
533
+ "title"=>{"ltr"=>"dir", "rtl"=>"dir"},
534
+ "dir"=>{"compact"=>"compact", "ltr"=>"dir", "rtl"=>"dir"},
535
+ "s"=>{"ltr"=>"dir", "rtl"=>"dir"},
536
+ "ol"=>{"compact"=>"compact", "ltr"=>"dir", "rtl"=>"dir"},
537
+ "hr"=>
538
+ {"center"=>"align", "left"=>"align", "ltr"=>"dir", "noshade"=>"noshade",
539
+ "right"=>"align", "rtl"=>"dir"},
540
+ "applet"=>
541
+ {"bottom"=>"align", "left"=>"align", "middle"=>"align", "right"=>"align",
542
+ "top"=>"align"},
543
+ "table"=>
544
+ {"above"=>"frame", "all"=>"rules", "below"=>"frame", "border"=>"frame",
545
+ "box"=>"frame", "center"=>"align", "cols"=>"rules", "groups"=>"rules",
546
+ "hsides"=>"frame", "left"=>"align", "lhs"=>"frame", "ltr"=>"dir",
547
+ "none"=>"rules", "rhs"=>"frame", "right"=>"align", "rows"=>"rules",
548
+ "rtl"=>"dir", "void"=>"frame", "vsides"=>"frame"},
549
+ "legend"=>
550
+ {"bottom"=>"align", "left"=>"align", "ltr"=>"dir", "right"=>"align",
551
+ "rtl"=>"dir", "top"=>"align"},
552
+ "cite"=>{"ltr"=>"dir", "rtl"=>"dir"},
553
+ "a"=>
554
+ {"circle"=>"shape", "default"=>"shape", "ltr"=>"dir", "poly"=>"shape",
555
+ "rect"=>"shape", "rtl"=>"dir"},
556
+ "html"=>{"ltr"=>"dir", "rtl"=>"dir"},
557
+ "u"=>{"ltr"=>"dir", "rtl"=>"dir"},
558
+ "blockquote"=>{"ltr"=>"dir", "rtl"=>"dir"},
559
+ "center"=>{"ltr"=>"dir", "rtl"=>"dir"},
560
+ "b"=>{"ltr"=>"dir", "rtl"=>"dir"},
561
+ "th"=>
562
+ {"baseline"=>"valign", "bottom"=>"valign", "center"=>"align",
563
+ "char"=>"align", "col"=>"scope", "colgroup"=>"scope", "justify"=>"align",
564
+ "left"=>"align", "ltr"=>"dir", "middle"=>"valign", "nowrap"=>"nowrap",
565
+ "right"=>"align", "row"=>"scope", "rowgroup"=>"scope", "rtl"=>"dir",
566
+ "top"=>"valign"},
567
+ "link"=>{"ltr"=>"dir", "rtl"=>"dir"},
568
+ "var"=>{"ltr"=>"dir", "rtl"=>"dir"},
569
+ "samp"=>{"ltr"=>"dir", "rtl"=>"dir"},
570
+ "div"=>
571
+ {"center"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
572
+ "right"=>"align", "rtl"=>"dir"},
573
+ "textarea"=>
574
+ {"disabled"=>"disabled", "ltr"=>"dir", "readonly"=>"readonly", "rtl"=>"dir"},
575
+ "pre"=>{"ltr"=>"dir", "rtl"=>"dir"},
576
+ "head"=>{"ltr"=>"dir", "rtl"=>"dir"},
577
+ "span"=>{"ltr"=>"dir", "rtl"=>"dir"},
578
+ "br"=>{"all"=>"clear", "left"=>"clear", "none"=>"clear", "right"=>"clear"},
579
+ "script"=>{"defer"=>"defer"},
580
+ "noframes"=>{"ltr"=>"dir", "rtl"=>"dir"},
581
+ "style"=>{"ltr"=>"dir", "rtl"=>"dir"},
582
+ "meta"=>{"ltr"=>"dir", "rtl"=>"dir"},
583
+ "dt"=>{"ltr"=>"dir", "rtl"=>"dir"},
584
+ "option"=>
585
+ {"disabled"=>"disabled", "ltr"=>"dir", "rtl"=>"dir", "selected"=>"selected"},
586
+ "kbd"=>{"ltr"=>"dir", "rtl"=>"dir"},
587
+ "big"=>{"ltr"=>"dir", "rtl"=>"dir"},
588
+ "tfoot"=>
589
+ {"baseline"=>"valign", "bottom"=>"valign", "center"=>"align",
590
+ "char"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
591
+ "middle"=>"valign", "right"=>"align", "rtl"=>"dir", "top"=>"valign"},
592
+ "sup"=>{"ltr"=>"dir", "rtl"=>"dir"},
593
+ "bdo"=>{"ltr"=>"dir", "rtl"=>"dir"},
594
+ "isindex"=>{"ltr"=>"dir", "rtl"=>"dir"},
595
+ "dfn"=>{"ltr"=>"dir", "rtl"=>"dir"},
596
+ "fieldset"=>{"ltr"=>"dir", "rtl"=>"dir"},
597
+ "em"=>{"ltr"=>"dir", "rtl"=>"dir"},
598
+ "font"=>{"ltr"=>"dir", "rtl"=>"dir"},
599
+ "tbody"=>
600
+ {"baseline"=>"valign", "bottom"=>"valign", "center"=>"align",
601
+ "char"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
602
+ "middle"=>"valign", "right"=>"align", "rtl"=>"dir", "top"=>"valign"},
603
+ "noscript"=>{"ltr"=>"dir", "rtl"=>"dir"},
604
+ "li"=>{"ltr"=>"dir", "rtl"=>"dir"},
605
+ "col"=>
606
+ {"baseline"=>"valign", "bottom"=>"valign", "center"=>"align",
607
+ "char"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
608
+ "middle"=>"valign", "right"=>"align", "rtl"=>"dir", "top"=>"valign"},
609
+ "small"=>{"ltr"=>"dir", "rtl"=>"dir"},
610
+ "dd"=>{"ltr"=>"dir", "rtl"=>"dir"},
611
+ "i"=>{"ltr"=>"dir", "rtl"=>"dir"},
612
+ "menu"=>{"compact"=>"compact", "ltr"=>"dir", "rtl"=>"dir"},
613
+ "strong"=>{"ltr"=>"dir", "rtl"=>"dir"},
614
+ "img"=>
615
+ {"bottom"=>"align", "ismap"=>"ismap", "left"=>"align", "ltr"=>"dir",
616
+ "middle"=>"align", "right"=>"align", "rtl"=>"dir", "top"=>"align"},
617
+ "optgroup"=>{"disabled"=>"disabled", "ltr"=>"dir", "rtl"=>"dir"},
618
+ "map"=>{"ltr"=>"dir", "rtl"=>"dir"},
619
+ "address"=>{"ltr"=>"dir", "rtl"=>"dir"},
620
+ "h1"=>
621
+ {"center"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
622
+ "right"=>"align", "rtl"=>"dir"},
623
+ "sub"=>{"ltr"=>"dir", "rtl"=>"dir"},
624
+ "param"=>{"data"=>"valuetype", "object"=>"valuetype", "ref"=>"valuetype"},
625
+ "input"=>
626
+ {"bottom"=>"align", "button"=>"type", "checkbox"=>"type",
627
+ "checked"=>"checked", "disabled"=>"disabled", "file"=>"type",
628
+ "hidden"=>"type", "image"=>"type", "ismap"=>"ismap", "left"=>"align",
629
+ "ltr"=>"dir", "middle"=>"align", "password"=>"type", "radio"=>"type",
630
+ "readonly"=>"readonly", "reset"=>"type", "right"=>"align", "rtl"=>"dir",
631
+ "submit"=>"type", "text"=>"type", "top"=>"align"},
632
+ "h2"=>
633
+ {"center"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
634
+ "right"=>"align", "rtl"=>"dir"},
635
+ "abbr"=>{"ltr"=>"dir", "rtl"=>"dir"},
636
+ "h3"=>
637
+ {"center"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
638
+ "right"=>"align", "rtl"=>"dir"},
639
+ "strike"=>{"ltr"=>"dir", "rtl"=>"dir"},
640
+ "body"=>{"ltr"=>"dir", "rtl"=>"dir"},
641
+ "ins"=>{"ltr"=>"dir", "rtl"=>"dir"},
642
+ "button"=>
643
+ {"button"=>"type", "disabled"=>"disabled", "ltr"=>"dir", "reset"=>"type",
644
+ "rtl"=>"dir", "submit"=>"type"},
645
+ "h4"=>
646
+ {"center"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
647
+ "right"=>"align", "rtl"=>"dir"},
648
+ "select"=>
649
+ {"disabled"=>"disabled", "ltr"=>"dir", "multiple"=>"multiple", "rtl"=>"dir"},
650
+ "caption"=>
651
+ {"bottom"=>"align", "left"=>"align", "ltr"=>"dir", "right"=>"align",
652
+ "rtl"=>"dir", "top"=>"align"},
653
+ "colgroup"=>
654
+ {"baseline"=>"valign", "bottom"=>"valign", "center"=>"align",
655
+ "char"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
656
+ "middle"=>"valign", "right"=>"align", "rtl"=>"dir", "top"=>"valign"},
657
+ "tr"=>
658
+ {"baseline"=>"valign", "bottom"=>"valign", "center"=>"align",
659
+ "char"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
660
+ "middle"=>"valign", "right"=>"align", "rtl"=>"dir", "top"=>"valign"},
661
+ "del"=>{"ltr"=>"dir", "rtl"=>"dir"},
662
+ "h5"=>
663
+ {"center"=>"align", "justify"=>"align", "left"=>"align", "ltr"=>"dir",
664
+ "right"=>"align", "rtl"=>"dir"},
665
+ "iframe"=>
666
+ {"0"=>"frameborder", "1"=>"frameborder", "auto"=>"scrolling",
667
+ "bottom"=>"align", "left"=>"align", "middle"=>"align", "no"=>"scrolling",
668
+ "right"=>"align", "top"=>"align", "yes"=>"scrolling"}}
669
+
670
+ # :startdoc:
671
+ # The code above is auto-generated. Don't edit manually.
672
+ end