XML系列:xsl与xml组织数据
来源:互联网 发布:浪潮软件工资待遇 2016 编辑:程序博客网 时间:2024/06/08 07:01
到w3c看一下,xml的家族的确有点庞大,包括xml,xsl,xpath等等,http://www.w3school.com.cn/x.asp
其中,xml+xsl的组合为我们很好的将模板与数据分离。
下面是一段js解析xsl与xml生成html的代码:
1 // 由于我们在移动平台上用,所以不兼容 ie 2 3 // 使用方法 4 $(function() { 5 //$('#xsl').xslt("data.xml", "view.xsl"); 6 }); 7 8 // xslt transform 9 $.fn.xslt = function(xml , xsl){10 var target = $(this);11 // Mozilla 0.9.4+, Opera 9+12 var xmlContent = xmlFromFile(xml);13 var xslContent = xmlFromFile(xsl);14 var html = xslTransform(xmlContent,xslContent);15 target.empty().append(html);16 }17 18 19 function xslTransform(xml , xslt)20 {21 22 var html = "" ;23 try {24 if (window.DOMParser != undefined && window.XMLHttpRequest != undefined && window.XSLTProcessor != undefined) {25 //// Load XML 26 var xmlDoc = new DOMParser().parseFromString(xml, "text/xml");27 //// Load XSL28 var processor = new XSLTProcessor();29 processor.importStylesheet(xslt);30 31 // Transform32 resultDocument = processor.transformToFragment(xml, document);33 if (document.implementation && document.implementation.createDocument) {34 html = new XMLSerializer().serializeToString( resultDocument ) ;35 }36 }37 } catch (exception) {38 if (typeof (exception) == "object") {39 if (exception.message) {40 alert(exception.message);41 }42 } else {43 alert(exception);44 }45 }46 //打印错误信息47 var errorMsg = null;48 if (xmlDoc.parseError && xmlDoc.parseError.errorCode != 0) {49 errorMsg = "XML Parsing Error: " + xmlDoc.parseError.reason50 + " at line " + xmlDoc.parseError.line51 + " at position " + xmlDoc.parseError.linepos;52 }53 else {54 if (xmlDoc.documentElement) {55 if (xmlDoc.documentElement.nodeName == "parsererror") {56 errorMsg = xmlDoc.documentElement.childNodes[0].nodeValue;57 }58 }59 else {60 errorMsg = "XML Parsing Error!";61 }62 }63 64 if (errorMsg) {65 //alert (errorMsg);66 }67 return html ; 68 }69 // 上面直接用 processor.transformToFragment 无法加载 xml文件, 我们需要用 XHR 先读进来 70 // 这里通过 XHR 来获取 xml 内容 71 function xmlFromFile(file)72 {73 var xmlDoc = null ; 74 try75 {76 if (document.implementation && document.implementation.createDocument){77 var xmlhttp = new window.XMLHttpRequest();78 xmlhttp.open("GET",file,false);79 xmlhttp.send(null);80 // 返回 document树, 可以用document.getElementsByTagName()等方法81 xmlDoc = xmlhttp.responseXML ;82 }83 else84 {85 xmlDoc = null ; 86 }87 }88 catch(e)89 {90 error=e.message;91 }92 return xmlDoc;93 }
还有xsl里面可以使用很多xpath的变量,条件判断等等,这让我们可以直接在xsl里面查询得到我们需要的数据。
xpath将在下一篇文章介绍...
- XML系列:xsl与xml组织数据
- XML与XSL
- Xml与xsl连接
- xml与xsl
- XML (5) xsl:variable 与 xsl:param
- xml 与 xsl 显示图片
- xsl与xml的初次见面
- xml与xsl的转换
- xsl与xml转换示例
- xml与xsl的转换
- XML: XSL
- XSL-XML
- XML和XSL生成类PowerPoint组织结构图(一)
- XML和XSL生成类PowerPoint组织结构图(二)
- XML和XSL生成类PowerPoint组织结构图
- XML和XSL生成类PowerPoint组织结构图
- 如何实现XML+XSL+javascript数据分页
- 如何实现XML+XSL+javascript数据排序
- Gitweb增加增量更新功能
- Jquery ajax
- 搭建一个全栈式的HTML5移动应用框架
- backbone.js入门
- xcode自动打包
- XML系列:xsl与xml组织数据
- 移动平台使用的支持触屏操作的Sliders
- NSMutableArray的一些知识
- ssh无密码连接基本知识
- nginx服务器的配置
- centos6.4+nginx+mysql+php+phpmyadmin整合过程
- yum改成网易的源
- org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException异常处理
- Oracle Architecture Components