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

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

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

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

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
復制代碼 代碼如下:

!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這個方法,所以我們自己構造了一個方法,
復制代碼 代碼如下:

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進行綁定,這樣就實現這個效果了。如果需要擴展,再創建新的構造函數,注冊并綁定到這個類上就可以實現效果。
您可能感興趣的文章:
  • python使用xslt提取網頁數據的方法
  • 使用Python下的XSLT API進行web開發的簡單教程
  • 用xslt將xml解析成xhtml的代碼
  • XSLT輕松入門第二章:XSLT的實例
  • python提取字典key列表的方法
  • Python實現從url中提取域名的幾種方法
  • python利用正則表達式提取字符串
  • python使用正則表達式提取網頁URL的方法
  • Python進行數據提取的方法總結
  • 1分鐘快速生成用于網頁內容提取的xslt

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

巨人網絡通訊聲明:本文標題《一個用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)》,本文關鍵詞  一個,用,xslt,樣式,將,xml,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《一個用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)》相關的同類信息!
  • 本頁收集關于一個用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    在线观看国产一区二区| 激情文学综合插| 欧美日韩在线免费视频| 偷拍亚洲欧洲综合| 精品成人一区二区三区四区| 99国产欧美另类久久久精品| 午夜精品成人在线视频| 久久久99精品免费观看不卡| 一区在线观看免费| 91碰在线视频| 六月丁香婷婷色狠狠久久| 国产精品色一区二区三区| 日韩视频中午一区| 在线精品亚洲一区二区不卡| 激情成人综合网| 日韩精品午夜视频| 亚洲精品视频一区| 国产偷国产偷亚洲高清人白洁| 在线观看av一区| 91免费小视频| 日本乱人伦一区| 欧美亚洲一区二区在线| av一区二区三区四区| 成人性视频免费网站| 成人一区二区三区在线观看| 国内外成人在线| 国产美女在线精品| 国产精品一区二区x88av| 国产精品911| 国产精品 欧美精品| 精品影视av免费| 国产一区高清在线| 国产精品中文有码| 国产一区免费电影| 国产电影精品久久禁18| 东方欧美亚洲色图在线| 国产成人综合在线播放| 成人深夜视频在线观看| 在线观看一区二区精品视频| 欧美亚洲日本国产| 欧美一级艳片视频免费观看| 久久美女高清视频| 国产精品久久久久久久久果冻传媒| 中文字幕中文乱码欧美一区二区| 亚洲人精品一区| 亚洲一区二区三区视频在线播放| 亚洲大型综合色站| 国产一本一道久久香蕉| 波多野结衣在线aⅴ中文字幕不卡| 成人午夜av在线| 激情深爱一区二区| 一本到三区不卡视频| 欧美剧在线免费观看网站| 日韩精品专区在线| 国产精品国产三级国产专播品爱网 | 欧美日本免费一区二区三区| 欧美一区二区免费视频| 国产午夜亚洲精品理论片色戒 | 色综合久久中文综合久久牛| 欧美亚洲免费在线一区| 欧美成人福利视频| 中文字幕佐山爱一区二区免费| 亚洲va欧美va国产va天堂影院| 久久精品av麻豆的观看方式| 91在线观看美女| 91精品国产综合久久国产大片| 337p日本欧洲亚洲大胆精品| 亚洲裸体xxx| 乱中年女人伦av一区二区| 成人网在线播放| 久久午夜羞羞影院免费观看| 亚洲精品乱码久久久久| 久久精品国产免费看久久精品| 丁香桃色午夜亚洲一区二区三区| 在线精品视频一区二区| 久久奇米777| 五月天激情小说综合| 国产91精品露脸国语对白| 欧美精品日韩综合在线| 自拍偷在线精品自拍偷无码专区| 日本不卡一二三区黄网| 色综合久久中文综合久久牛| 久久精品这里都是精品| 香蕉加勒比综合久久| 成人97人人超碰人人99| 亚洲最色的网站| 日日嗨av一区二区三区四区| 色婷婷激情久久| 国产欧美一区二区精品性色| 精品一区二区三区的国产在线播放| 成人激情综合网站| 精品少妇一区二区三区在线播放| 亚洲人成7777| 色婷婷综合中文久久一本| 欧美激情在线看| 国产不卡视频一区二区三区| 久久久夜色精品亚洲| 蜜臀av国产精品久久久久| 欧美色图第一页| 亚洲男人都懂的| 欧美伊人久久大香线蕉综合69 | 午夜精品一区二区三区三上悠亚| 99久久免费视频.com| 欧美精品一区二区三区在线播放| 亚欧色一区w666天堂| 欧美高清视频一二三区| 亚洲电影中文字幕在线观看| 五月天视频一区| 欧美综合一区二区| 亚洲三级在线免费观看| 粉嫩绯色av一区二区在线观看| 国产欧美中文在线| 成人理论电影网| 国产精品国产三级国产aⅴ原创 | 日韩欧美一区二区免费| 三级在线观看一区二区| 6080午夜不卡| 久久国内精品自在自线400部| 91麻豆精品国产91久久久资源速度 | 蜜臀va亚洲va欧美va天堂| 精品卡一卡二卡三卡四在线| 久久国内精品自在自线400部| 久久久久高清精品| 99这里只有精品| 日韩一区在线看| 欧美色电影在线| 美国三级日本三级久久99| 91黄视频在线观看| 亚洲国产你懂的| 欧美刺激午夜性久久久久久久 | 亚洲精品视频在线观看网站| 欧美日本韩国一区二区三区视频| 日韩精品乱码免费| 国产视频一区不卡| 欧美做爰猛烈大尺度电影无法无天| 视频一区国产视频| 久久综合九色欧美综合狠狠| 色网站国产精品| 理论电影国产精品| 国产精品天美传媒沈樵| 欧美日韩情趣电影| 国产精华液一区二区三区| 亚洲黄色性网站| 久久理论电影网| 91精品国产福利| 91丨九色丨尤物| 久热成人在线视频| 天堂va蜜桃一区二区三区漫画版| 久久精品夜色噜噜亚洲aⅴ| 色网综合在线观看| 丰满亚洲少妇av| 免费在线观看一区| 国产精品国产三级国产aⅴ中文| 日韩欧美国产电影| 91网站视频在线观看| 国内精品久久久久影院薰衣草 | 91高清视频在线| 国产精品 欧美精品| 天堂一区二区在线免费观看| 亚洲天堂中文字幕| 精品久久五月天| 欧美乱妇20p| 成人免费毛片app| 成人一级片网址| 国产精品一区二区三区网站| 午夜精品久久久久久久久| 亚洲色图欧美激情| 中文无字幕一区二区三区 | 日韩视频在线一区二区| 99久久久久免费精品国产| 久久99久久精品| 亚洲成人综合网站| 亚洲免费伊人电影| 综合中文字幕亚洲| 欧美韩日一区二区三区四区| 欧美电影免费观看完整版| 欧美人与z0zoxxxx视频| 91九色02白丝porn| 色综合中文字幕| 成人免费毛片高清视频| 91精品国产综合久久福利| 色香蕉成人二区免费| 成人小视频在线观看| 美女免费视频一区| 亚洲一区在线观看网站| 裸体健美xxxx欧美裸体表演| 国产精品乱码一区二区三区软件| 精品粉嫩超白一线天av| 欧洲av在线精品| 91亚洲精品一区二区乱码| www.欧美日韩| 蜜臀久久99精品久久久久宅男| 欧美高清视频在线高清观看mv色露露十八| 经典三级一区二区| 日本色综合中文字幕| 亚洲午夜免费视频| 亚洲精品国产无套在线观| 中文字幕五月欧美| 最新国产精品久久精品| 久久久久97国产精华液好用吗|