const.go

  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
  5package html
  6
  7// Section 12.2.4.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
 10var 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,
 55	"isindex":    true, // The 'isindex' element has been removed, but keep it for backwards compatibility.
 56	"keygen":     true,
 57	"li":         true,
 58	"link":       true,
 59	"listing":    true,
 60	"main":       true,
 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
 96func 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}