婷婷综合国产,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
    亚洲一区二区高清| www.av亚洲| 欧美精品1区2区3区| 国产喷白浆一区二区三区| 老司机精品视频在线| 日韩一卡二卡三卡| 青青草原综合久久大伊人精品| 欧美日韩精品欧美日韩精品| 亚洲风情在线资源站| 欧美日韩精品一区二区三区蜜桃| 婷婷中文字幕一区三区| 在线播放中文一区| 激情综合网av| 日韩精品专区在线影院观看| 老司机精品视频在线| 欧美一区在线视频| 国产乱码精品一品二品| 国产精品嫩草影院av蜜臀| gogo大胆日本视频一区| 亚洲黄色性网站| 91丨porny丨最新| 午夜久久福利影院| 日韩精品一区二区三区蜜臀| 国产精品综合一区二区三区| 国产亚洲精久久久久久| 国产最新精品免费| 中文字幕中文字幕在线一区| 欧美丝袜自拍制服另类| 精品一区免费av| 中文成人综合网| 欧美日韩极品在线观看一区| 蜜桃久久精品一区二区| 国产清纯白嫩初高生在线观看91| 色欧美片视频在线观看| 蜜桃视频在线观看一区二区| 国产精品天天摸av网| 欧美嫩在线观看| 成人av小说网| 日韩精品视频网站| 国产精品久久久久久久久搜平片| 欧美日本视频在线| 国产aⅴ综合色| 夜夜嗨av一区二区三区 | 91九色最新地址| 国内一区二区视频| 亚洲综合视频网| 欧美精品一区二区三区蜜臀| 色伊人久久综合中文字幕| 久久精品国产在热久久| 亚洲欧美福利一区二区| 日韩欧美一级在线播放| 日本韩国欧美国产| 国产一区二区三区在线观看免费视频 | 日韩欧美国产成人一区二区| 成人免费视频播放| 久久精品国产免费| 一区二区三区在线免费| 国产亚洲精品资源在线26u| 欧美日韩国产高清一区二区三区| 成人国产电影网| 久久丁香综合五月国产三级网站| 尤物在线观看一区| 国产精品丝袜一区| 欧美精品 国产精品| 色婷婷精品大在线视频| 国产91精品露脸国语对白| 精品在线播放午夜| 免费高清在线视频一区·| 亚洲电影视频在线| 亚洲理论在线观看| 成人免费在线视频观看| 日韩欧美一区二区免费| 91精品午夜视频| 欧美伦理影视网| 欧美性感一区二区三区| 亚洲国产成人私人影院tom| 91视频免费观看| 色老汉一区二区三区| 在线影视一区二区三区| 欧美日韩精品综合在线| 欧美一级欧美一级在线播放| 精品国免费一区二区三区| 久久精品视频免费| 国产精品网曝门| 亚洲综合激情另类小说区| 午夜精品免费在线观看| 蜜臀va亚洲va欧美va天堂| 国产一区二区三区免费播放| 成人午夜在线视频| 欧美三级资源在线| 精品美女一区二区| 中文字幕精品一区| 亚洲主播在线播放| 九九**精品视频免费播放| 成人性视频网站| 欧美日韩在线一区二区| 精品奇米国产一区二区三区| 国产精品美女一区二区三区| 亚洲电影一级片| 国产一区二区导航在线播放| 99在线精品免费| 91精品国产高清一区二区三区| 亚洲精品一区在线观看| 亚洲欧美日韩在线不卡| 麻豆极品一区二区三区| 成人动漫av在线| 欧美一区二区三区视频在线 | 丰满放荡岳乱妇91ww| 91九色02白丝porn| 精品国产乱码久久久久久闺蜜| 国产精品乱码一区二三区小蝌蚪| 午夜av一区二区三区| 成人天堂资源www在线| 欧美一级免费观看| 一区免费观看视频| 九九国产精品视频| 欧美日韩一区三区| 国产精品成人免费精品自在线观看 | 亚洲精品一卡二卡| 精品一区二区三区影院在线午夜| 99国产麻豆精品| 精品欧美一区二区在线观看 | 亚洲日本乱码在线观看| 久久99精品国产.久久久久久| 91美女视频网站| 国产欧美一区二区三区在线老狼| 午夜精品免费在线| 91福利小视频| 国产精品无圣光一区二区| 久久国产精品第一页| 欧洲人成人精品| 亚洲视频在线观看一区| 精品亚洲国产成人av制服丝袜| 欧美性猛交xxxxxxxx| 国产精品激情偷乱一区二区∴| 久久精品国产精品亚洲精品 | 高清视频一区二区| 欧美无砖专区一中文字| 自拍偷拍亚洲综合| 成人h动漫精品| 国产日韩欧美一区二区三区乱码| 免费成人美女在线观看.| 欧美日韩国产首页| 亚洲丰满少妇videoshd| 91福利社在线观看| 日韩视频免费观看高清在线视频| 亚洲超碰精品一区二区| 色丁香久综合在线久综合在线观看| 国产精品国产三级国产a | 激情欧美一区二区三区在线观看| 欧美日韩国产首页| 日韩专区中文字幕一区二区| 欧美日韩1234| 日韩国产欧美在线播放| 7777精品久久久大香线蕉| 无码av中文一区二区三区桃花岛| 91久久人澡人人添人人爽欧美| 亚洲色图视频免费播放| 97精品视频在线观看自产线路二| 国产精品久久久久久户外露出| 成人午夜电影小说| 亚洲日本护士毛茸茸| 91国产丝袜在线播放| 亚洲小说欧美激情另类| 777a∨成人精品桃花网| 蜜桃久久久久久| 国产亚洲短视频| a级高清视频欧美日韩| 亚洲视频图片小说| 欧美在线观看视频一区二区三区| 亚洲国产精品一区二区www在线| 欧美日韩aaaaaa| 激情五月播播久久久精品| 国产亚洲成年网址在线观看| 成人爽a毛片一区二区免费| 国产精品国产精品国产专区不片| 日本精品视频一区二区| 石原莉奈一区二区三区在线观看| 91精品国产91久久久久久一区二区 | 日韩高清电影一区| 日韩精品一区国产麻豆| 国产91精品露脸国语对白| 亚洲欧美国产77777| 在线不卡a资源高清| 国产精品中文字幕一区二区三区| 中文字幕一区在线观看| 欧美日韩久久一区二区| 韩国精品一区二区| 国产在线精品视频| 最新国产の精品合集bt伙计| 欧美日韩国产片| 国产精品中文字幕一区二区三区| 亚洲欧洲成人精品av97| 欧美一区二区久久| 丁香婷婷综合激情五月色| 亚洲第一成人在线| 久久综合av免费| 欧美在线free| 国产高清精品在线| 婷婷丁香激情综合|