<x:transform>动作用于使用一个XSLT样式表转换一个源XML文档,其语法格式如下:
<x:transform doc="XMLDocument"
xslt="XSLTStylesheet"
[docSystemId="XMLSystemId"]
[xsltSystemId="XSLTSystemId"]
[var="varName" [scope="page|request|session|application"] | result="resultObject"] />
或
<x:transform doc="XMLDocument"
xslt="XSLTStylesheet"
[docSystemId="XMLSystemId"]
[xsltSystemId="XSLTSystemId"]
[var="varName" [scope="page|request|session|application"] | result="resultObject"]>
[<x:param name="parameterName" value="parameterValue" />] +
</x:transform>
或
<x:transform
xslt="XSLTStylesheet"
[docSystemId="XMLSystemId"]
[xsltSystemId="XSLTSystemId"]
[var="varName" [scope="page|request|session|application"] | result="resultObject"]>
XMLDocument
[<x:param name="parameterName" value="parameterValue" />] +
</x:transform>
<x:transform>动作共有8个属性,包括doc、xml、xslt、docSystemId、xsltSystemId、var、scope和result。
.1 doc属性:指定XML文档
【功能说明】doc属性用于指定要转换的源XML文档。如果XML通过<x:set>动作输出,则必须是格式良好的XML文档。doc属性可以接受动态值。
【实例演示】
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<c:import var="doc" url="txl.xml" charEncoding="GB2312" />
<c:import var="stylesheet" url="txl.xsl" charEncoding="GB2312" />
<x:transform doc="${doc}" xslt="${stylesheet}" />
示例代码的执行效果如图9.15所示。

图9.15 使用<x:transform>动作的doc属性
.2 xml属性:指定XML文档
【功能说明】xml属性用于指定要转换的XML文档,不再推荐使用,它已被doc属性所替代。
【实例演示】
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<c:import var="doc" url="txl.xml" charEncoding="GB2312" />
<c:import var="stylesheet" url="txl.xsl" charEncoding="GB2312" />
<x:transform xml="${doc}" xslt="${stylesheet}" />
.3 xslt属性:指定XSLT样式表
【功能说明】xslt属性用于指定XSLT样式表,可以接受动态值。
【实例演示】
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<c:import var="doc" url="book.xml" charEncoding="GB2312" />
<c:import var="stylesheet" url="book.xsl" charEncoding="GB2312" />
<x:transform doc="${doc}" xslt="${stylesheet}" />
其中,XSLT样式表book.xsl的内容如下:
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="books">
<table border="0" width="70%">
<tr bgcolor="lightblue" >
<th>书名</th>
<th>类型</th>
<th>定价</th>
</tr>
<xsl:for-each select="book">
<tr bgcolor="#DDDDDD">
<td align="center">
<xsl:value-of select="name"/>
</td>
<td align="center">
<xsl:value-of select="type"/>
</td>
<td align="right">
<xsl:value-of select="price/@symbol"/>
<xsl:value-of select="price"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
[1] [2] 下一页