使用xslt
来源:互联网 发布:page.class.php array 编辑:程序博客网 时间:2024/05/21 03:19
原来作页面展现的时候,通过使用list标签来排版保存在Scope中的数据对象,这种方法虽然也简洁、符合编程习惯,唯一的不好处就是存在一个model。最近在一个门户网站的实施的过程中,用到了别的系统WebService数据,正好他们的返回数据是xml格式的String。而对方的model我们是无法控制的、客户最终要展现哪些model的属性也尚未确定。于是在别人的提醒下,想到了XSLT能够直接将数据展现出来,中间免去了解析xml和建立model的麻烦,而且不用调出原来的list标签,以免给人留下话资。。。
闲话少说,描述下使用的过程:
1、CXF接受第三方系统的数据(XML),此时需要建立一个与第三方系统方法一样的Proxy接口。省略
2、新建xsl展现模板
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table width="100%" cellpadding="3" cellspacing="1">
<colgroup>
<col width="400"/><col width="250"/><col width="320"/><col width="80"/>
</colgroup>
<xsl:for-each select="root/productlist/product">
<tr>
<td class="product-list-content"> <xsl:value-of select="productName" /> </td>
<td class="product-list-content"> <xsl:value-of select="prodTypeName" /> </td>
<td class="product-list-content"> <xsl:value-of select="insurerName" /> </td>
<td>
<a target="_blank">
<xsl:attribute name="href">/wps/myportal/fanhua/chanpinyufuwu/productmarket/detail?productId=<xsl:value-of select="productId"/></xsl:attribute>查看
</a>
</td>
</tr>
</xsl:for-each>
</table>
<script language="javascript">var totalPages = <xsl:value-of select="root/pageCount"/></script>
</xsl:template>
</xsl:stylesheet>
3、使用jaxp来转换xml,
public static String parseHtmlCode(String xmlContent, String xsl){
StringWriter writer = new StringWriter();
StringReader reader = new StringReader(xmlContent);
StreamSource style = new StreamSource(
XmlTransfer.class.getClassLoader().getResourceAsStream(xsl) );
String verstr = "<?xml version=/"1.0/" encoding=/""+XML_ENCODING+"/"?>";
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer(style);
transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, XML_ENCODING);
transformer.transform(new StreamSource(reader), new StreamResult(writer));
String htmlCode = writer.toString();
if (htmlCode.startsWith(verstr)){
htmlCode = htmlCode.substring(verstr.length());
}
writer.close();
reader.close();
return htmlCode;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
writer = null;
reader = null;
}
}
附录:如果是IE下,也就不用第三步,可以直接将xml字符串保存为一个文件,在<?xml ?>行下添加下面这句就可以直接显示:
<?xml-stylesheet type="text/xsl" href="productList.xsl"?>
- 使用xslt
- 使用 XSLT 显示 XML
- 使用 XSLT 显示 XML
- 使用 XSLT 显示 XML
- XSLT使用实例
- 使用TestNG-xslt
- 使用 XSLT 显示 XML
- 使用 XSLT 显示 XML
- 使用 XSLT 转换 DocBook 文档
- 使用VS.NET调试XSLT
- 使用VS.NET调试XSLT
- C#使用xslt转换xml
- 使用TestNG-xslt美化测试报告
- 使用TestNG-xslt美化测试报告
- 15.使用 XSLT 显示 XML
- XSLT
- XSLT
- XSLT
- 4 套在线翻译 Web API
- J2SE试题笔记一 总结了一些容易被忽略的地方
- 判断能力和做事的精神
- SQL 构造时间表方法123
- 在linux下 获取,修改本机IP地址的两个函数
- 使用xslt
- dhtmlxtree用Ajax刷新加载XML
- 用Watir测试QTP的Demo程序Mercury Tours
- shell(bash)命令行快捷方式
- VC窗口最大化方法
- androi运行模拟器时报system image file too large错误
- 格式化输出日期和时间
- android 开发平台的搭建
- PHP开发环境搭建