DOMParser-parseFromString-xml-parsererror.html (2551B)
1 <!DOCTYPE html> 2 <title>DOMParser: <parsererror> element added on error</title> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script> 6 const xhtml_prologue = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"' + 7 ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n' + 8 '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n' + 9 '<body>\n', 10 xhtml_epilogue = '</body>\n</html>\n'; 11 12 [ 13 '<span x:test="testing">1</span>', // undeclared 'x' namespace prefix 14 '< span>2</span>', // bad start tag 15 '<span :test="testing">3</span>', // empty namespace prefix 16 '<span><em>4</span></em>', // staggered tags 17 '<span>5', // missing end </span> tag 18 '6</span>', // missing start <span> tag 19 '<span>7< /span>', // bad end tag 20 '<span>8</ span>', // bad end tag 21 '<span novalue>9</span>', // missing attribute value 22 '<span ="noattr">10</span>', // missing attribute name 23 '<span ::="test">11</span>', // bad namespace prefix 24 '<span xmlns:="urn:x-test:test">12</span>', // missing namespace prefix 25 '<span xmlns:xmlns="">13</span>', // invalid namespace prefix 26 '<span data-test=testing>14</span>', // unquoted attribute value 27 '15<span', // bad start tag 28 '<8:test xmlns:8="urn:x-test:test">16</8:test>', // invalid namespace prefix 29 '<span xmlns:p1 xmlns:p2="urn:x-test:test"/>17', // missing namespace URI 30 ].forEach(fragment => { 31 test(() => { 32 var document_string = xhtml_prologue + fragment + xhtml_epilogue; 33 var doc = (new DOMParser).parseFromString(document_string, "application/xhtml+xml"); 34 var parsererrors = doc.getElementsByTagName("parsererror"); 35 assert_equals(parsererrors.length, 1, 'expecting one parsererror'); 36 }, document.title + ', ' + fragment); 37 }); 38 39 [ 40 'text/xml', 41 'application/xml', 42 'application/xhtml+xml', 43 'image/svg+xml' 44 ].forEach(mimeType => { 45 test(() => { 46 const doc = (new DOMParser()).parseFromString('<span x:test="testing">1</span>', mimeType); 47 assert_equals(doc.contentType, mimeType); 48 }, `${mimeType} is preserved in the error document`); 49 }) 50 </script>