[Sie-announce] SIEコード [1712] DocumentのimportNodeメソッドを実装

Back to archive index

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;




Sie-announce メーリングリストの案内
Back to archive index