`
安之若素
  • 浏览: 144830 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

异步加载封装结果为xml数据,xsl文件解析xml数据显示在指定的div中

    博客分类:
  • xml
阅读更多

各层的内容通过异步得到xml数据,并对每个模块用一个xsl文件解析,将解析结果放入指定层
这里只显示主要的代码

 

 

1> jsp页面上定义层的id, 并在form中指定需要异步加载数据的js方法

<form action="javascript:showAllXML();"> //调用异步加载数据的js方法
<div id="swgl"> //页面上显示数据的层
</form>

 

 

2> js文件里的方法

//各个层的全局变量:
var lgwgl_swgl = document.getElementById("swgl");

//进行异步调用的函数
function doAjax(url,doNext,isXML){
	var req = newXMLHttpRequest();
	//回调
	req.onreadystatechange = getReadyStateHandler(req, doNext,isXML);
	req.open("GET", url, true);
	//不要被缓存
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.setRequestHeader("If-Modified-Since","0");
	req.send();
}


//显示所有模块内容(入口函数,在index.jsp中调用该函数)
function showAllXML(){
	//异步调用得到xml数据并解析
	doAjax(basePath+"/action/fileListAction.do?method=getPageList",showGwgl,1);
	//showGwgl:被调用的函数名。
}

//异步得到xml后进行解析并将解析结果放入指定层的各个函数
function showGwgl(xmlNode){
	var myxsl = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
	myxsl.async = false;
	myxsl.load(basePath+"/xsl/rssGw.xsl");  //指定解析的xsl文件为:rssGw.xsl
	lgwgl_swgl.innerHTML = unescape(xmlNode.transformNode(myxsl)); //指定解析结果显示在lgwgl_swgl层
}

 

 

 

3> 控制层。被js中的doAjax调用的fileListAction中的getPageList方法。

public ActionForward getPageList(ActionMapping mapping,
			ActionForm form, HttpServletRequest req, HttpServletResponse resp) {
	List infoList = baseDAO.getList();//从持久层获取数据
	Xml xml = new Xml();
	// 调用toXml_dbgz方法,将结果封装为xml文件
	String strXml = xml.toXml_dbgz(infoList);
	resp.setContentType("text/xml;charset=GBK");
	resp.getWriter().write(strXml);
	
	return null;
}


//封装结果为xml文件的方法
public String toXml_dbgz(List infoList){
		StringBuffer xml = new StringBuffer();
	        xml.append("<?xml version=\"1.0\" encoding=\"GBK\"?>\n");
	        xml.append("<channel>\n");
		    if(infoList!=null){
	    		long wfId = 0;//工作流ID
	    		long bus_Id = 0;//收文ID
	    		String title = "";//标题
	    		ZybFilesForList file = null;
		    	for(int i=0;i<infoList.size();i++){
		    		xml.append("<item>\n");
		    		file= (ZybFilesForList)infoList.get(i);
		    		wfId = file.getEntryId().longValue();//工作流id
		    		bus_Id = file.getBus_Id();//收文id
		    		title = file.getTitle();//标题

		            if(WorkFlowTools.checkString(title))
		            	xml.append("<title>"+toGeneralXmlStr(title)+"</title>\n");
		            else
		            	xml.append("<title>无标题</title>\n");	 
		            xml.append("<acceptDate>"+DateTools.getDaySimple(file.acceptDate)+"</acceptDate>\n");	
		            xml.append("<titleLink>view("+wfId+","+bus_Id+")</titleLink>\n"); //定义一个链接,view为js方法名,wfId和bus_Id为参数
		            xml.append("<tableName>"+file.getTableName()+"</tableName>\n");
		            xml.append("<workType>"+file.getWorkType()+"</workType>\n");
		            xml.append("<workLink>viewInWF("+wfId+","+bus_Id+")</workLink>\n");
		            xml.append("</item>\n");
			}
		   }else{
			.....
		   }

}

 

 

 

 

4> xsl文件。js的showGwgl方法中指定的解析文件:rssGw.xsl

<?xml version="1.0" encoding="gbk"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/channel">
 	  <dl>
		  <xsl:for-each select="item">
		  	<dd>
		  	<xsl:if test="title!=''">
		  		<xsl:if test="tableName='szs_sw'"><!-- 收文 -->
					<img src="/myDoSZS/images/firstpage/ico_b.gif" alt="收文" />
				</xsl:if>
				<xsl:if test="tableName='szs_fw'"><!-- 发文 -->
					<img src="/myDoSZS/images/firstpage/ico_y.gif" alt="正式发文" />
				</xsl:if>
				<xsl:if test="tableName='szs_qb'"><!-- 签报 -->
					<img src="/myDoSZS/images/firstpage/ico_g.gif" alt="其他发文" />
				</xsl:if>
			</xsl:if>
			 <a href="javascript:{titleLink}" title='{title}'>
				<xsl:value-of select="title"/>
			</a>
			</dd>
			<dt>
			<xsl:value-of select="acceptDate"/>
		
			<xsl:text>&#160;&#160;&#160;</xsl:text> <!-- &#160;显示为空格 -->
			<xsl:if test="workType='0'"><!-- 签收 -->
				<a href="javascript:{workLink}">
					<xsl:text>签收</xsl:text>
				</a>
			</xsl:if>
			<xsl:if test="workType='1'"><!-- 编辑  -->
				<a href="javascript:{workLink}">
					<xsl:text>编辑</xsl:text>
				</a>
			</xsl:if>
			</dt>
			
			
			
		  </xsl:for-each>
	  </dl>
 </xsl:template>
</xsl:stylesheet>

 

 

分享到:
评论
1 楼 cuisuqiang 2012-05-24  
挺不错的,值得学习!

相关推荐

    XML与CSS、XML与XSL及在页面中直接调用XML的数据

    例如,我们可以为上述XML中的`book`元素定义样式: ```css book { font-family: Arial, sans-serif; color: #333; } author { font-weight: bold; } ``` 这样,`book`元素内的文本将以Arial字体和深灰色...

    纯html标签静态调用xml文件及xsl对xml文件的的显示修饰

    在这个例子中,`&lt;object&gt;`标签的`type`属性指定了数据类型为XML,`data`属性则指定了XML文件的位置(aa.xml)。如果XML文件无法加载,内嵌的HTML段落(`&lt;p&gt;`)将作为备选内容显示。 接下来,我们来看看XSL如何修饰...

    XML转换XSL工具

    转换过程中,工具会解析XML文档,应用XSL规则,并生成新的输出文件。 3. **实时预览**:高级的XML转换XSL工具还提供实时预览功能,用户可以在转换过程中直观地看到结果。这有助于用户在转换前验证样式表是否按预期...

    javaxml,xsl,html文件转换[定义].pdf

    例如,parseXmlResource 方法用于解析 XML 文件,returnXml 方法用于将 XML 文件转换为字符串。 ```java public String parseXmlResource(String xmlFileName, String encoding) throws Exception { // 实现从 XML...

    xml根据xsl转换

    这个程序会将名为"input.xml"的XML文件按照"style.xsl"中的样式规则转换,并将结果保存到"output.xml"。实际应用中,你可能需要根据实际情况调整输入文件路径和输出文件路径。 总结来说,XML和XSLT是处理结构化数据...

    javaxml,xsl,html文件转换.pdf

    在 Java 中,我们可以使用 javax.xml.parsers.DocumentBuilderFactory 和 javax.xml.transform.TransformerFactory 来实现 XML 文件的解析和转换。DocumentBuilderFactory 用于创建一个 DocumentBuilder 对象,该...

    网页XSL基础教程,支持XML和XSL

    XSL不仅仅是为了在浏览器中显示XML数据而设计的。它还被广泛应用于以下场景: - **服务器端的数据转换**:XSL可以用来在服务器端将XML数据转换为各种格式,如HTML、PDF等。 - **面向未来的浏览器**:随着技术的发展...

    xsl解析xml生成表格,表格行动态隐藏与显示

    在“xsl解析xml生成表格”这一场景中,我们需要创建一个XSL文件(如test.xsl),在其中编写XSLT指令,将XML数据转换成HTML表格。例如,我们可以使用`&lt;xsl:for-each&gt;`循环遍历XML文档中的元素,然后使用`&lt;table&gt;`, `...

    XML+XSL/FO生成PDF文件Demo

    在提供的压缩包文件“Fop2Pdf”中,可能包含了XML数据文件、XSLT转换样式表、FOP的配置文件或者示例代码,帮助用户了解并实践XML到PDF的转换过程。通过研究这些文件,你可以学习如何设置XML结构,编写XSLT转换规则,...

    xml+xsl

    在浏览器中,当一个XML文档与相应的XSL样式表一起加载时,浏览器会根据XSLT规则解析XML,并生成新的HTML,从而实现动态的、富于表现力的页面效果。 **源码与工具** 在标签中提到的“源码”可能指的是XML和XSLT的源...

    xml与xsl的小实例

    XML(Extensible Markup Language)和XSL(eXtensible Stylesheet Language)是Web开发中的两种重要技术,它们主要用于数据的结构化表示和格式化显示。在这个“xml与xsl的小实例”中,我们将探讨这两种语言的基础...

    xml和xsl生成html页面

    在这个XSL样式表中,我们定义了一个模板,匹配XML文档的根元素,并使用`xsl:value-of`选择器提取XML中的数据,将其嵌入到HTML结构中。 在实际应用中,我们可以使用XML解析器(如Java的DOM或SAX解析器)读取XML文档...

    XML+xsl讲XML文档的内容用xsl建表

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它以其结构化、自解释性和可扩展性而被广泛应用于Web应用程序、数据交换、配置文件等多个领域。XML文档通常包含元素、属性、文本节点等结构...

    xml xsl网页生成

    在“xml xsl网页生成”这个主题中,我们主要关注如何利用XML和XSL将结构化的XML数据转化为用户友好的网页。以下是一些关于这个主题的关键知识点: 1. XML基础知识: - **语法**:XML文档遵循严格的语法规则,包括...

    简单的xml与xsl实例

    XML(Extensible Markup Language)和XSL(eXtensible Stylesheet Language)是Web开发中的两种重要技术,它们主要用于数据的存储和呈现。XML是一种标记语言,用于结构化地描述数据,而XSL则用于转换XML文档的结构,...

    XML TO XSL

    标题“XML TO XSL”和描述“xml convert to excel plugin”揭示了本次讨论的核心主题,即如何将XML(可扩展标记语言)数据转换为XLS(Excel电子表格)格式。XML是一种用于存储和传输结构化数据的语言,而XSL(可扩展...

    ajax以及xml@xsl两种分页

    在网页开发中,为了提高用户体验,分页是一种常见的数据加载方式。它允许用户逐步加载大量数据,而不是一次性加载所有内容,从而节省了网络带宽,加快了页面响应速度。本篇将详细介绍两种无刷新分页技术:AJAX分页和...

    使用JavaScript+XML+XSL创建树形目录

    这个XSL模板会将XML中的`folder`元素转换为`&lt;ul&gt;&lt;li&gt;`结构,而`file`元素则转换为链接`&lt;a&gt;`。 **步骤3:使用JavaScript处理数据** 在HTML页面中,我们可以使用JavaScript来加载XML和XSL文件,然后应用XSL转换得到...

    java XSL解析器

    4. **加载XML源**:同样,你需要将要转换的XML文档加载为`Source`对象,可以使用`StreamSource`、`DOMSource`或其他类型的`Source`,取决于XML数据的来源。 5. **执行转换**:最后,调用`Transformer`的`transform...

    xml和xsl的练习例子

    在XML和XSL的实践中,我们通常会创建一个XML文件来存储数据,然后编写一个XSL样式表来定义数据如何被呈现。XSLT的转换过程可以非常复杂,包括元素的复制、选择、排序、条件判断以及模板匹配等操作。例如,可以使用...

Global site tag (gtag.js) - Google Analytics