婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > 一個(gè)用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)

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

熱門標(biāo)簽:微信地圖標(biāo)注合并了 高德地圖地圖標(biāo)注服務(wù)中心 東營電銷 400電話辦理包年 r語言數(shù)據(jù)可視化地圖標(biāo)注 隨州外呼調(diào)研系統(tǒng) 本地電話機(jī)器人 如何修改多個(gè)百度地圖標(biāo)注 南寧網(wǎng)絡(luò)外呼系統(tǒng)運(yùn)營商
由于前面的方法xslt需要在xml文件內(nèi)部直接導(dǎo)入,而項(xiàng)目中用到的xml文件是系統(tǒng)生成的,只能提供路徑,而沒有辦法改寫xml里面的內(nèi)容,所以需要找一個(gè)方法能夠在外部將xml和xslt關(guān)聯(lián)在一起,這樣既達(dá)到了目的,也可以應(yīng)用于多個(gè)xml文件,方便管理。
先上代碼,系統(tǒng)中使用module這個(gè)js進(jìn)行打包,module這個(gè)工具是專門用來將js進(jìn)行打包,這個(gè)工具以后的文章再做介紹,我自己現(xiàn)在只會(huì)使用,還沒研究其底層的代碼;這邊我們將js寫在一個(gè)文件里面,包括類以及類實(shí)現(xiàn)的方法,
下面是js代碼:transform.js
復(fù)制代碼 代碼如下:

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("你的系統(tǒng)沒有安裝 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>錯(cuò)誤代碼: ";
txt += sError.errorCode;
txt += "br>錯(cuò)誤原因: ";
txt += sError.reason;
txt += "br>錯(cuò)誤行號(hào): ";
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
復(fù)制代碼 代碼如下:

!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這個(gè)構(gòu)造函數(shù)是用來創(chuàng)建xml的dom元素,對(duì)于IE和FF,創(chuàng)建dom的方法不一樣,IE是用window.ActiveXObject這個(gè)方法來創(chuàng)建,而FF用document.implementation.createDocument這個(gè)方法來創(chuàng)建,我們用這兩個(gè)屬性來判斷是IE還是FF。
IE下針對(duì)不同版本的xml["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument","Microsoft.XmlDom"],用for循環(huán)進(jìn)行遍歷查找到對(duì)應(yīng)的版本再new ActiveXObject(arrSignatures[i])建立dom;
FF下用document.implementation.createDocument("", "", null);直接創(chuàng)建dom ;
如果瀏覽器不支持 XML DOM object則throw錯(cuò)誤 。
transformXSLT這個(gè)構(gòu)造函數(shù)用XSLT將xml轉(zhuǎn)換成html,F(xiàn)F下沒有transformNode這個(gè)方法,所以我們自己構(gòu)造了一個(gè)方法,
復(fù)制代碼 代碼如下:

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;
}

然后用這個(gè)方法實(shí)現(xiàn)轉(zhuǎn)換,在處理錯(cuò)誤上IE和FF又有不同的處理方法,IE比較簡單,有一個(gè)parseError屬性裝載錯(cuò)誤信息,errorCode是錯(cuò)誤的代碼,reason是錯(cuò)誤原因,line是錯(cuò)誤的行號(hào),還有其他一些信息,這里只要顯示主要的錯(cuò)誤信息就可以了,如果出錯(cuò)了就顯示出錯(cuò)內(nèi)容,如果沒有出錯(cuò)則顯示轉(zhuǎn)換的結(jié)果sResult。FF下就比較復(fù)雜一點(diǎn),用XMLSerializer和XMLSerializer.serializeToString()將xmlDom轉(zhuǎn)換為字符串,再將字符串轉(zhuǎn)換成dom對(duì)象,在轉(zhuǎn)換的過程中如果報(bào)錯(cuò),就能得到包含有parsererror的信息,判斷得到的字符串的tagName是不是parsererror,如果是則將dom對(duì)象再轉(zhuǎn)換成字符串拋出字符串中的內(nèi)容,如果不是則顯示轉(zhuǎn)換的結(jié)果sResult。
這里有幾個(gè)注意點(diǎn):
a.IE能檢驗(yàn)出XML的DTD錯(cuò)誤,而FF下只能檢驗(yàn)出XML本身的語法錯(cuò)誤;
b.因?yàn)樾枰跒g覽器下判斷錯(cuò)誤,最終的結(jié)果不好合并,可能代碼結(jié)構(gòu)上看起來不太合理,這也是無奈之舉。
用TransformBinder這個(gè)類進(jìn)行封裝,便于擴(kuò)展和修改。TransformBinder.prototype.registerAction這個(gè)原型用于注冊(cè)事件,再用TransformBinder.prototype.bind將事件進(jìn)行綁定,需要使用這個(gè)類的時(shí)候,只需要new TransformBinder(XML,XSL),注冊(cè)transformXSLT事件,再bind進(jìn)行綁定,這樣就實(shí)現(xiàn)這個(gè)效果了。如果需要擴(kuò)展,再創(chuàng)建新的構(gòu)造函數(shù),注冊(cè)并綁定到這個(gè)類上就可以實(shí)現(xiàn)效果。
您可能感興趣的文章:
  • python使用xslt提取網(wǎng)頁數(shù)據(jù)的方法
  • 使用Python下的XSLT API進(jìn)行web開發(fā)的簡單教程
  • 用xslt將xml解析成xhtml的代碼
  • XSLT輕松入門第二章:XSLT的實(shí)例
  • python提取字典key列表的方法
  • Python實(shí)現(xiàn)從url中提取域名的幾種方法
  • python利用正則表達(dá)式提取字符串
  • python使用正則表達(dá)式提取網(wǎng)頁URL的方法
  • Python進(jìn)行數(shù)據(jù)提取的方法總結(jié)
  • 1分鐘快速生成用于網(wǎng)頁內(nèi)容提取的xslt

標(biāo)簽:果洛 拉薩 宿遷 西雙版納 寧夏 益陽 黃石 德州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《一個(gè)用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)》,本文關(guān)鍵詞  一個(gè),用,xslt,樣式,將,xml,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《一個(gè)用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)》相關(guān)的同類信息!
  • 本頁收集關(guān)于一個(gè)用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产曰批免费观看久久久| 国产午夜精品一区二区三区视频| 精品一区二区三区免费播放| 亚洲成av人**亚洲成av**| 国产精品不卡视频| 国产精品久久三| 亚洲三级在线播放| 亚洲小说欧美激情另类| 日韩avvvv在线播放| 免费一级片91| 国产精品99久| 99久久精品国产一区| 色94色欧美sute亚洲线路二| 日本乱码高清不卡字幕| 欧美日韩在线观看一区二区| 在线成人av网站| 日韩免费性生活视频播放| 欧美精品一区视频| 亚洲国产成人私人影院tom| 亚洲欧美一区二区三区国产精品| 伊人开心综合网| 麻豆精品视频在线| 国产成人aaa| 欧美日韩亚洲综合一区二区三区 | 日韩精品一区二区三区蜜臀| 欧美电视剧免费全集观看| 国产婷婷色一区二区三区| 国产精品电影院| 日韩中文欧美在线| 成人综合婷婷国产精品久久蜜臀| 91色乱码一区二区三区| 日韩欧美国产高清| 日韩一区在线免费观看| 视频一区欧美精品| 波多野结衣一区二区三区| 欧美精品乱码久久久久久按摩| 日韩免费观看高清完整版在线观看| 久久久精品影视| 亚洲成va人在线观看| 久久电影网站中文字幕| 色香蕉成人二区免费| 日韩欧美一级二级| 亚洲精品一二三四区| 国产真实精品久久二三区| 欧美伊人久久久久久久久影院| 精品乱人伦一区二区三区| 一区二区在线电影| 成人精品小蝌蚪| 日韩欧美国产系列| 婷婷一区二区三区| 色悠久久久久综合欧美99| 国产欧美精品一区二区色综合| 婷婷激情综合网| 在线观看av一区| 亚洲欧洲日产国产综合网| 经典三级在线一区| 91精品国产综合久久香蕉的特点| 亚洲日本在线a| 国产91在线|亚洲| 久久综合色一综合色88| 日本va欧美va精品| 欧美日韩电影一区| 亚洲第一狼人社区| 欧美色图免费看| 亚洲一区二区三区三| www.欧美.com| 中文字幕亚洲电影| 成人app网站| 国产精品福利影院| 成人高清伦理免费影院在线观看| 精品国产免费一区二区三区四区| 日本欧美一区二区| 欧美一级夜夜爽| 午夜精品久久久| 欧美日韩国产精品自在自线| 一区二区三区日韩在线观看| 91黄色在线观看| 午夜欧美大尺度福利影院在线看 | 美女被吸乳得到大胸91| 欧美高清激情brazzers| 三级一区在线视频先锋 | 欧美久久一二区| 天天射综合影视| 日韩欧美在线网站| 久草这里只有精品视频| 精品噜噜噜噜久久久久久久久试看| 蜜桃av一区二区| 国产日韩欧美高清| 99精品视频一区二区| 亚洲综合在线免费观看| 91精品久久久久久蜜臀| 久久99久久99| 国产精品无人区| 日本精品一级二级| 午夜视频一区在线观看| 日韩欧美电影一区| 成人永久免费视频| 亚洲摸摸操操av| 日韩欧美在线影院| www.日本不卡| 日本麻豆一区二区三区视频| 久久精品在这里| 欧美午夜精品一区二区三区| 麻豆免费精品视频| 国产精品乱码妇女bbbb| 欧美日韩二区三区| 成人av午夜影院| 亚洲动漫第一页| 久久蜜桃av一区精品变态类天堂| av在线不卡网| 国内精品在线播放| 亚洲国产一区二区三区| 26uuuu精品一区二区| 97se亚洲国产综合在线| 韩国欧美国产1区| 亚洲电影视频在线| 中文字幕中文字幕一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 国内偷窥港台综合视频在线播放| 亚洲欧美色一区| 日韩视频一区二区三区| 色哟哟一区二区| 国产精品18久久久久久久久| 亚洲午夜国产一区99re久久| 久久青草国产手机看片福利盒子| 色久综合一二码| 国产一区二区三区综合| 午夜久久电影网| 亚洲激情校园春色| 日本一区二区不卡视频| 欧美电视剧在线看免费| 欧美性感一类影片在线播放| 国产成人免费在线观看| 美女视频免费一区| 亚洲国产成人av| 亚洲一区二区四区蜜桃| 亚洲图片另类小说| 国产精品久久久久婷婷| 国产婷婷一区二区| 久久嫩草精品久久久精品一| 日韩欧美中文字幕制服| 日韩三级视频在线观看| 欧美一区二区三区在线电影 | 欧美精品一区二区三| 欧美一区二区精品| 欧美一区二区三区四区五区| 欧美日韩一区不卡| 欧美视频一区二区三区| 色94色欧美sute亚洲线路一ni | 亚洲欧美日韩电影| 最新日韩在线视频| 中文字幕在线不卡一区| **性色生活片久久毛片| 亚洲精品视频自拍| 一区二区成人在线| 亚洲一二三区不卡| 欧美aaaaaa午夜精品| 蜜桃久久久久久| 国产成人精品一区二| 成人av中文字幕| 日本道精品一区二区三区| 欧美日韩视频在线第一区 | 99re热视频这里只精品| 91在线国产观看| 欧美性大战久久久久久久蜜臀| 欧美卡1卡2卡| 久久精品在这里| 亚洲视频资源在线| 日韩中文字幕91| 国产成人aaaa| 欧美人妖巨大在线| 欧美精品一区二区三区蜜桃 | 欧美成人激情免费网| 国产三级一区二区| 亚洲激情在线播放| 麻豆精品国产传媒mv男同| 国产高清一区日本| 欧美日韩一区不卡| 久久久99免费| 亚洲综合激情小说| 国产在线精品国自产拍免费| 99re6这里只有精品视频在线观看| 在线观看av不卡| 国产三级一区二区| 无码av中文一区二区三区桃花岛| 国产一区二区福利| 精品1区2区3区| 国产视频一区在线播放| 婷婷激情综合网| 99久久免费视频.com| 日韩欧美国产精品| 亚洲国产另类精品专区| 国产成人av电影在线观看| 欧美日韩视频在线一区二区| 国产欧美日韩综合| 青青草国产精品亚洲专区无| www..com久久爱| 国产日韩欧美高清| 免费在线观看不卡| 欧美年轻男男videosbes|