source: trunk/instant_messenger/js/xtools.js @ 305

Revision 305, 3.2 KB checked in by niltonneto, 16 years ago (diff)

Correçoes

RevLine 
[305]1(function()
[260]2{
[305]3        var _FILES = [];
[260]4
[305]5        function _convert(pString)
[260]6        {
7                if ( typeof pString != 'string' )
8                        return false;
9
[305]10                if ( window.ActiveXObject )
[260]11                {
[305]12                        var _xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
13                        _xmlDoc.async = "false";
14                        _xmlDoc.loadXML(pString);
[260]15                }
16                else
17                {
18                        var parser = new DOMParser();
[305]19                        var _xmlDoc = parser.parseFromString(pString, "text/xml");
[260]20                }
21
[305]22                return _xmlDoc;
23        }
[260]24
[305]25        function _load(pFile)
[260]26        {
[305]27                pFile = this._PATH + 'xsl/' + pFile;
28                if ( !(_FILES[pFile]) )
[260]29                {
[305]30                        var _data = null;
31                        if ( document.implementation.createDocument )
32                                _data = document.implementation.createDocument("", "", null);
[260]33                        else
[305]34                                _data = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
[260]35
[305]36                        _data.async = false;
37                        _data.load(pFile + '?' + Date.parse(new Date));
38                        _FILES[pFile] = _data;
39                }
40                return _FILES[pFile];
41        }
[260]42
[305]43        function _parse()
44        {
45                if ( arguments.length == 1 )
46                {
47                        pXML = _xml('root');
48                        pXSL = arguments[0];
[260]49                }
[305]50                else
[260]51                {
[305]52                        pXML = arguments[0];
53                        pXSL = arguments[1];
[260]54                }
[305]55                switch ( typeof pXML )
[260]56                {
[305]57                        case 'object' :
58                        break;
59                        case 'string' :
60                                if ( pXML.indexOf('<') == 0 )
61                                        pXML = _convert(pXML);
62                                else
63                                        pXML = _load.call(this, pXML);
64                        break;
65                        default :
66                                return {'error':'invalid xml'}
67                }
68                switch ( typeof pXSL )
69                {
70                        case 'object' :
71                        break;
72                        case 'string' :
73                                pXSL = _load.call(this, pXSL);
74                        break;
75                        default :
76                                return {'error':'invalid xsl'}
77                }
[260]78
[305]79                var fragment = null;
80                if ( window.XSLTProcessor )
81                {
82                        var xslProc = new XSLTProcessor();
83                        xslProc.importStylesheet(pXSL);
[260]84
[305]85                        if ( (arguments.length == 3) && (typeof arguments[2] == 'object') )
86                        {
87                                var params = arguments[2];
88                                for (var i in params )
89                                         xslProc.setParameter(null, i, params[i]);
90                        }
91
92                        fragment = xslProc.transformToFragment(pXML, document);
93
94                        // para retornar valor igual ao ie.
95                        var aux = document.createElement("div");
96                        aux.appendChild(fragment);
97                        fragment = aux.innerHTML;
[260]98                }
[305]99                else
[260]100                {
[305]101                        var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate");
102                        xslTemplate.stylesheet = pXSL;
103
104                        var xslProc = xslTemplate.createProcessor();
105                        xslProc.input = pXML;
106
107                        if ( (arguments.length == 3) && (typeof arguments[2] == 'object') )
108                        {
109                                var params = arguments[2];
110                                for (var i in params )
111                                         xslProc.addParameter(i, params[i], '');
112                        }
113
114                        xslProc.transform();
115                        fragment = xslProc.output;
[260]116                }
[305]117                return fragment;
[260]118        }
[305]119
120        function _xml()
121        {
122                var a = false;
123                if ( document.implementation.createDocument )
124                        a = document.implementation.createDocument("", "", null);
125                else if ( ActiveXObject )
126                        a = new ActiveXObject("Msxml2.DOMDocument");
127
128                if ( arguments.length == 1 && typeof arguments[0] == 'string' )
129                        a.appendChild(a.createElement(arguments[0]));
130                //with ( a )
131                //      appendChild(createProcessingInstruction("xml", "version='1.0'"));
132
133                return a;
134        }
135
136        function XTools()
137        {
138                var _argv = arguments;
139                this._PATH = ( _argv.length > 0 ) ?
140                        _argv[0] : '';
141                if ( this._PATH != '' && this._PATH.lastIndexOf('/') != (this._PATH.length - 1) )
142                        this._PATH += '/';
143        }
144
145        XTools.prototype.convert = _convert;
146        XTools.prototype.load = _load;
147        XTools.prototype.parse = _parse;
148        XTools.prototype.xml = _xml;
149        window.XTools = XTools;
150}
151)();
Note: See TracBrowser for help on using the repository browser.