| <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> |