function getXMLDoc(url) { var agnt=navigator.userAgent.toLowerCase(); var isChrome = false; var isIE = (agnt.indexOf("msie")>0 || agnt.indexOf("trident")>0) ? true : false; if(!isIE) { if(agnt.indexOf("chrome")>0) isChrome = true; } var xmlDoc; if(isChrome) { var xhr = new XMLHttpRequest(); xhr.open("GET", url, false); xhr.send(null); xmlDoc = xhr.responseXML; } else { if(isIE) xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); else xmlDoc=document.implementation.createDocument("","",null); xmlDoc.async=false; xmlDoc.load(url); } return xmlDoc; } function gentr(hasexample, name, meaning, val, defaultval, sample, inc, exc, memo, lastGroup, groups, groupcurrent, groupcolor) { if(defaultval == '') defaultval = '(无)'; if(sample == '') sample = ' '; else sample = ''; if(inc == "Edit*") inc = "Edit、EditWithButton的等有输入框的对象"; if(exc == "Edit*") exc = "Edit、EditWithButton的等有输入框的对象"; var arrMemo = new Array(0); if(memo != "") arrMemo = memo.split('
'); if(inc != "") arrMemo.push('仅用于' + inc); if(exc != "") arrMemo.push('对' + exc + '无效;'); memo=""; if(arrMemo.length == 1) memo = '注: ' + arrMemo[0]; else { for(i=0; i'; else memo += '注' + (i+1) + ': ' + arrMemo[i] + ';
'; } } var td = (memo=="") ? "" : ""; var str=''; if(groups>0) { if(groupcurrent==0) { str += '')+ ''; } str += td; } else { if(memo == "") str += ''; else str += ''; } name = name.replace(/\\/g, '
'); var arr = name.split('/'); var count = arr.length; for(var i=0; i0) str += ' 或 '; str += arr[i]; // str += '' +arr[i]+ ''; } str += '' +meaning+ '' +val + '' + td +defaultval+ ''; if(hasexample) str += td +sample+ ''; str += ''; if(memo != "") str += '' + memo+ ''; return str; } function hassample(x) { for(var ele = x[0]; ele!=null; ele=ele.nextSibling) { if(ele.nodeName != 'element') continue; if(ele.getElementsByTagName("example").length>0) return true; } return false; } function getgroupcount(ele) { var group=""; var ret = 0; for(; ele!=null; ele=ele.nextSibling) { if(ele.nodeType==3) continue; var gp = ele.getElementsByTagName("group"); if(gp.length == 0) break; var s = gp[0].childNodes[0].nodeValue; if(ret == 0) { group = s; ret = 1; } else if(group == s) ret++; else break; gp = ele.getElementsByTagName("memo"); if(gp.length>0) ret++; else { gp = ele.getElementsByTagName("includeOnly"); if(gp.length>0) ret++; else { gp = ele.getElementsByTagName("excludeOnly"); if(gp.length>0) ret++; } } } return ret; } function genproptable(divTag, xmldoc, zebracolor) { if(xmldoc==null) return; var x=xmldoc.getElementsByTagName('elements'); if(x==null) return; var content="", sample=""; var name = x[0].attributes.getNamedItem("name").nodeValue; var meaning = x[0].attributes.getNamedItem("meaning").nodeValue; var number = x[0].attributes.getNamedItem("number").nodeValue; var c = x[0].attributes.getNamedItem("content"); if(c!=null) content = c.nodeValue; c = x[0].attributes.getNamedItem("example"); if(c!=null) sample = c.nodeValue; x=xmldoc.getElementsByTagName('element'); if(x==null) return; var hasexample = hassample(x); var cols = hasexample ? 6:5; var str = '
' +name+ ''; if(sample != "") str += '  '; str += '
'; str += ''; str += ''; str += ''; if(hasexample) str += ''; str += ''; var lastGroup="", groups=0, groupcurrent=0, zebracount=0; for(var ele = x[0]; ele!=null; ele=ele.nextSibling) { if(ele.nodeType==3) continue; if(ele.nodeName == 'textLine') { var text = ele.childNodes[0].nodeValue; str += ''; continue; } var count = ele.childNodes.length; var defaultval="", val="", inc="", exc="", memo="", group=""; name = ele.attributes.getNamedItem("name").nodeValue; meaning = ele.attributes.getNamedItem("meaning").nodeValue; sample=""; for(j=0; j0) text = c.childNodes[0].nodeValue; if(c.nodeName=="default") defaultval = text; else if(c.nodeName == "group") group = text; else if(c.nodeName == "includeOnly") inc = text; else if(c.nodeName == "excludeOnly") exc = text; else if(c.nodeName == "example") sample = text; else if(c.nodeName == "memo") { if(memo != "") memo += "
"; memo += text; } else if(c.nodeName == "datatype") { if(text == "bool" || text == "boolean") val = "true/false"; } else if(c.nodeName == "value") { var valattr = c.attributes.getNamedItem("meaning"); if(val != "") val += '
'; if(!valattr) val += text; else val += '' + text + ' - ' + valattr.nodeValue + ';'; } } var groupcolor=""; if(lastGroup != group) { lastGroup = group; groupcurrent=0; groups = 0; if(group != "") groups = getgroupcount(ele); if(groups>0) { if(zebracolor != "") { zebracount = zebracount==0 ? 1:0; if(zebracount==0) groupcolor=zebracolor; } } } else groupcurrent++; str += gentr(hasexample, name, meaning, val, defaultval, sample, inc, exc, memo, lastGroup, groups, groupcurrent, groupcolor); } str += '
含义: ' +meaning+ ';数量: ' +number; if(content != "") str += ', 内容: ' +content; str += '
属性名称含义可用值默认值示例
' +text+ '
'; //comments x=xmldoc.getElementsByTagName('comment'); if(x!=null) { for(i=0; i1) str += i+1; str += ': ' + text + ';
'; } } document.getElementById(divTag).innerHTML = str; }