OSDN Git Service

Version 0.6.40, bugfix for X.Dom.Parser.
authoritozyun <itozyun@user.sourceforge.jp>
Sat, 17 May 2014 03:42:24 +0000 (12:42 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Sat, 17 May 2014 03:42:24 +0000 (12:42 +0900)
0.6.x/js/dom/11_XDomDTD.js
0.6.x/js/dom/18_XDomQuery.js
0.6.x/js/dom/19_XDomParser.js
0.6.x/js/dom/22_XDomBuilder.js

index 777f04c..33b899e 100644 (file)
@@ -25,7 +25,20 @@ X.Dom.DTD = {
                        {},\r
        \r
        //      video:1,audio:1}\r
-       ATTR_VAL_IS_URI : 'action,archive,background,cite,classid,codebase,data,href,longdesc,profile,src,usemap'.split( ',' )\r
+       ATTR_VAL_IS_URI : {\r
+               action     : true,\r
+               archive    : true,\r
+               background : true,\r
+               cite       : true,\r
+               classid    : true,\r
+               codebase   : true,\r
+               data       : true,\r
+               href       : true,\r
+               longdesc   : true,\r
+               profile    : true,\r
+               src        : true,\r
+               usemap     : true\r
+       }\r
 };\r
 \r
 \r
index 35d01b0..eece774 100644 (file)
@@ -209,7 +209,7 @@ X.Dom.Query._parse = function( query, last ){
                var HTML      = Node._html,\r
                        scope     = this.constructor === X.Dom.NodeList && this.length ? this : [ this.constructor === Node ? this : Node.root ],\r
                        parents   = scope, // 探索元の親要素 XNodeList の場合あり\r
-                       noLower   = 'title id name class for ' + X.Dom.DTD.ATTR_VAL_IS_URI.join( ' ' ),\r
+                       noLower   = 'title id name class for action archive background cite classid codebase data href longdesc profile src usemap',// + X.Dom.DTD.ATTR_VAL_IS_URI.join( ' ' ),\r
                        ARY_PUSH  = Array.prototype.push,\r
                        ret       = [], // 結果要素\r
                        root      = X.Dom.Node.getRoot( scope[ 0 ] ),\r
index 1b654c5..db0c897 100644 (file)
@@ -141,7 +141,7 @@ X.Dom.Parser = {
                        l     = html.length,\r
                        i     = 0,\r
                        attrs = [],\r
-                       tagName, empty,\r
+                       tagName, empty = false,\r
                        chr, start, attrName, quot, escape;\r
                \r
                while( i < l && phase < 9 ){\r
@@ -195,14 +195,15 @@ X.Dom.Parser = {
                                                ( ( phase = 3 ) && saveAttr( attrs, attrName, html.substring( start, i ) ) ) :\r
                                        ( chr === '>' ) ?\r
                                                ( ( phase = 9 ) && saveAttr( attrs, attrName, html.substring( start, i ) ) ) :\r
-                                       ( !escape && uri.indexOf( attrName ) === -1 && html.substr( i, 2 ) === '\/>' ) && // attr の val が uri で / で終わりかつ、未対応属性の場合\r
-                                               ( empty = true );\r
+                                       !escape && !uri[ attrName ] && ( empty = html.substr( i, 2 ) === '/>' ) && // attr の val が uri で / で終わりかつ、未対応属性の場合\r
+                                               ( phase = 9 );\r
                                        break;\r
                        };\r
                        escape = chr === '\\' && !escape; // \\\\ is not escape for "\r
                        ++i;\r
                };\r
                if( phase === 9 ){\r
+                       if( empty ) ++i;\r
                        if( X.Dom.Parser.parseStartTag( stack, last, handler, tagName, attrs, empty, i ) === false ) return false;\r
                        return i;\r
                };\r
@@ -270,7 +271,7 @@ X.Dom.Parser = {
                        };\r
                };\r
                X.Dom.Parser.closeSelf[ tagLower ] === 1 && ( last === tagName || ( sisters[ tagLower ] && sisters[ tagLower ][ last.toLowerCase() ] === 1 ) ) && parseEndTag( stack, handler, last );\r
-               unary = X.Dom.Parser.empty[ tagName.toUpperCase() ] || !!unary;\r
+               unary = unary || X.Dom.Parser.empty[ tagName.toUpperCase() ];\r
                !unary && ( stack[ stack.length ] = tagName );\r
                \r
                return handler.start( tagName, attrs, unary, index );\r
index 6c4c980..bad1a9f 100644 (file)
@@ -256,7 +256,10 @@ X.Dom._bindElementToXnode =
                                                xnode.destroy();\r
                                                break;\r
                                        };\r
-                                       alert(  parent._tag + '>' + '"' + xnode._text + '" !== ' + tag + '\n' + elm.outerHTML );\r
+                                       alert(  parent._tag + ' > ' + '"' + xnode._text + '" !== ' + tag + '\n' +\r
+                                               'prev : ' + ( xnode.prevNode() && xnode.prevNode().html() ) + '\n' +\r
+                                               'next : ' + ( xnode.nextNode() && xnode.nextNode().html() ) + '\n' +\r
+                                               'html : ' + elm.outerHTML );\r
                                        break;\r
                                };\r
                                \r