欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

一個用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)_Xml教程

編輯Tag賺U幣
教程Tag:XMLxhtmlxslt添加

推薦:jscript與vbscript 操作XML元素屬性的代碼
jscript與vbscript 操作XML元素屬性的代碼,需要的朋友可以參考下。

由于前面的方法xslt需要在xml文件內部直接導入,而項目中用到的xml文件是系統生成的,只能提供路徑,而沒有辦法改寫xml里面的內容,所以需要找一個方法能夠在外部將xml和xslt關聯在一起,這樣既達到了目的,也可以應用于多個xml文件,方便管理。
先上代碼,系統中使用module這個js進行打包,module這個工具是專門用來將js進行打包,這個工具以后的文章再做介紹,我自己現在只會使用,還沒研究其底層的代碼;這邊我們將js寫在一個文件里面,包括類以及類實現的方法,
下面是js代碼:transform.js
復制代碼 代碼如下:m.ghpqjb.com

var XmlDom=function(){
if (window.ActiveXObject) { // IE
var arrSignatures = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",
"MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument",
"Microsoft.XmlDom"];
for (var i=0; i < arrSignatures.length; i++) {
try {
var oXmlDom = new ActiveXObject(arrSignatures[i]);
return oXmlDom;
} catch (oError) {
//ignore
}
}
throw new Error("你的系統沒有安裝 MSXML.");
} else if(document.implementation.createDocument){ // Firefox
var oXmlDom = document.implementation.createDocument("", "", null);
return oXmlDom;
} else{
throw new Error("瀏覽器不支持 XML DOM object.");
}
}
var transformXSLT=function(_XML,_XSL) {
if (window.Node) {
Node.prototype.transformNode = function(XslDom) {
var oProcessor = new XSLTProcessor();
oProcessor.importStylesheet(XslDom);
var oResultDom = oProcessor.transformToDocument(myXmlDom);
var oSerializer = new XMLSerializer();
var sXml = oSerializer.serializeToString(oResultDom, "text/xml");
return sXml;
}
}
var myXmlDom = new XmlDom();
myXmlDom.async=false;
var myXslDom = new XmlDom();
myXslDom.async=false;
myXmlDom.load(_XML);
myXslDom.load(_XSL);
var sResult=myXmlDom.transformNode(myXslDom);
if(window.ActiveXObject){
if(myXmlDom.parseError.errorCode != 0){
var sError=myXmlDom.parseError;
var txt = "";
txt += "<br>錯誤代碼: ";
txt += sError.errorCode;
txt += "<br>錯誤原因: ";
txt += sError.reason;
txt += "<br>錯誤行號: ";
txt += sError.line;
document.write(txt);
}else{
document.write(sResult);
}
} else if(document.implementation.createDocument){
var oSerializer = new XMLSerializer();
var sXmlDom = oSerializer.serializeToString(myXmlDom, "text/xml");
var oParser = new DOMParser();
var oXmlDom = oParser.parseFromString(sXmlDom,"text/xml");
if (oXmlDom.documentElement.tagName == "parsererror") {
var oXmlSerializer = new XMLSerializer();
var sXmlError = oXmlSerializer.serializeToString(oXmlDom);
alert(sXmlError);
} else {
document.write(sResult);
}
}
}
var TransformBinder = function(XML,XSL) {
this.XML = XML;
this.XSL = XSL;
}
TransformBinder.prototype.registerAction = function(handlers) {
this.handlers = handlers;
}
TransformBinder.prototype.bind = function() {
var _this = this;
this.handlers(_this.XML,_this.XSL);
}

下面是html代碼:XSLTtransform.htm
復制代碼 代碼如下:m.ghpqjb.com

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type='text/javascript' src="transform.js"></script>
</head>
<body>
<script type="text/javascript">
var XML = "這里輸入XML路徑";
var XSL = "這里輸入XSL路徑";
var tempObj = new TransformBinder(XML,XSL);
tempObj.registerAction(transformXSLT);
tempObj.bind();
</script>
</body>
</html>

分析一下transform.js:
xmlDom這個構造函數是用來創建xml的dom元素,對于IE和FF,創建dom的方法不一樣,IE是用window.ActiveXObject這個方法來創建,而FF用document.implementation.createDocument這個方法來創建,我們用這兩個屬性來判斷是IE還是FF。
IE下針對不同版本的xml["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument","Microsoft.XmlDom"],用for循環進行遍歷查找到對應的版本再new ActiveXObject(arrSignatures[i])建立dom;
FF下用document.implementation.createDocument("", "", null);直接創建dom ;
如果瀏覽器不支持 XML DOM object則throw錯誤 。
transformXSLT這個構造函數用XSLT將xml轉換成html,FF下沒有transformNode這個方法,所以我們自己構造了一個方法,
復制代碼 代碼如下:m.ghpqjb.com

Node.prototype.transformNode = function(XslDom) {
var oProcessor = new XSLTProcessor();
oProcessor.importStylesheet(XslDom);
var oResultDom = oProcessor.transformToDocument(myXmlDom);
var oSerializer = new XMLSerializer();
var sXml = oSerializer.serializeToString(oResultDom, "text/xml");
return sXml;
}

然后用這個方法實現轉換,在處理錯誤上IE和FF又有不同的處理方法,IE比較簡單,有一個parseError屬性裝載錯誤信息,errorCode是錯誤的代碼,reason是錯誤原因,line是錯誤的行號,還有其他一些信息,這里只要顯示主要的錯誤信息就可以了,如果出錯了就顯示出錯內容,如果沒有出錯則顯示轉換的結果sResult。FF下就比較復雜一點,用XMLSerializer和XMLSerializer.serializeToString()將xmlDom轉換為字符串,再將字符串轉換成dom對象,在轉換的過程中如果報錯,就能得到包含有parsererror的信息,判斷得到的字符串的tagName是不是parsererror,如果是則將dom對象再轉換成字符串拋出字符串中的內容,如果不是則顯示轉換的結果sResult。
這里有幾個注意點:
a.IE能檢驗出XML的DTD錯誤,而FF下只能檢驗出XML本身的語法錯誤;
b.因為需要在瀏覽器下判斷錯誤,最終的結果不好合并,可能代碼結構上看起來不太合理,這也是無奈之舉。
用TransformBinder這個類進行封裝,便于擴展和修改。TransformBinder.prototype.registerAction這個原型用于注冊事件,再用TransformBinder.prototype.bind將事件進行綁定,需要使用這個類的時候,只需要new TransformBinder(XML,XSL),注冊transformXSLT事件,再bind進行綁定,這樣就實現這個效果了。如果需要擴展,再創建新的構造函數,注冊并綁定到這個類上就可以實現效果。

分享:XML解析錯誤:未組織好 的解決辦法
主要問題:XML文件完整,在liunx系統下可正常顯示,但是windows系統提示出錯

來源:模板無憂//所屬分類:Xml教程/更新時間:2013-04-22
相關Xml教程
欧美在线一区二区| 99精彩视频在线观看免费| 99久热re在线精品996热视频| 国内精品伊人久久| 日韩国产欧美一区| 久久嫩草捆绑紧缚| av一级亚洲| 91美女片黄在线观看91美女| 国产亚洲精品久久久久久| 亚洲精品日韩精品| 一区二区视频免费看| 欧美电影完整版在线观看| 久久精子c满五个校花| 久久久精品999| 久久综合色视频| 91麻豆国产视频| 国产精品一级| 欧美一区二区精品久久911| 久久亚洲精品欧美| 男女性高潮免费网站| 亚洲传媒在线| 自拍偷自拍亚洲精品播放| 97在线精品国自产拍中文| 精品亚洲一区二区三区四区| 手机在线观看毛片| 国产精品一区二区黑丝| 亚洲人永久免费| 国产小视频免费| 特级西西444www高清大视频| 亚洲激情社区| 337p亚洲精品色噜噜| 久久天堂国产精品| 欧美黄片一区二区三区| 99精品视频在线观看播放| 色综合久久99| 国产精品国产精品| 国内毛片毛片毛片毛片毛片| 亚洲调教一区| 舔着乳尖日韩一区| 91亚洲精品丁香在线观看| 亚洲a∨无码无在线观看| 亚洲尤物av| 五月天激情综合| 99精彩视频在线观看免费| 毛片aaaaaa| 亚洲国产精品嫩草影院久久av| 亚洲激情一二三区| 久久er热在这里只有精品66| www.蜜桃av.com| 视频一区在线视频| 亚洲第一福利网站| 只有这里有精品| 一级特黄aaa大片| 欧美aaa在线| 亚洲欧美国产日韩中文字幕| 和岳每晚弄的高潮嗷嗷叫视频| 国产男男gay网站| 久久国产精品一区二区| 在线一区二区日韩| 色婷婷狠狠18| 免费日韩成人| 亚洲欧洲www| 国产女同一区二区| 特级西西人体高清大胆| 国产精品不卡| 91麻豆精品国产91久久久久| 久久久国产精华液999999| 亚洲一区二区天堂| 国产在线播放一区| 国产精品一区二区久久不卡 | 久久精品免费看| 亚洲天堂av在线播放| 国内自拍视频一区| 九九九精品视频| 国产精品三级电影| 成人黄色免费看| 日韩激情综合网| 黄色亚洲在线| 日韩av中文在线| 任你操这里只有精品| 成人在线免费电影网站| 亚洲欧洲国产日本综合| av免费观看久久| 亚洲国产精品午夜在线观看| 99亚洲伊人久久精品影院红桃| 日韩精品在线观看一区二区| 亚洲国产精品毛片av不卡在线| 成人免费一区| 亚洲视频在线一区| 懂色av一区二区三区在线播放| 圆产精品久久久久久久久久久| 美女精品在线观看| 日韩视频免费看| 少妇伦子伦精品无吗| 要久久电视剧全集免费 | 久久久久久久麻豆| 好看的日韩av电影| 亚洲色无码播放| 老司机久久精品| 国产一区在线电影| 欧美日韩在线播放三区四区| 亚洲小视频在线播放| 亚州男人的天堂| 亚洲视频一区二区免费在线观看| 国内精品一区二区| 中文字幕一区二区三区四区视频| 懂色av一区二区三区免费观看| 日本精品中文字幕| 四虎精品免费视频| 久久天天综合| 欧美激情视频在线免费观看 欧美视频免费一 | 国产精品99精品| 日韩精品视频网| 欧美黄色成人网| 蜜桃久久精品成人无码av| 欧美久久视频| 在线性视频日韩欧美| 怡红院一区二区| 91亚洲人成网污www| 精品视频在线播放| 成人三级做爰av| 国产毛片一区二区三区| 精品蜜桃在线看| 无尽裸体动漫2d在线观看| 久久久久观看| 日韩丝袜情趣美女图片| 国产一二三区av| 一本久久青青| 精品国产99国产精品| 57pao国产成永久免费视频| 小嫩嫩12欧美| 欧美成人高清电影在线| 中文字幕第17页| 欧美**vk| 日韩成人中文电影| 中文字幕人妻熟女人妻a片| 91久久夜色精品国产按摩| 日韩电影中文字幕在线观看| 日本中文字幕有码| 欧美黄在线观看| 久久精品视频导航| 男人的午夜天堂| 久久99精品久久久| 国产精品欧美一区二区三区奶水| 色婷婷在线观看视频| 99在线视频精品| 成人一区二区在线| 性生活三级视频| 一区二区三区.www| 国产女主播av| 99精品国产一区二区三区2021| 欧美一级久久久久久久大片| 亚洲免费黄色网| 99精品网站| 日韩视频免费在线观看| 亚洲女人久久久| 国产中文一区二区三区| 91香蕉亚洲精品| 精品黑人一区二区三区在线观看| 亚洲精品视频一区| 国产一区 在线播放| 成人搞黄视频| 精品国产乱码久久久久久夜甘婷婷 | 国产 欧美 精品| 亚洲五码中文字幕| 日本男女交配视频| 噜噜噜天天躁狠狠躁夜夜精品 | 国产精品高清一区二区 | 毛片毛片女人毛片毛片| 91麻豆免费观看| 蜜桃av噜噜一区二区三| 日韩高清中文字幕一区二区| 欧美亚洲国产一区在线观看网站 | 欧美日韩一区二区三区| 免费在线a视频| 国产永久精品大片wwwapp| 中文字幕国内精品| 久久免费看少妇高潮v片特黄| 国产美女精品在线| 国产91视觉| 香蕉久久国产av一区二区| 色婷婷综合久久久久中文一区二区 | 国产精品久久国产精麻豆99网站| 一本色道久久综合亚洲精品婷婷| 国产中文欧美日韩在线| 亚洲国产欧美久久| 国产在线综合视频| 国产一区二区免费在线| 国产精品日韩一区二区免费视频| 五月激情丁香婷婷| 欧美日韩久久不卡| 亚洲av成人片无码| 麻豆成人av在线| 国产精品久久久久久久小唯西川| 在线观看精品| 日韩免费视频一区二区| theav精尽人亡av| 国内精品免费在线观看| 岛国一区二区三区高清视频| 欧美成人h版| 日韩一级片在线观看| 粉嫩av蜜桃av蜜臀av| 国产精品69毛片高清亚洲| 蜜桃在线一区二区三区精品| 国产在线一区不卡| 亚洲欧洲日产国码av系列天堂| 中国一级片在线观看| 91尤物视频在线观看| 中文字幕中文字幕一区三区| 国内精品国产成人国产三级粉色| 日韩中文字幕在线播放| 国产成人在线观看网站| 亚洲欧美在线观看| 国产精品欧美激情在线观看| 欧美三级网页| 国产精品丝袜视频| 久久久久久久| 日韩精品在线看片z| x88av在线| 成人avav在线| 热久久最新地址| 日韩欧美午夜| 日本精品视频网站| 欧美特黄一级视频| 日韩欧美不卡一区| 91久久国产综合| 中文字幕精品一区二区三区精品| 日韩在线视频在线观看| 亚洲福利专区| 日韩欧美成人区| 亚洲色图.com| 亚洲亚洲精品在线观看| 欧美日本国产视频| 久久精视频免费在线久久完整在线看| 欧美 日韩 国产 成人 在线观看| 大胆亚洲人体视频| 色呦呦网站入口| 成人在线丰满少妇av| 欧美孕妇与黑人孕交| 好吊色在线观看| 欧美一级二级三级蜜桃| 北条麻妃在线观看视频| 国产精品妹子av| 欧美精品无码一区二区三区| 米奇777在线欧美播放| 成人区精品一区二区| 一区二区三区在线免费看| 欧美精品日韩www.p站| 亚洲一区二区在线看| 任你操精品视频| 久久久久久黄色| 国产男女无遮挡| 日韩在线一二三区| 日韩一区二区三区资源| 国内精品久久久久久久久电影网| 欧美最猛性xxxx| 日韩不卡免费高清视频| 精品无码久久久久久国产| 特黄视频免费看| 色猫猫国产区一区二在线视频| 右手影院亚洲欧美| 久久一留热品黄| 久久精品香蕉视频| 美腿丝袜在线亚洲一区| 日韩在线第一区| 婷婷色综合网| 亚洲一区二区三区视频播放| 日本精品视频| 欧美黑人xxx| 天天干,夜夜操| 亚洲欧美在线一区| 亚洲天堂中文网| 日韩视频在线永久播放| 久久久久久天堂| 欧美日韩视频在线| 少妇av片在线观看| 综合欧美一区二区三区| av在线免费观看不卡| 91免费视频网| 亚洲第一狼人区| 成人一级黄色片| 欧美精品一区免费| 蜜臀av一区二区在线免费观看| 欧洲精品视频在线| 中文高清一区| 亚洲精品日韩在线观看| 欧美黄色一区| 女同一区二区| 婷婷精品进入| 精品一卡二卡三卡四卡日本乱码| 欧美午夜精品一区二区三区电影| 亚洲一区久久久| 婷婷成人在线| 成人淫片在线看| theporn国产在线精品| 国产91在线高潮白浆在线观看 | 国产成人在线视频免费播放| 久无码久无码av无码| 日韩精品免费视频人成| 欧美在线观看视频免费| 天使萌一区二区三区免费观看| 日本免费在线视频观看| 性伦欧美刺激片在线观看| 欧美少妇一级片| 久久精品一区二区国产| 自拍偷拍视频在线| 亚洲欧美日韩视频二区| 91精品国产吴梦梦| 日韩中文字幕不卡| 国产成人永久免费视频| 久久精品国产999大香线蕉| 免费看又黄又无码的网站| 国产一区在线视频| 爱福利视频一区二区| 国产aⅴ综合色| 天天干天天操天天做| 久久综合久久综合久久综合| 精产国品一区二区三区| 国产精品久久久99| 3d动漫精品啪啪一区二区下载| 亚洲午夜视频在线| 美国一级黄色录像| 色综合久久中文字幕| 久久综合加勒比| 制服丝袜亚洲网站| 一区二区乱子伦在线播放| 精品视频久久久| 天天色综合av| 国外成人免费在线播放| 91成人福利| 91老司机在线| 色婷婷热久久| 亚洲国产综合自拍| 欧美aⅴ一区二区三区视频| 男人日女人bb视频| 91尤物视频在线观看| 年下总裁被打光屁股sp| 亚洲美女在线国产| 欧美一级特黄高清视频| 欧美日韩国产一区| 亚洲视频中文字幕在线观看| 伊人久久久久久久久久久久久| 久久人体大尺度| 5566日本婷婷色中文字幕97| 豆花视频一区二区| 国产精品theporn88| 精品成人久久| 欧美久久在线观看| 成人精品视频一区二区三区尤物| 日韩欧美中文视频| 亚洲精品免费在线| 国产精品成人免费观看| 日韩一本二本av| www.国产精品视频| 欧美激情极品视频| 国产伦精品一区二区三区在线播放| 国产成人看片| 激情欧美日韩| 老太脱裤让老头玩ⅹxxxx| 成人18视频在线播放| 国产精品无码专区| 色婷婷av一区二区三区gif| 一级黄色免费网站| 亚洲一级片在线看| 四虎地址8848精品| 92看片淫黄大片看国产片| 国产精品99免费看| 俄罗斯av网站| 国产无人区一区二区三区| 综合 欧美 亚洲日本| 正在播放亚洲一区| 国产91绿帽单男绿奴| 欧美在线国产精品| 狠狠做深爱婷婷综合一区| 在线综合视频网站| 国产黄色成人av| 黑丝av在线播放| 在线看日本不卡| 国产精品久久久久久久久久久久久久久久久久 | 国产精品国产三级国产传播| 日韩精品专区在线影院重磅| 少妇荡乳情欲办公室456视频| 国产精品jizz在线观看麻豆| 亚洲国产一成人久久精品| a级免费在线观看| 欧美韩日一区二区三区| 欧美黑吊大战白妞| 亚洲天堂精品在线| 久久伊人影院| 久久久精彩视频| 狠狠色狠狠色合久久伊人| 亚洲麻豆一区二区三区| 在线亚洲一区二区| 性色av蜜臀av| 国产精品日韩精品| 黄色在线一区| 校园春色 亚洲色图| 亚洲成人av中文| 夜夜躁很很躁日日躁麻豆| 97碰碰碰免费色视频|