svnno****@sourc*****
svnno****@sourc*****
2010年 3月 10日 (水) 20:24:31 JST
Revision: 1712 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1712 Author: dhrname Date: 2010-03-10 20:24:31 +0900 (Wed, 10 Mar 2010) Log Message: ----------- DocumentのimportNodeメソッドを実装 Modified Paths: -------------- branches/ufltima/core.js Modified: branches/ufltima/core.js =================================================================== --- branches/ufltima/core.js 2010-03-10 10:25:19 UTC (rev 1711) +++ branches/ufltima/core.js 2010-03-10 11:24:31 UTC (rev 1712) @@ -819,6 +819,9 @@ */ /*Node*/ Document.prototype.importNode = function( /*Node*/ importedNode, /*boolean*/ deep) { var s; + /*以下の処理は引き渡されたimportNodeがMSXMLによって解析された + *データであることを前提にしている + */ switch (importedNode.nodeType) { case Node.ELEMENT_NODE: s = this.createElementNS(importedNode.namespaceURI, importedNode.nodeName); @@ -842,10 +845,38 @@ case Node.TEXT_NODE: s = this.createTextNode(importNode.data); case Node.COMMENT_NODE: - s = importedNode.createComment(importNode.data); + s = this.createComment(importNode.data); break; - case Node.DOCUMENT_FRAGMENT_NODE: //document_fragment_node + case Node.DOCUMENT_FRAGMENT_NODE: + s = this.createDocumentFragment(); + if (deep) { + var ch = importedNode.childNodes, n; + for (var i=0,chli=ch.length;i<chli;i++) { //子ノードを検索して、子供がいれば、importNodeメソッドを再帰的に実行する + n = this.importNode(ch[i], true); + s.appendChild(n); + } + } break; + case Node.CDATA_SECTION_NODE: + s = this.createCDATASection(); + break; + case Node.ENTITY_REFERENCE_NODE: + s = this.createEntityReference(importNode.nodeName); + break; + case Node.ENTITY_NODE: + s = new Entity(); + s.publicId = importNode.publicId; + s.systemId = importNode.systemId; + s.notationName = importNode.notationName; + break; + case Node.PROCESSING_INSTRUCTION_NODE: + s = this.createProcessingInstruction(importNode.nodeName, importNode.nodeValue) + break; + case Node.NOTATION_NODE: + s = new Notation(); + s.publicId = importNode.publicId; + s.systemId = importNode.systemId; + break; default: throw (new DOMException(DOMException.NOT_SUPPORTED_ERR)); break;