[Sie-announce] SIEコード [1956] 実体参照に関して、GetSVGDocumentオブジェクトの修正

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2010年 7月 18日 (日) 00:39:12 JST


Revision: 1956
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1956
Author:   dhrname
Date:     2010-07-18 00:39:12 +0900 (Sun, 18 Jul 2010)

Log Message:
-----------
実体参照に関して、GetSVGDocumentオブジェクトの修正

Modified Paths:
--------------
    branches/06x/061/org/w3c/dom/svg.js

Modified: branches/06x/061/org/w3c/dom/svg.js
===================================================================
--- branches/06x/061/org/w3c/dom/svg.js	2010-07-16 13:04:28 UTC (rev 1955)
+++ branches/06x/061/org/w3c/dom/svg.js	2010-07-17 15:39:12 UTC (rev 1956)
@@ -176,7 +176,7 @@
         } else {
           if (degli === 3) {
             var degz = _parseFloat(deg[0]);
-            s.setRotate(degz, _parseFloat(deg[1]), _parseFloat(degi[2]))
+            s.setRotate(degz, _parseFloat(deg[1]), _parseFloat(deg[2]))
           } else if (degli <= 2) {
             var degz = _parseFloat(deg[0]);
             if (com === "translate") {
@@ -1333,8 +1333,31 @@
        *ここでは、responseTextを用いる
        */
       var dew = new Date();
-      str = xmlhttp.responseText.replace(/!DOCTYPE/,"!--").replace(/(dtd">|\]>)/,"-->");
+      str = xmlhttp.responseText;
+      NAIBU.doc.async = false;
+      /*下記のプロパティについては、Microsoftのサイトを参照
+       *ResolveExternals Property [Second-level DOM]
+       * http://msdn.microsoft.com/en-us/library/ms761375%28VS.85%29.aspx
+       *ValidateOnParse Property [Second-level DOM]
+       * http://msdn.microsoft.com/en-us/library/ms760286%28VS.85%29.asp
+       */
+      NAIBU.doc.validateOnParse = false;
+      NAIBU.doc.resolveExternals = false;
       NAIBU.doc.loadXML(str);
+      if (/&[a-z];/.test(str)) {
+        /*以下の処理は、実体参照を使ったとき
+         *代替の処理を用いて、実体参照を処理するもの
+         */
+        var tmp = str;
+        var enti = (NAIBU.doc.doctype)? NAIBU.doc.doctype.entities: { length:0 };
+        for (var i=0; i<enti.length; i++) {
+        var map = enti.item(i);
+        var regex = new RegExp("&"+map.nodeName+";", "g");
+        tmp = tmp.replace(regex, map.firstChild.nodeValue);
+        }
+        NAIBU.doc.loadXML(tmp);
+        tmp = null;
+      }
       var s = DOMImplementation.createDocument("http://www.w3.org/2000/svg", "svg");
       var tar = s.documentElement;
       tar.viewport.top = 0;




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