// // caseXmlTag = 1; // 0:大小寫不變 1:小寫字母 2:大寫字母 isCompactXML = 0; // 0:完整XML 1:精簡XML 2:絕對精簡XML str2htmlAy = new Array ( ["&", "#amp;"], ["#amp;", "&"], ["<", "<"], [">", ">"], [" ", " "] ); isIE = (document.all) ? 1 : 0; // // 計算 em 之下的 childNodes 中,有多少個 _xmlType 是 block。 // 可以用 _xmlBGID 區分不同的 block group。 // function CountChildBlock_(em, xmlBGID) { var childAy = em.childNodes, len = childAy.length; var n = 0; for (var i=0; i= 0) s = s.replace(f, t); return s; } // // 將 \r\n 轉為 // function trimCRLF_(s) { s = strReplace_(s, '\r', ''); s = strReplace_(s, '\n', ''); return s; } // // 將 string 轉換 str2htmlAy 所列的特殊字元為 html code // function str2html_(s) { s = strReplace_(s, "\r", ""); var a = s.split('\n'); var n = a.length; s = ""; for (var i=0; i') s += ''; else s += '
'; } for (var i=0; i=0; i--) //s = strReplace_(s, str2htmlAy[i][1], str2htmlAy[i][0]); s = strReplace_(s, "\r", ""); s = strReplace_(s, "\n", ""); s = strReplace_(s, "
", ((isIE) ? "\r\n" : "\n")); s = strReplace_(s, "", ((isIE) ? "\r\n" : "\n")); s = strReplace_(s, ";;;", ((isIE) ? ";\r\n" : ";\n")); s = strReplace_(s, "+''+", ((isIE) ? "+\r\n" : "+\n")); if (s == " ") s = ""; return s; } // // 以下這兩個函式將以 _xmlType='root' 開始的 Form 架構轉換成 XML。 // 主要程式為 Form2XML_。 // function doForm2XML_(dom, html) { var em = dom, cAttr; var cTag = html.getAttribute("_xmlTag"); var cType = html.getAttribute("_xmlType"); var cIdxName = html.getAttribute("_idxName"); var cIdxNameRO = html.getAttribute("_idxNameRO"); var cIdxNameRW = html.getAttribute("_idxNameRW"); var cIdxAttr = html.getAttribute("_idxAttr"); var cIdxAttrRO = html.getAttribute("_idxAttrRO"); var cIdxAttrRW = html.getAttribute("_idxAttrRW"); var cIdx1Name = html.getAttribute("_idx1Name"); var cIdx1NameRO = html.getAttribute("_idx1NameRO"); var cIdx1NameRW = html.getAttribute("_idx1NameRW"); var cIdx1Attr = html.getAttribute("_idx1Attr"); var cIdx1AttrRO = html.getAttribute("_idx1AttrRO"); var cIdx1AttrRW = html.getAttribute("_idx1AttrRW"); if (cTag) if (cType == "attr") { //if (html.getAttribute("type")!="checkbox" || html.getAttribute("type")=="checkbox" && html.checked) { if (html.getAttribute("type")=="checkbox" && !html.checked) html.value = "---"; if (html.value) em.setAttribute(strChgCase_(cTag, caseXmlTag), html.value); if (cIdxAttr) { cAttr = em.getAttribute("_idxattr"); cAttr = (cAttr) ? cAttr+";"+cIdxAttr : cIdxAttr; em.setAttribute("_idxattr", cAttr); } if (cIdxAttrRO) { cAttrRO = em.getAttribute("_idxattrro"); cAttrRO = (cAttrRO) ? cAttrRO+";"+cIdxAttrRO : cIdxAttrRO; em.setAttribute("_idxattrro", cAttrRO); } if (cIdxAttrRW) { cAttrRW = em.getAttribute("_idxattrrw"); cAttrRW = (cAttrRW) ? cAttrRW+";"+cIdxAttrRW : cIdxAttrRW; em.setAttribute("_idxattrrw", cAttrRW); } if (cIdx1Attr) { c1Attr = em.getAttribute("_idx1attr"); c1Attr = (c1Attr) ? c1Attr+";"+cIdx1Attr : cIdx1Attr; em.setAttribute("_idx1attr", c1Attr); } if (cIdx1AttrRO) { c1AttrRO = em.getAttribute("_idx1attrro"); c1AttrRO = (c1AttrRO) ? c1AttrRO+";"+cIdx1AttrRO : cIdx1AttrRO; em.setAttribute("_idx1attrro", c1AttrRO); } if (cIdx1AttrRW) { c1AttrRW = em.getAttribute("_idx1attrrw"); c1AttrRW = (c1AttrRW) ? c1AttrRW+";"+cIdx1AttrRW : cIdx1AttrRW; em.setAttribute("_idx1attrrw", c1AttrRW); } //} } else if (cType == "value") em.innerHTML = str2html_(html.value); else if (cType == "element") { //if (html.getAttribute("type")!="checkbox" || html.getAttribute("type")=="checkbox" && html.checked) { if (html.getAttribute("type")=="checkbox" && !html.checked) html.value = "---"; em = document.createElement(strChgCase_(cTag, caseXmlTag)); dom.appendChild(em); if (cIdxName) em.setAttribute("_idx", cIdxName); if (cIdxNameRO) em.setAttribute("_idxro", cIdxNameRO); if (cIdxNameRW) em.setAttribute("_idxrw", cIdxNameRW); if (cIdxAttr) em.setAttribute("_idxattr", cIdxAttr); if (cIdxAttrRO) em.setAttribute("_idxattrro", cIdxAttrRO); if (cIdxAttrRW) em.setAttribute("_idxattrrw", cIdxAttrRW); if (cIdx1Name) em.setAttribute("_idx1", cIdx1Name); if (cIdx1NameRO) em.setAttribute("_idx1ro", cIdx1NameRO); if (cIdx1NameRW) em.setAttribute("_idx1rw", cIdx1NameRW); if (cIdx1Attr) em.setAttribute("_idx1attr", cIdx1Attr); if (cIdx1AttrRO) em.setAttribute("_idx1attrro", cIdx1AttrRO); if (cIdx1AttrRW) em.setAttribute("_idx1attrrw", cIdx1AttrRW); em.innerHTML = str2html_(html.value); //} } else { em = document.createElement(strChgCase_(cTag, caseXmlTag)); dom.appendChild(em); if (cIdxName) em.setAttribute("_idx", cIdxName); if (cIdxNameRO) em.setAttribute("_idxro", cIdxName); if (cIdxNameRW) em.setAttribute("_idxrw", cIdxName); if (cIdxAttr) em.setAttribute("_idxattr", cIdxAttr); if (cIdxAttrRO) em.setAttribute("_idxattrro", cIdxAttrRO); if (cIdxAttrRW) em.setAttribute("_idxattrrw", cIdxAttrRW); if (cIdx1Name) em.setAttribute("_idx1", cIdx1Name); if (cIdx1NameRO) em.setAttribute("_idx1ro", cIdx1Name); if (cIdx1NameRW) em.setAttribute("_idx1rw", cIdx1Name); if (cIdx1Attr) em.setAttribute("_idx1attr", cIdx1Attr); if (cIdx1AttrRO) em.setAttribute("_idx1attrro", cIdx1AttrRO); if (cIdx1AttrRW) em.setAttribute("_idx1attrrw", cIdx1AttrRW); } var childAy = html.childNodes, len = childAy.length; for (var i=0; i