Commit cf3bd585 authored by Kunpei Sakai's avatar Kunpei Sakai Committed by Nigel Tao

html: don't set im if <template> doesn't have HTML namespace

If there are nested <template> elements and the <template> node isn't in HTML namespace,
couldn't continue to parse documents correctly.
By this patch, it makes the <template> which is in math namespace be skipped on
resetting insertion mode.

Fixes golang/go#27702

Change-Id: I6eacdb98fe29eb3c61781afca5bc4d83e72ba4ed
Reviewed-on: https://go-review.googlesource.com/136875Reviewed-by: 's avatarNigel Tao <nigeltao@golang.org>
parent 2f5d2388
...@@ -470,6 +470,10 @@ func (p *parser) resetInsertionMode() { ...@@ -470,6 +470,10 @@ func (p *parser) resetInsertionMode() {
case a.Table: case a.Table:
p.im = inTableIM p.im = inTableIM
case a.Template: case a.Template:
// TODO: remove this divergence from the HTML5 spec.
if n.Namespace != "" {
continue
}
p.im = p.templateStack.top() p.im = p.templateStack.top()
case a.Head: case a.Head:
// TODO: remove this divergence from the HTML5 spec. // TODO: remove this divergence from the HTML5 spec.
......
...@@ -22,3 +22,16 @@ ...@@ -22,3 +22,16 @@
| content | content
| <tbody> | <tbody>
| <body> | <body>
#data
<math><template><mo><template>
#errors
#document
| <html>
| <head>
| <body>
| <math math>
| <math template>
| <math mo>
| <template>
| content
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment