| <html xmlns="http://www.w3.org/1999/xhtml"> | |
| <head> | |
| <title>XML serialization</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| </head> | |
| <body> | |
| <div id="log"></div> | |
| <script><![CDATA[ | |
| function serialize(node) { | |
| var serializer = new XMLSerializer(); | |
| return serializer.serializeToString(node); | |
| } | |
| test(function() { | |
| var dt = document.createComment("--"); | |
| assert_equals(serialize(dt), '<!------>'); | |
| }, "Comment: containing --"); | |
| test(function() { | |
| var dt = document.createComment("- x"); | |
| assert_equals(serialize(dt), '<!--- x-->'); | |
| }, "Comment: starting with -"); | |
| test(function() { | |
| var dt = document.createComment("x -"); | |
| assert_equals(serialize(dt), '<!--x --->'); | |
| }, "Comment: ending with -"); | |
| test(function() { | |
| var dt = document.createComment("-->"); | |
| assert_equals(serialize(dt), '<!---->-->'); | |
| }, "Comment: containing -->"); | |
| test(function() { | |
| var dt = document.implementation.createDocumentType("html", "", ""); | |
| assert_equals(serialize(dt), '<!DOCTYPE html>'); | |
| }, "DocumentType: empty public and system id"); | |
| test(function() { | |
| var dt = document.implementation.createDocumentType("html", "a", ""); | |
| assert_equals(serialize(dt), '<!DOCTYPE html PUBLIC "a">'); | |
| }, "DocumentType: empty system id"); | |
| test(function() { | |
| var dt = document.implementation.createDocumentType("html", "", "a"); | |
| assert_equals(serialize(dt), '<!DOCTYPE html SYSTEM "a">'); | |
| }, "DocumentType: empty public id"); | |
| test(function() { | |
| var dt = document.implementation.createDocumentType("html", "a", "b"); | |
| assert_equals(serialize(dt), '<!DOCTYPE html PUBLIC "a" "b">'); | |
| }, "DocumentType: non-empty public and system id"); | |
| test(function() { | |
| var dt = document.implementation.createDocumentType("html", "'", "'"); | |
| assert_equals(serialize(dt), "<!DOCTYPE html PUBLIC \"'\" \"'\">"); | |
| }, "DocumentType: 'APOSTROPHE' (U+0027)"); | |
| test(function() { | |
| var dt = document.implementation.createDocumentType("html", '"', '"'); | |
| assert_equals(serialize(dt), '<!DOCTYPE html PUBLIC """ """>'); | |
| }, "DocumentType: 'QUOTATION MARK' (U+0022)"); | |
| test(function() { | |
| var dt = document.implementation.createDocumentType("html", '"\'', '\'"'); | |
| assert_equals(serialize(dt), '<!DOCTYPE html PUBLIC ""\'" "\'"">'); | |
| }, "DocumentType: 'APOSTROPHE' (U+0027) and 'QUOTATION MARK' (U+0022)"); | |
| test(function() { | |
| var el = document.createElement("a"); | |
| el.setAttribute("href", "\u3042\u3044\u3046 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); | |
| assert_equals(serialize(el), "<a xmlns=\"http://www.w3.org/1999/xhtml\" href=\"\u3042\u3044\u3046 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\"></a>"); | |
| }, "Element: href attributes are not percent-encoded"); | |
| test(function() { | |
| var el = document.createElement("a"); | |
| el.setAttribute("href", "?\u3042\u3044\u3046 !\"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); | |
| assert_equals(serialize(el), "<a xmlns=\"http://www.w3.org/1999/xhtml\" href=\"?\u3042\u3044\u3046 !"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\"></a>"); | |
| }, "Element: query parts in href attributes are not percent-encoded"); | |
| test(function() { | |
| var pi = document.createProcessingInstruction("a", ""); | |
| assert_equals(serialize(pi), "<?a ?>"); | |
| }, "ProcessingInstruction: empty data"); | |
| test(function() { | |
| var pi = document.createProcessingInstruction("a", "b"); | |
| assert_equals(serialize(pi), "<?a b?>"); | |
| }, "ProcessingInstruction: non-empty data"); | |
| test(function() { | |
| var pi = document.createProcessingInstruction("xml", "b"); | |
| assert_equals(serialize(pi), "<?xml b?>"); | |
| }, "ProcessingInstruction: target contains xml"); | |
| test(function() { | |
| var pi = document.createProcessingInstruction("x:y", "b"); | |
| assert_equals(serialize(pi), "<?x:y b?>"); | |
| }, "ProcessingInstruction: target contains a 'COLON' (U+003A)"); | |
| ]]></script> | |
| </body> | |
| </html> |