| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Test creation of each type of Node and check intial values") |
| |
| var xmlDoc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null); |
| |
| debug("Attribute creation using createElement on an HTML doc:") |
| var attr = document.createAttribute("foo"); |
| shouldBe("attr.nodeName", "'foo'"); |
| shouldBe("attr.name", "'foo'"); |
| // Spec: http://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createAttribute |
| // Both FF and WebKit return "foo" for Attribute.localName, even though the spec says null |
| shouldBe("attr.localName", "null"); |
| shouldBe("attr.namespaceURI", "null"); |
| shouldBe("attr.prefix", "null"); |
| shouldBe("attr.nodeValue", "''"); |
| shouldBe("attr.value", "''"); |
| |
| debug("Attribute creation using createElementNS on an HTML doc:") |
| attr = document.createAttributeNS("http://www.example.com", "example:foo"); |
| shouldBe("attr.nodeName", "'example:foo'"); |
| shouldBe("attr.name", "'example:foo'"); |
| shouldBe("attr.localName", "'foo'"); |
| shouldBe("attr.namespaceURI", "'http://www.example.com'"); |
| shouldBe("attr.prefix", "'example'"); |
| shouldBe("attr.nodeValue", "''"); |
| shouldBe("attr.value", "''"); |
| |
| debug("Attribute creation using createElement on an XHTML doc:") |
| attr = xmlDoc.createAttribute("foo"); |
| shouldBe("attr.nodeName", "'foo'"); |
| shouldBe("attr.name", "'foo'"); |
| // Spec: http://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createAttribute |
| // Both FF and WebKit return "foo" for Attribute.localName, even though the spec says null |
| shouldBe("attr.localName", "null"); |
| shouldBe("attr.namespaceURI", "null"); |
| shouldBe("attr.prefix", "null"); |
| shouldBe("attr.nodeValue", "''"); |
| shouldBe("attr.value", "''"); |
| |
| debug("Attribute creation using createElementNS on an XHTML doc:") |
| attr = xmlDoc.createAttributeNS("http://www.example.com", "example:foo"); |
| shouldBe("attr.nodeName", "'example:foo'"); |
| shouldBe("attr.name", "'example:foo'"); |
| shouldBe("attr.localName", "'foo'"); |
| shouldBe("attr.namespaceURI", "'http://www.example.com'"); |
| shouldBe("attr.prefix", "'example'"); |
| shouldBe("attr.nodeValue", "''"); |
| shouldBe("attr.value", "''"); |
| |
| var comment = document.createComment("foo"); |
| shouldBe("comment.nodeName", "'#comment'"); |
| shouldBeUndefined("comment.localName"); |
| shouldBeUndefined("comment.namespaceURI"); |
| shouldBeUndefined("comment.prefix"); |
| shouldBe("comment.nodeValue", "'foo'"); |
| shouldBe("comment.data", "'foo'"); |
| |
| shouldThrow("document.createCDATASection('foo')"); |
| var cdata = xmlDoc.createCDATASection("foo"); |
| shouldBe("cdata.nodeName", "'#cdata-section'"); |
| shouldBeUndefined("cdata.localName"); |
| shouldBeUndefined("cdata.namespaceURI"); |
| shouldBeUndefined("cdata.prefix"); |
| shouldBe("cdata.nodeValue", "'foo'"); |
| shouldBe("cdata.data", "'foo'"); |
| |
| var fragment = document.createDocumentFragment(); |
| shouldBe("fragment.nodeName", "'#document-fragment'"); |
| shouldBeUndefined("fragment.localName"); |
| shouldBeUndefined("fragment.namespaceURI"); |
| shouldBeUndefined("fragment.prefix"); |
| shouldBe("fragment.nodeValue", "null"); |
| |
| var doc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null); |
| shouldBe("doc.nodeName", "'#document'"); |
| shouldBeUndefined("doc.localName"); |
| shouldBeUndefined("doc.namespaceURI"); |
| shouldBeUndefined("doc.prefix"); |
| shouldBe("doc.nodeValue", "null"); |
| |
| var doctype = document.implementation.createDocumentType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"); |
| shouldBe("doctype.nodeName", "'svg'"); |
| shouldBe("doctype.name", "'svg'"); |
| shouldBeUndefined("doctype.localName"); |
| shouldBeUndefined("doctype.namespaceURI"); |
| shouldBeUndefined("doctype.prefix"); |
| shouldBe("doctype.nodeValue", "null"); |
| |
| debug("Element creation using createElement on an HTML doc:") |
| var element = document.createElement("pre"); |
| shouldBe("element.nodeName", "'PRE'"); |
| // Spec: http://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createElement |
| // FF returns "PRE" for localName, WebKit returns "pre", the spec says we should return null |
| shouldBe("element.localName", "null"); |
| // FF returns null for namespaceURI, WebKit returns http://www.w3.org/1999/xhtml, the spec says we should return null |
| shouldBe("element.namespaceURI", "null"); |
| shouldBe("element.prefix", "null"); |
| shouldBe("element.nodeValue", "null"); |
| shouldBe("element.attributes.toString()", "'[object NamedNodeMap]'"); |
| |
| debug("Prefixed element creation using createElementNS on an HTML doc:") |
| element = document.createElementNS("http://www.w3.org/1999/xhtml", "html:pre"); |
| shouldBe("element.nodeName", "'HTML:PRE'"); |
| shouldBe("element.localName", "'pre'"); |
| shouldBe("element.namespaceURI", "'http://www.w3.org/1999/xhtml'"); |
| shouldBe("element.prefix", "'html'"); |
| shouldBe("element.nodeValue", "null"); |
| shouldBe("element.attributes.toString()", "'[object NamedNodeMap]'"); |
| |
| debug("SVG Element creation using createElementNS on an HTML doc:") |
| element = document.createElementNS("http://www.w3.org/2000/svg", "svg"); |
| shouldBe("element.nodeName", "'svg'"); |
| shouldBe("element.localName", "'svg'"); |
| shouldBe("element.namespaceURI", "'http://www.w3.org/2000/svg'"); |
| shouldBe("element.prefix", "null"); |
| shouldBe("element.nodeValue", "null"); |
| shouldBe("element.attributes.toString()", "'[object NamedNodeMap]'"); |
| |
| debug("Unknown Element creation using createElementNS on an HTML doc:") |
| element = document.createElementNS("http://www.webkit.org", "foo:svg"); |
| shouldBe("element.nodeName", "'foo:svg'"); |
| shouldBe("element.localName", "'svg'"); |
| shouldBe("element.namespaceURI", "'http://www.webkit.org'"); |
| shouldBe("element.prefix", "'foo'"); |
| shouldBe("element.nodeValue", "null"); |
| shouldBe("element.attributes.toString()", "'[object NamedNodeMap]'"); |
| |
| debug("Element creation using createElementNS on an HTML doc:") |
| element = document.createElementNS("http://www.w3.org/1999/xhtml", "pre"); |
| // Spec: http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815 (element.tagName) |
| // FF and Opera returns "pre" for nodeName as it is an XHTML element, WebKit returns "PRE". |
| shouldBe("element.nodeName", "'pre'"); |
| shouldBe("element.localName", "'pre'"); |
| shouldBe("element.namespaceURI", "'http://www.w3.org/1999/xhtml'"); |
| shouldBe("element.prefix", "null"); |
| shouldBe("element.nodeValue", "null"); |
| shouldBe("element.attributes.toString()", "'[object NamedNodeMap]'"); |
| |
| debug("Element creation using createElement on an XHTML doc:") |
| element = xmlDoc.createElement("pre"); |
| shouldBe("element.nodeName", "'pre'"); |
| shouldBe("element.localName", "null"); |
| // FF returns null for namespaceURI, WebKit returns http://www.w3.org/1999/xhtml, the spec says we should return null |
| shouldBe("element.namespaceURI", "null"); |
| shouldBe("element.prefix", "null"); |
| shouldBe("element.nodeValue", "null"); |
| shouldBe("element.attributes.toString()", "'[object NamedNodeMap]'"); |
| |
| debug("Element creation using createElementNS on an XHTML doc:") |
| element = xmlDoc.createElementNS("http://www.w3.org/1999/xhtml", "html:pre"); |
| shouldBe("element.nodeName", "'html:pre'"); |
| shouldBe("element.localName", "'pre'"); |
| shouldBe("element.namespaceURI", "'http://www.w3.org/1999/xhtml'"); |
| shouldBe("element.prefix", "'html'"); |
| shouldBe("element.nodeValue", "null"); |
| shouldBe("element.attributes.toString()", "'[object NamedNodeMap]'"); |
| |
| // Not possible to create Notation nodes via the DOM, WebKit doesn't create them from parsing |
| |
| var processingInstruction = document.createProcessingInstruction('xml-stylesheet', 'type=\"text/xsl\" href=\"missing.xsl\"'); |
| shouldBe("processingInstruction.nodeName", "'xml-stylesheet'"); |
| shouldBeUndefined("processingInstruction.localName"); |
| shouldBeUndefined("processingInstruction.namespaceURI"); |
| shouldBeUndefined("processingInstruction.prefix"); |
| |
| processingInstruction = xmlDoc.createProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="missing.xsl"'); |
| shouldBe("processingInstruction.nodeName", "'xml-stylesheet'"); |
| shouldBeUndefined("processingInstruction.localName"); |
| shouldBeUndefined("processingInstruction.namespaceURI"); |
| shouldBeUndefined("processingInstruction.prefix"); |
| // DOM Core Level 2 and DOM Core Level 3 disagree on ProcessingInstruction.nodeValue |
| // L2: entire content excluding the target |
| // L3: same as ProcessingInstruction.data |
| // We're following Level 3 |
| shouldBe("processingInstruction.nodeValue", "'type=\"text/xsl\" href=\"missing.xsl\"'"); |
| shouldBe("processingInstruction.target", "'xml-stylesheet'"); |
| shouldBe("processingInstruction.data", "'type=\"text/xsl\" href=\"missing.xsl\"'"); |
| |
| var text = document.createTextNode("foo"); |
| shouldBe("text.nodeName", "'#text'"); |
| shouldBeUndefined("text.localName"); |
| shouldBeUndefined("text.namespaceURI"); |
| shouldBeUndefined("text.prefix"); |
| shouldBe("text.nodeValue", "'foo'"); |
| shouldBe("text.data", "'foo'"); |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |