jsp

位置:IT落伍者 >> jsp >> 浏览文章

Jsp结合XML+XSLT将输出转换为Html格式


发布日期:2023年01月13日
 
Jsp结合XML+XSLT将输出转换为Html格式

我们知道 xml+XSLT就可以直接输出到支持XML的浏览器上如IE 以上但是我们还要考虑到有不少浏览器不直接支持XML在这种情况下我们需要在服务器上进行转换成html输出到浏览器这种临时过渡办法恐怕要在一段时间内一直要使用 使用jsp 加上tablib标识库我们可以完成这种转换

着名open source项目组jakartaapacheorg推出的系列标识库中就有这个功能的tanglib:

按照jakarta配置方法有点繁琐需要修改或定义Webxml本人经过摸索使用下列相当简单的办法就可以使Jsp能成功运行XSL这个标识库了

xsl标识库有三个关键包:
xercesjar 可以在中得到
xalanjar 可以在中得到
xsljar 从得到

将这三个包放置到Tomcat的common/lib目录下或者直接放入Classpath环境中

在JSP中调用标识库

原来Jakarta推荐方法是


<%@taglib uri="%>

这就需要在/WEBINF/webxml下定义一下指向


<taglib>
<tagliburi></tagliburi>
<tagliblocation>/WEBINF/xsltld</tagliblocation>
</taglib>

这种做法虽然很标准但是如果你的容器一直使用tomcat就完全不必了

我们的做法是


<%@taglib uri="xsljar" prefix="xsl" %>

我们以Jakarta的XSL taglib附带的Applyjsp为例正好了解一下Jsp XML XSLT三者之间的关系

Applyjsp


<%@taglib uri="xsljar" prefix="xsl" %>
<html>
<head>
<title>Employee List</title>
</head>
<body bgcolor="white">

<p>下面展示了Jsp的四种组合XML XSLT的方法
<p>下面使用apply方法将已经存在的employeesxml和employeeListxsl结合在一起

<xsl:apply xml="/xml/employeesxml" xsl="/xml/employeeListxsl"/>
<hr>


<p>下面是使用已经存在employeeListxsl 然后在Jsp中自己直接写入XML数据


<xsl:apply xsl="/xml/employeeListxsl">
<?xml version="" encoding="ISO"?>
<employees>
<employee id="">
<firstname>John</firstname>
<lastname>Doe</lastname>
<telephone></telephone>
</employee>
<employee id="">
<firstname>Jane</firstname>
<lastname>Smith</lastname>
<telephone></telephone>
</employee>
<employee id="">
<firstname>George</firstname>
<lastname>Taylor</lastname>
<telephone></telephone>
</employee>
</employees>
</xsl:apply>
<hr>

<p>下面使使用include调用的办法这样一个XSLT样式可以适应不同的XML文件

<xsl:apply xsl="/xml/employeeListxsl">
<xsl:include page="/xml/employeesxml"/>
</xsl:apply>
<hr>

<p>下面是使用import方法在pagescope(类似scope="page")中导入XML文件</p>

<xsl:import id="data" page="/xml/employeesxml"/>
<xsl:apply nameXml="data" xsl="/xml/employeeListxsl"/>

</body>

在上面程序中展示了四种Jsp组合XML XSLT的方法基本可以满足我们的需要注意上面的XML文件路径是"/xml/"这是相对Tomcat容器的绝对路径

我们简单看一下employeeListxsl和employeesxml内容

employeeListxsl类似html中的CSS主要是对XML中数据显示方式进行定义

<?xml version=""?>
<xsl:stylesheet version="" xmlns:xsl=">
<xsl:template match="employees">
<table border="" width="%">
<tr>
<th>ID</th>
<th>Employee Name</th>
<th>Phone Number</th>
</tr>
<xsl:foreach select="employee">
<tr>
<td>
<xsl:valueof select="@id"/>
</td>
<td>
<xsl:valueof select="lastname"/>
<xsl:valueof select="firstname"/>
</td>
<td>
<xsl:valueof select="telephone"/>
</td>
</tr>
</xsl:foreach>
</table>
</xsl:template>

</xsl:stylesheet>

employeesxml

<?xml version="" encoding="ISO"?>


<employees>
<employee id="">
<firstname>John</firstname>
<lastname>Doe</lastname>
<telephone></telephone>
</employee>

<employee id="">
<firstname>Jane</firstname>
<lastname>Smith</lastname>
<telephone></telephone>
</employee>

<employee id="">
<firstname>George</firstname>
<lastname>Taylor</lastname>
<telephone></telephone>
</employee>
</employees>

如果我们在employeesxml顶部加入


<?xml:stylesheet type="text/xsl" href="catalogxsl"?>

用支持XML的IE 以上浏览器调用其显示页面就和Applyjsp显示页面是一样的

上一篇:如何解决html网页编码导致jsp页面乱码

下一篇:用户登录验证的JSP完整程序