欧美三区四区_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
復制代碼 代碼如下:www.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
復制代碼 代碼如下:www.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這個方法,所以我們自己構造了一個方法,
復制代碼 代碼如下:www.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教程
久久亚洲a v| 日韩午夜精品电影| 欧美性在线视频| 中文字幕乱码人妻综合二区三区| 羞羞影院体验区| 欧美一区二区三| 国产精品久久久久久妇女6080| 日韩在线观看网址| 少妇久久久久久被弄到高潮| 日本一级一片免费视频| 国产一区二区三区91| 中文字幕一区不卡| 欧美亚洲国产成人精品| 日韩av卡一卡二| 亚洲国产精品成人久久蜜臀| 久久久久久色| 欧美一级二级在线观看| 欧美一级二级三级九九九| 蜜桃视频最新网址| 天堂网av成人| 亚洲精品成人少妇| 日韩美女在线看| 亚洲av午夜精品一区二区三区| 天堂中文在线看| 精品中文字幕一区二区小辣椒| 精品久久免费看| 亚洲 国产 欧美一区| 国产精品成人免费观看| 欧美丝袜激情| 欧美日韩国产页| 亚洲一区二区三区sesese| 泷泽萝拉在线播放| 亚洲不卡在线| 日韩一区有码在线| 日韩av手机在线看| 亚洲天堂美女视频| 狂野欧美xxxx韩国少妇| 国产欧美综合在线观看第十页 | 一级片一区二区三区| 99av国产精品欲麻豆| 91麻豆精品国产| 亚洲精品国产精品国自产观看| 国产第一页第二页| 欧美 亚欧 日韩视频在线 | 精品久久人人做人人爱| 日韩久久精品一区| 果冻天美麻豆一区二区国产| 人妻精品无码一区二区三区| 午夜诱惑痒痒网| 天堂久久午夜av| 99久久久国产精品| 欧美黑人巨大xxx极品| 亚洲综合婷婷久久| 精品美女一区| 国产精品你懂的在线欣赏| 久久久久久久久久久黄色 | 国产麻豆视频一区| 最近2019中文免费高清视频观看www99| 人妻少妇精品无码专区二区| hs视频在线观看| 国产乱国产乱300精品| 色悠悠久久久久| 波多结衣在线观看| 国产精品天堂蜜av在线播放 | 亚洲人永久免费| 国产乱子伦农村叉叉叉| 免费观看国产精品| 99精品视频一区二区三区| 亚州成人av在线| 国产白嫩美女无套久久| 西野翔中文久久精品国产| 日韩欧美在线视频日韩欧美在线视频| 韩国成人一区| 日本特级黄色片| 日本视频一区二区三区| 中文字幕欧美在线| 午夜影院免费观看视频| 亚洲国产视频二区| 午夜激情综合网| 精品久久一区二区三区蜜桃| 久草国产精品视频| 久久亚洲欧美| 中文字幕自拍vr一区二区三区| 2025韩国理伦片在线观看| 国产精品777777在线播放| 樱花草国产18久久久久| 国产一区免费在线| 无码人妻丰满熟妇区bbbbxxxx| 青青草一区二区三区| 中文字幕日韩精品在线观看| 久久精品一卡二卡| 黄色网一区二区| 在线欧美日韩国产| 青春草在线视频免费观看| 动漫av一区二区三区| 久久在线观看免费| 成人精品福利视频| 国产一级在线播放| 日本伊人午夜精品| 精品中文字幕乱| 亚洲永久无码7777kkk| 欧美成人精品一区二区三区在线看| 欧美一区二区三区系列电影| 人妻久久久一区二区三区| 九九九伊在线综合永久| 亚洲综合一区二区三区| 欧美亚州在线观看| 国产aⅴ爽av久久久久成人| 26uuu成人网一区二区三区| 国产精品自拍偷拍| 亚洲一区欧美在线| 韩国女主播成人在线观看| 97成人超碰免| 黄色精品视频在线观看| 国产日韩一区二区三区在线| 日韩性生活视频| 噜噜噜在线视频| 日韩激情在线| 亚洲免费视频在线观看| 潘金莲一级淫片aaaaa| 欧美亚洲高清| 亚洲精品视频播放| 国产精久久久久| 91青青国产在线观看精品| 日韩av在线电影网| 制服.丝袜.亚洲.中文.综合懂| av伊人久久| 亚洲精品99999| 特黄特黄一级片| 国产精品99久久| 亚洲日韩中文字幕| 色婷婷精品久久二区二区密| 国产精品v一区二区三区| 中文字幕欧美日韩| 蜜桃无码一区二区三区| 一本色道久久综合| 久久久久久91| 欧美人妻一区二区| 国产麻豆视频一区| 亚洲一区二区三区xxx视频| 最新黄色网址在线观看| 国产香蕉久久精品综合网| 国产一区二区三区高清| av综合在线观看| 亚洲视频一区在线观看| 亚洲人成77777| av亚洲一区| 欧美亚洲图片小说| 一区二区三区网址| 欧美综合一区| 这里只有精品视频在线| 亚洲国产av一区| 日韩在线播放一区二区| 国产成人福利网站| 久久久黄色大片| 国产日韩欧美精品一区| 欧美日韩视频在线一区二区观看视频| 亚州男人的天堂| 欧美日韩亚洲高清| 可以免费观看av毛片| 国产精品免费大片| 中文字幕欧美亚洲| 欧美一区免费观看| 国产精品一级在线| 国产日韩一区二区三区| 日本黄色大片视频| 色综合天天综合狠狠| 黄色一级免费大片| 久久要要av| 久99久在线视频| 国产黄色片视频| 久久综合色天天久久综合图片| 欧美一区免费视频| 天堂久久一区| 欧美成人性战久久| 人妻丰满熟妇av无码久久洗澡 | 6080国产精品一区二区| 久久精品免费在线观看| 日韩高清在线观看| 欧美精品一区二区三区在线播放| 日本55丰满熟妇厨房伦| 亚洲图片在线| 日本久久久久亚洲中字幕| 久草精品在线播放| 日本高清免费观看| 91精品国产乱码久久久久久| 精品国产一区二区三区四区在线观看| 四虎影视1304t| 国产一区二区在线观看视频| 国产精品播放| 成人免费福利| 欧美一区二区视频免费观看| 俄罗斯黄色录像| 日日夜夜精品视频免费| 国产精品日日摸夜夜添夜夜av| 97人妻人人澡人人爽人人精品 | 国产欧美日韩另类| 国产欧美日韩在线视频| 免费成人深夜夜行网站视频| 欧美一级色片| 久久久999国产| 黄色片网站在线免费观看| 国产精品电影一区二区三区| 国产免费一区二区视频| 国产精品一区二区三区av麻| 亚洲精品a级片| 成久久久网站| 免费电影一区二区三区| 亚洲午夜电影在线观看| 一区二区欧美激情| 国产日韩三区| 色8久久影院午夜场| 9191久久久久久久久久久| 日本护士做爰视频| 国产一区在线观看麻豆| 56国语精品自产拍在线观看| 中文字幕无码精品亚洲资源网久久| 亚洲图区在线| 久久成年人视频| 姑娘第5集在线观看免费好剧| 亚洲尤物视频在线| 九九热免费在线观看| 天堂va蜜桃一区二区三区| 国产精品毛片一区视频| 亚洲欧美一级| 在线播放日韩欧美| 欧美一二三区视频| 一区二区三区.www| 91欧美视频在线| 久久国产精品亚洲77777| 99精品国产高清一区二区| 日本成人一区二区| 亚洲人精品午夜在线观看| 国产午夜福利一区二区| 亚洲激情五月婷婷| 亚洲欧美偷拍另类| 日韩精品高清不卡| 久久久久欧美| 香蕉视频一区| 57pao成人永久免费视频| 刘亦菲毛片一区二区三区| 欧美一区二区三区四区在线观看| 亚洲自拍偷拍图| 久久精品在线免费观看| 大陆极品少妇内射aaaaa| 亚洲黄页一区| 国产日韩欧美亚洲一区| 加勒比视频一区| 久久久久久久久久久国产| а√天堂资源在线| 日韩视频免费观看高清完整版在线观看 | 亚洲第一天堂av| 久久综合色综合| 一区二区三区高清不卡| 红桃视频一区二区三区免费| 国产在线精品免费| 国产精品jizz在线观看老狼| 欧美成免费一区二区视频| 国产精品天天狠天天看| 成人毛片免费| 播播国产欧美激情| aaa一区二区| 亚洲大胆人体视频| 日日骚av一区二区| 91成人网在线| 永久免费看片视频教学| 自拍偷拍亚洲欧美日韩| 成年人性生活视频| av在线这里只有精品| 欧美变态另类刺激| 青青草国产成人av片免费| 中文字幕99| 国产精品a久久久久| 国产日韩精品推荐| 国产一区2区| 成人av电影天堂| 国产一区福利| 欧美做受高潮电影o| 视频91a欧美| 色综合男人天堂| 国产88在线观看入口| 亚洲人成啪啪网站| 国产美女主播在线观看| 亚洲成人黄色在线观看| 免费看日批视频| 欧美精品777| 国产亚洲精品久久久久久无几年桃| 欧美日韩国产精品一区二区三区四区| japanese中文字幕| 一区二区三区四区在线播放 | 欧美成人综合色| 欧美日韩午夜剧场| 午夜精品久久久久99蜜桃最新版| 夜夜揉揉日日人人青青一国产精品| 加勒比精品视频| 国产精品国产三级国产普通话三级| 熟妇女人妻丰满少妇中文字幕| 99re热视频精品| 性生生活大片免费看视频| av中文字幕一区| 国产乱码一区二区三区四区| 欧美精品aa| 日日狠狠久久偷偷四色综合免费 | 亚洲成人精品视频| 日韩欧美国产另类| 精品国产露脸精彩对白| 香蕉污视频在线观看| 日韩一区二区精品| 无码视频在线观看| 亚洲国产精品yw在线观看 | 国产最新精品精品你懂的| 国产91xxx| 国产毛片精品视频| 日日摸天天爽天天爽视频| 懂色av噜噜一区二区三区av| 8x8x最新地址| 91视视频在线观看入口直接观看www | 久久久久久久蜜桃| 欧美日本韩国一区二区三区视频| 亚欧视频在线观看| 欧美精品一区二区三区在线| 一卡二卡在线观看| 亚洲一级黄色片| 亚洲aⅴ在线观看| 欧美激情国内偷拍| 国产精品一区二区三区四区在线观看| 日本久久中文字幕| 欧美综合精品| 风间由美久久久| 综合精品久久| 一区二区视频在线播放| 毛片不卡一区二区| 成人一区二区三| 91视频在线看| 国产黄色三级网站| 五月天国产精品| 懂色av.com| 欧美精品一区二区三区视频| 99国产精品久久久久99打野战| 中文字幕精品一区久久久久| 黄瓜视频成人app免费| 欧美在线免费观看| 日韩精品福利一区二区三区| 国产日韩久久| 亚洲精品资源| 91视频 -- 69xx| 91丨porny丨最新| 在线观看日韩精品视频| 午夜电影网亚洲视频| 日本少妇做爰全过程毛片| 亚洲精品99久久久久| 婷婷在线观看视频| 欧洲中文字幕国产精品| 国产一区二区精品久| 视频一区二区在线| 麻豆视频观看网址久久| jizz欧美性11| 椎名由奈av一区二区三区| 国产精品白丝喷水在线观看| 8v天堂国产在线一区二区| 国产又粗又猛又色又| 久久99久久久久久久噜噜| 国产精品白浆| 韩日午夜在线资源一区二区| 蜜桃视频一区| 手机看片福利日韩| 成人欧美一区二区三区| 精品自拍偷拍视频| 亚洲观看高清完整版在线观看| 日韩av电影免费观看高清| 欧美成人黑人| 国产99久久精品一区二区 夜夜躁日日躁 | 亚洲日本电影在线| 欧美日韩色视频| 亚洲大胆人体av| 性感美女一区二区在线观看| 国产精品久久77777| 2023国产精品久久久精品双 | 肉色丝袜一区二区| 手机av在线免费| 亚洲国产一二三| 国产成人精品777777| 中文字幕视频在线免费欧美日韩综合在线看 | 成人无码www在线看免费| 色呦呦日韩精品| 91久久精品无码一区二区| 久久久久在线观看| 欧美亚洲国产精品久久| 男人日女人的bb| 国产亲近乱来精品视频 | 日本三级一区二区三区| 久久久精品国产一区二区| 国产乱人伦丫前精品视频| 日本免费高清不卡| 国产精品正在播放| 蜜桃av免费看| 精品奇米国产一区二区三区| 在线一区视频观看| 国产98在线|日韩| 蜜臀av一区二区|