- 浏览: 293792 次
- 性别:
- 来自: 上海
最新评论
-
alen252:
同步请求不是回执行完,再接着往下走么?不然怎么叫同步。
“可恶”的ajax 同步请求 -
c888999c:
挺好 稍微改点就能用
利用Spring MVC 上传图片文件 -
searchnomore:
不管用
使用Java匹配过滤<script>标签,不区分大小写 -
iwlk:
String str = "11<script ...
使用Java匹配过滤<script>标签,不区分大小写 -
zhmy0129:
org.apache.commons.lang.StringU ...
在后台判断参数是否为空时应当注意的一点
在HTML,JSP当中使用XML与XSL展示部分数据
需求分析:
通常项目当中有一些固化或不经常变化的内容,且这些内容通常是使用XML保存。
但在前台页面上需要使用到这些数据,而且有可能会将其中的内容做为网页的一部分用来展示给用户。通常的做法是使用JavaScript读取这个XML进行解释,然后再创建相应的HTML标签,并将内容插入相应的位置上。这种做法不但需要编写大量的JS,而且会影响页面加载速度。如果利用XML+XSL进行数据的格式转化,再利用JS动态加载XML与XSL,便可以很方便的获取所需的数据,而且调用不同的XSL,可以展示不同的格式。
所牵涉到的基本技术:
1:XML
2:XPATH
3:JavaScript
先看一个示例:
如图
这是一个使用XML+XSL生成的地区下拉列表。 整个演示所需文档如下:
一、地区信息来自XML文档 Area.xml
以上是一个地区的XML文档,其中包含了三级省市区数据,通过属性"p"来寻找上一级,如果p=0,则代表当值数据为省份(顶级) <root>
<!-- i_ID,n_名称,p_上一级ID,s_是否有下级 -->
<a i="107" n="安徽省" p="0" s="false"/>
<a i="93" n="北京市" p="0" s="false"/>
<a i="103" n="北京市" p="93" s="false"/>
<a i="77" n="长宁区" p="67" s="true"/>
<a i="105" n="朝阳区" p="103" s="false"/>
<a i="91" n="崇明县" p="67" s="true"/>
<a i="89" n="奉贤区" p="67" s="true"/>
<a i="108" n="福建省" p="0" s="false"/>
<a i="109" n="甘肃省" p="0" s="false"/>
<a i="110" n="广东省" p="0" s="false"/>
<a i="101" n="广西区" p="0" s="false"/>
<a i="111" n="贵州省" p="0" s="false"/>
<a i="112" n="海南省" p="0" s="false"/>
<a i="130" n="合肥市" p="107" s="false"/>
<a i="113" n="河北省" p="0" s="false"/>
<a i="114" n="河南省" p="0" s="false"/>
<a i="102" n="黑龙江" p="0" s="false"/>
<a i="80" n="虹口区" p="67" s="true"/>
<a i="97" n="湖北省" p="0" s="false"/>
<a i="96" n="湖南省" p="0" s="false"/>
<a i="75" n="黄浦区" p="67" s="true"/>
<a i="115" n="吉林省" p="0" s="false"/>
<a i="85" n="嘉定区" p="67" s="true"/>
<a i="116" n="江苏省" p="0" s="false"/>
<a i="117" n="江西省" p="0" s="false"/>
<a i="86" n="金山区" p="67" s="true"/>
</root> <!-- 演示数据,与图片所示有所不同-->
二、XSL文档
<?xml version="1.0" encoding="UTF-8"?>
<!--定义当前XML文档为xsl格式-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--math表示匹配当前XML所有内容,也可以指定具体的某些值,取值方式参考XPATH语法-->
<xsl:template match="/">
<!--在此可以编写HTML代码-->
<h2>地区下拉表</h2>
<div>
<div>省市:</div>
<div>
<select>
<!--读取root下所有属性p=0的a标签,进行循环-->
<xsl:for-each select="root/a[@p='0']">
<!--对于需要给HTML标签赋值时,只能使用{}来取值,
不可以使用<xsl:value-of>的形式取值。这里取的是当前标签的i属性的值,
因为是在循环里,所以每次取值都不同-->
<option value="{@i}">
<!--如果是在HTML内,或外面赋值,则只能使用<xsl:value-of>的形式取值,
这里取的是当前标签的n属性的值-->
<xsl:value-of select="@n"/>
</option>
</xsl:for-each>
</select>
</div>
</div>
</xsl:template>
</xsl:stylesheet>
三、在准备好了XML,XSL之后,剩下的事就是如何在页面上根据需要调用此XML文档来显示了,这里我们需要使用JS来加载XML与XSL并对其进行解析。由于IE与FF解析XML与XSL的方法及加载XML的方法不同,所以这里采用jquery框架进行判断,也可以自行写相关的方法以区别IE\FF的不同。
用到的两个最主要的方法
1:load(xmlPath) 所有方法都有部分代码基于jquery
//兼容大部分浏览器 读取外部XML文档返回xmlDoc对象 function load(x) { var xmlDoc; if ($.browser.msie) { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.load(x); return xmlDoc; } else if ($.browser.safari) { xmlDoc = getxml(x).responseXML; return xmlDoc; } else if ($.browser.mozilla) { xmlDoc = document.implementation.createDocument('', '', null); xmlDoc.async = false; xmlDoc.load(x); return xmlDoc; } else { xmlDoc = getxml(x).responseXML; return xmlDoc; } } //供load方法调用 function getXmlHttp() { var xmlhttp; if (window.ActiveXObject) { try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } return xmlhttp; } else if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); return xmlhttp; } return xmlhttp; } //供load方法调用 function getxml(x) { var xmlhttp = getXmlHttp(); if (xmlhttp != null) { xmlhttp.open("GET", x, false); xmlhttp.send(null); return(xmlhttp); } else { alert("对不起,您的浏览器不支持 XMLHTTP.11"); return false; } }
2:showXML() 在网页上显示XML内容,并使用相应的XSL进行解析
<!--EndFragment-->
/** * 加载XML及对应的XSL文档,直接在页面上进行显示 * @param xml XML路径 * @param xsl XML样式文件 */ function showXML(xml, xsl) { // Load XML 这里的load方法调用的是上面的laod方法 var xmlDoc = load(xml); // Load XSL var xslDoc = load(xsl); // 如果是非IE浏览器,则对解析器进行重写 if (!$.browser.msie) { Node.prototype.transformNode = function (oXslDom) { var oProcessor = new XSLTProcessor(); oProcessor.importStylesheet(oXslDom); var oResultDom = oProcessor.transformToDocument(this); var xmls = new XMLSerializer(); var sResult = xmls.serializeToString(oResultDom); if (sResult.indexOf(" <transformiix:result") > -1) { sResult = sResult.substring(sResult.indexOf(">") + 1, sResult.lastIndexOf(" <")); } return sResult; }; } document.write(xmlDoc.transformNode(xslDoc)); }
四、到此所有准备工作已完成,可以开始编写 HTML代码,当前你也可以将这此内容放入其它的页面当中如JSP\ASP
<!--EndFragment-->
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Simple jsp page</title></head> <script type="text/javascript" src="/js/serv/comm/jquery.js"></script> //这个JS包含有上面的laod等方法 <script type="text/javascript" src="/js/public/comm.js"></script> <body> <script type="text/javascript"> showXML("/x/comm/area.xml","/test/xml/area.xsl"); </script> </body> </html>
<!--EndFragment-->
<!--EndFragment-->
以下附件为整个文章涉及到的内容,但不能直接在本地打开浏览,原因是load方法不能直接读取本地文件,需要部署到项目当中。
有问题或有好的建议,欢迎大家一起探讨
<!--EndFragment--><!--EndFragment-->
<!--EndFragment-->发表评论
-
换种思路解决http与https之间的页面调用问题
2011-08-09 12:45 11161业务场景: 主页面为http协议的普通页面。 ... -
更正eclipse在Windows7下会连接其它IP时自动转为IPV6。
2010-03-22 15:20 1742在winodows7上使用eclipse时,如果项目里需要连接 ... -
当需要在XML文档中加空格时需转换成# 而不是
2009-09-23 16:12 2899将空格的代码: 转换成 即 ... -
使用JS高亮页面当中的关键字
2009-09-21 15:23 4499工作需要,自己写了个简单的高亮页面当中的关键字 /* ... -
记录一下使用xslt解析XML的几个小知识点
2009-09-11 15:47 2446<?xml version="1.0" ... -
使用Java匹配过滤<script>标签,不区分大小写
2009-07-08 16:41 6342为了过滤一些内容当中包含有JS代码,因此加了对字符的过滤设置。 ... -
解决使用response返回值为乱码的问题
2009-06-30 11:04 3184很简单的两句话: 在控制器加上如下两句: response ... -
使用jquery动态生成的标签,需要在代码当中绑定才可以实现事件的监听,!
2009-06-23 14:30 3980近日工作当中,需要对由jquery动态生成的标签添加一些事件效 ... -
JavaScript 当中的带参构造对象
2009-06-11 16:28 1286工作中需要用到封装一个JS对象,但是又想在构造这个对象的时候直 ... -
JS +XML +Jquery 实现三级联动菜单,自己封装的一个对象方便使用
2009-06-02 16:13 5277通常项目当中都会用到三级联动菜单,比如省市区的选择等现将自己封 ... -
使用JSTL标签格式化时间与货币形式
2009-06-02 13:28 4637经常要用到格式化一些时间格式或货币格式如: 2009年06月 ... -
js 判断当前链接是否为指定的网址开头
2009-04-12 22:26 1856if(document.referrer !=" w ... -
一段很短的代码可以自动提示文本框已输入多少个字符
2009-04-05 22:28 2290通常大家都有这样的需求: 一个文本输入框,限定了用户只能输入多 ... -
在使用Hibernate自动创建表时,碰到一个很奇怪的问题,记下来给碰到同样问题朋友一个解决方案!
2009-03-13 14:37 1504说来挺奇怪,在同样的环境下,可以创建任何一张新的表,但就是有一 ... -
在安装启动GlassFishV2时碰到的一个小问题!
2009-02-26 19:33 2219从sun网上下载了一个GlassFishV2的安装 jar包, ... -
图文并茂讲解在VM下如何使用ubuntu系统进行java的开发
2009-02-17 15:26 5237首先安装vm软件,下载ubuntu系统。 我这里下载的vm是 ... -
自己用javascript写了一些代码,用来批量下载“绝影”博客上《疯狂的程序员》文章
2008-12-12 12:53 2619近日,在拜读了“绝影”博客上《疯狂的程序员》连载文章后,感触颇 ... -
看到一个不错的东东:获取各种常用时间java
2008-12-04 18:53 1574以下内容转载自论坛某位同志的文章,觉得以后可能用得上,所以就 ... -
一种比较实用的方法用来测试某个方法运行所消耗的时间
2008-12-03 15:26 1429这是一个比较实用的小技巧,平时我们在写代码的时候需要测试某个方 ... -
使用JavaScript比较用户输入的内容大小
2008-11-25 17:34 2548工作中碰到这样一个问题:在页面上有一个输入框供用户输入,当用户 ...
相关推荐
在Web开发领域,XSL与XML和JSP的结合使用,能够实现动态数据的高效处理和展现。 XML(Extensible Markup Language)是一种标记语言,用于存储和传输结构化数据。它的设计目标是传输和存储数据,而非显示数据。XML...
XSLT(XSL Transformations)是XSL的一部分,可以将XML数据转换成其他格式,如HTML、PDF等。 接下来,我们将详细讲解创建树形目录的步骤: **步骤1:定义XML数据** 首先,我们需要创建一个XML文件来存储树形目录的...
Data Island是一种技术,允许XML数据与JavaScript结合在Web页面中使用,增强了动态交互性。 XML文档的注释使用`<!-- -->`语法,例如在`9-04.xml`中,注释被用来解释文档的部分内容。此外,XML支持字符和实体引用,...
通过这种方式,我们可以利用JSP、XML和XSLT将结构化的XML数据转化为用户友好的HTML格式,从而在Web应用程序中展示。这种技术在处理复杂的数据结构和自定义布局时非常有用,因为它允许我们分离数据和表现层,遵循了...
总结来说,JSP和XML的结合使得开发者可以在JSP页面中处理和展示XML数据,同时利用XML的结构化特性进行数据的组织和交换。这种组合在构建动态、数据驱动的Web应用时非常有用,尤其在需要与Web服务交互或处理结构化...
总的来说,JSP+XML架构网站的实例展示了如何利用XML进行数据标准化,动态生成XML文档,并通过XSL进行数据转换,以实现灵活且高效的网页呈现。这种技术组合在处理复杂数据和构建可扩展的Web应用程序时具有显著优势。
上面的代码展示了如何使用自定义标签库中的`<JAXP:transform>`标签,通过指定的XML文档和XSL样式表进行数据转换并输出结果。 通过JSP与XML的结合,开发者能够构建更复杂、可扩展的Web应用,同时保持代码的清晰性...
XSLT与XSL紧密相关,后者包括XSLT和XPath(XML Path Language),XPath用于在XML文档中查找数据。 在JSP中集成XSLT,首先需要将xsl标识库jar包引入到项目的类路径中。这个jar包可能包含了如SAX(Simple API for XML...
XSL是一种用于转换XML文档的语言,它允许开发者定义一套规则,将源XML数据转换为另一种格式,比如HTML、PDF,甚至是SVG。这种方式实现了数据与表现的完全分离,使内容的管理更加灵活,同时保证了数据的结构清晰,...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
XSL(Extensible Stylesheet Language)是一种用于转换XML文档格式的语言,而XSLT(XSL Transformations)是XSL的一部分,用于将XML数据转换成其他形式,如HTML、PDF或文本。Jakarta Taglibs XSL 1.0.1库则为JSP...
【XML语法的JSP文件】和【JSP】的相关知识点主要涵盖了如何在JSP中使用XML格式来编写页面,以及与XML处理相关的技术,如JAXP、DOM、SAX和XSLT,以及JSTL的XML处理标签库。以下是对这些知识点的详细解释: 1. **JSP ...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
6. **XSLT转换**:如果论坛使用XML存储数据,XSLT(XSL Transformations)可以用来转换XML数据为HTML,以便在网页上展示。这提供了数据和视图的分离,使得界面设计更加灵活。 7. **安全性考虑**:在使用JSP和XML时...
- **XML与数据库**:XML可以与数据库进行交互,例如使用XSLT(XSL Transformations)转换XML数据,或者通过XPath(XML Path Language)查询XML文档中的特定节点。此外,某些数据库如Oracle支持XML类型的列,可以直接...
3. **XML与JSP结合:** 在JSP中,XML数据可以被解析并展示在页面上,或者通过JSTL的`<c:forEach>`和`<xsl:transform>`标签进行处理。XSLT(Extensible Stylesheet Language Transformations)用于转换XML文档,将XML...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
在这个名为"XML.rar_基于xml"的压缩包中,包含了多个与教室管理相关的文件,它们可能是一个简单的教务管理系统的一部分。让我们逐一解析这些文件: 1. Rmjg.jsp:这可能是“教室管理”(Room Management)的Java...
本系统利用JSP开发环境 tomcat 6.0 测试 其中查询部分均利用了XML转换 XSL显示, 数据库利用sql 2003 功能包括 数据添加 修改 删除 以及查询,适合初学JSP 和 XML的初学者。