]>
Commit | Line | Data |
---|---|---|
c680a8e1 RS |
1 | // Copyright 2011 The Go Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style | |
3 | // license that can be found in the LICENSE file. | |
4 | ||
5 | package html | |
6 | ||
7 | // Section 12.2.3.2 of the HTML5 specification says "The following elements | |
8 | // have varying levels of special parsing rules". | |
9 | // https://html.spec.whatwg.org/multipage/syntax.html#the-stack-of-open-elements | |
10 | var isSpecialElementMap = map[string]bool{ | |
11 | "address": true, | |
12 | "applet": true, | |
13 | "area": true, | |
14 | "article": true, | |
15 | "aside": true, | |
16 | "base": true, | |
17 | "basefont": true, | |
18 | "bgsound": true, | |
19 | "blockquote": true, | |
20 | "body": true, | |
21 | "br": true, | |
22 | "button": true, | |
23 | "caption": true, | |
24 | "center": true, | |
25 | "col": true, | |
26 | "colgroup": true, | |
27 | "dd": true, | |
28 | "details": true, | |
29 | "dir": true, | |
30 | "div": true, | |
31 | "dl": true, | |
32 | "dt": true, | |
33 | "embed": true, | |
34 | "fieldset": true, | |
35 | "figcaption": true, | |
36 | "figure": true, | |
37 | "footer": true, | |
38 | "form": true, | |
39 | "frame": true, | |
40 | "frameset": true, | |
41 | "h1": true, | |
42 | "h2": true, | |
43 | "h3": true, | |
44 | "h4": true, | |
45 | "h5": true, | |
46 | "h6": true, | |
47 | "head": true, | |
48 | "header": true, | |
49 | "hgroup": true, | |
50 | "hr": true, | |
51 | "html": true, | |
52 | "iframe": true, | |
53 | "img": true, | |
54 | "input": true, | |
15c0b25d AP |
55 | "isindex": true, // The 'isindex' element has been removed, but keep it for backwards compatibility. |
56 | "keygen": true, | |
c680a8e1 RS |
57 | "li": true, |
58 | "link": true, | |
59 | "listing": true, | |
15c0b25d | 60 | "main": true, |
c680a8e1 RS |
61 | "marquee": true, |
62 | "menu": true, | |
63 | "meta": true, | |
64 | "nav": true, | |
65 | "noembed": true, | |
66 | "noframes": true, | |
67 | "noscript": true, | |
68 | "object": true, | |
69 | "ol": true, | |
70 | "p": true, | |
71 | "param": true, | |
72 | "plaintext": true, | |
73 | "pre": true, | |
74 | "script": true, | |
75 | "section": true, | |
76 | "select": true, | |
77 | "source": true, | |
78 | "style": true, | |
79 | "summary": true, | |
80 | "table": true, | |
81 | "tbody": true, | |
82 | "td": true, | |
83 | "template": true, | |
84 | "textarea": true, | |
85 | "tfoot": true, | |
86 | "th": true, | |
87 | "thead": true, | |
88 | "title": true, | |
89 | "tr": true, | |
90 | "track": true, | |
91 | "ul": true, | |
92 | "wbr": true, | |
93 | "xmp": true, | |
94 | } | |
95 | ||
96 | func isSpecialElement(element *Node) bool { | |
97 | switch element.Namespace { | |
98 | case "", "html": | |
99 | return isSpecialElementMap[element.Data] | |
100 | case "svg": | |
101 | return element.Data == "foreignObject" | |
102 | } | |
103 | return false | |
104 | } |