1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-01-26 10:03:34 +03:00

HTML parser error with <noscript> in the <head>

For https://bugzilla.gnome.org/show_bug.cgi?id=615785
When the <noscript> is found, <head> is closed and a <body> element is created.
The real <body id="xxx"> gets skipped over, so I can't see any of the
body's attributes.
Just don't close <head> when encountering a <noscript>
Add a regression test too
This commit is contained in:
Denis Pauk 2012-05-11 19:31:12 +08:00 committed by Daniel Veillard
parent 4609e6c980
commit a0cd075d94
5 changed files with 59 additions and 1 deletions

View File

@ -1080,7 +1080,7 @@ static const char * const htmlStartClose[] = {
"menu", "p", "head", "ul", NULL,
"p", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", FONTSTYLE, NULL,
"div", "p", "head", NULL,
"noscript", "p", "head", NULL,
"noscript", "p", NULL,
"center", "font", "b", "i", "p", "head", NULL,
"a", "a", NULL,
"caption", "p", NULL,

10
result/HTML/noscript.html Normal file
View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<title>omg</title>
<noscript><link rel="stylesheet" href="http://foo.com"></noscript>
</head>
<body id="xxx">
<p>yo</p>
</body>
</html>

View File

View File

@ -0,0 +1,38 @@
SAX.setDocumentLocator()
SAX.startDocument()
SAX.internalSubset(html, , )
SAX.startElement(html)
SAX.ignorableWhitespace(
, 5)
SAX.startElement(head)
SAX.ignorableWhitespace(
, 9)
SAX.startElement(title)
SAX.characters(omg, 3)
SAX.endElement(title)
SAX.ignorableWhitespace(
, 9)
SAX.startElement(noscript)
SAX.startElement(link, rel='stylesheet', href='http://foo.com')
SAX.endElement(link)
SAX.endElement(noscript)
SAX.ignorableWhitespace(
, 5)
SAX.endElement(head)
SAX.ignorableWhitespace(
, 5)
SAX.startElement(body, id='xxx')
SAX.characters(
, 9)
SAX.startElement(p)
SAX.characters(yo, 2)
SAX.endElement(p)
SAX.characters(
, 5)
SAX.endElement(body)
SAX.ignorableWhitespace(
, 1)
SAX.endElement(html)
SAX.ignorableWhitespace(
, 1)
SAX.endDocument()

10
test/HTML/noscript.html Normal file
View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<title>omg</title>
<noscript><link rel="stylesheet" href="http://foo.com"></noscript>
</head>
<body id="xxx">
<p>yo</p>
</body>
</html>