把三个文件放在同一目录下。

JSP页面:

 

 
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" 
  2.     pageEncoding="UTF-8"%> 
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  4.  
  5. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
  6. <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> 
  7.  
  8. <html> 
  9. <head> 
  10. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  11. <title>Insert title here</title> 
  12. </head> 
  13. <body> 
  14.     <!-- import的url是相对于当前jsp文件所在的路径的 --> 
  15.     <c:import url="users.xml" var="xml" /> 
  16.     <c:import url="xslt.xsl" var="xslt" /> 
  17.  
  18.     <x:parse xml="${xml }" var="users" /> 
  19.       
  20.     使用c:set 设置字符串字面量<br/> 
  21.     <c:set var="stringletral" value="string letral value" /> 
  22.     字符串字面量:<x:out select="$stringletral"/><br/> 
  23.     <br/> 
  24.     使用c:set 设置XML节点集<br/> 
  25.     <c:set var="nodeSet" value="${users }"/> 
  26.     用户总数:<x:out select="count($nodeSet//user)"/><br/><br/> 
  27.       
  28.     迭代输出前两个(根据节点的位置过滤):<br/> 
  29.     <x:forEach select="$users//user[position() < 3]" var="user"> 
  30.         姓名:<font color="red" ><x:out select="name"/></font>;姓名长度:<x:out select="string-length(name)" /><br/> 
  31.         ID:<x:out select="id"/><br/> 
  32.         desc:<x:out select="desc"/><br/> 
  33.         schoole:<x:out select="schoole"/><br/> 
  34.         age:<x:out select="age"/><br/> 
  35.         <x:out select="position()"/> 
  36.         <br/> 
  37.     </x:forEach> 
  38.       
  39.     <font color="red"> 
  40.     刷选年龄小于26岁的(根据属性过滤):<br/> 
  41.     <x:forEach select="$users//user[age < '26']" var="user"> 
  42.         姓名:<x:out select="./name"/><br/> 
  43.         ID:<x:out select="./id"/><br/> 
  44.         desc:<x:out select="./desc"/><br/> 
  45.         schoole:<x:out select="./schoole"/><br/> 
  46.         age:<x:out select="./age"/><br/> 
  47.         <br/> 
  48.     </x:forEach> 
  49.     </font> 
  50.     <br/><br/> 
  51.       
  52.     样式转换:<br/> 
  53.     <x:transform xml="${xml }" xslt="${xslt }" /> 
  54.     <br/><br/> 
  55. </body> 
  56. </html> 

users.xml 数据文件:

 

 
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <users> 
  3.     <user> 
  4.         <name>liuwh</name> 
  5.         <id>123456</id> 
  6.         <desc>super</desc> 
  7.         <schoole>gdut.edu.cn</schoole> 
  8.         <age>26</age> 
  9.     </user> 
  10.     <user> 
  11.         <name>wangxiaowei</name> 
  12.         <id>234567</id> 
  13.         <desc>good man</desc> 
  14.         <schoole>moyang.edu.cn</schoole> 
  15.         <age>26</age> 
  16.     </user> 
  17.     <user> 
  18.         <name>zouyubin</name> 
  19.         <id>345678</id> 
  20.         <desc>man</desc> 
  21.         <schoole>hunan.edu.cn</schoole> 
  22.         <age>25</age> 
  23.     </user> 
  24.     <user> 
  25.         <name>tanqing</name> 
  26.         <id>456789</id> 
  27.         <desc>womman</desc> 
  28.         <schoole>scut.edu.cn</schoole> 
  29.         <age>26</age> 
  30.     </user> 
  31.     <user> 
  32.         <name>jingli</name> 
  33.         <id>567890</id> 
  34.         <desc>super man</desc> 
  35.         <schoole>haiyang.edu.cn</schoole> 
  36.         <age>27</age> 
  37.     </user> 
  38. </users> 

样式转换文件:xslt.xsl

 

 
  1. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   
  2.     version="1.0" > 
  3.  
  4.     <xsl:template match='/'> 
  5.         <table border='1'> 
  6.             <tr> 
  7.                 <th>index</th> 
  8.                 <th>name</th> 
  9.                 <th>id</th> 
  10.                 <th>desc</th> 
  11.                 <th>schoole</th> 
  12.                 <th>age</th> 
  13.             </tr> 
  14.             <xsl:call-template name="outUser"> 
  15.                 <xsl:with-param name="users" select="users" /> 
  16.             </xsl:call-template> 
  17.         </table> 
  18.     </xsl:template> 
  19.  
  20.     <xsl:template name="outUser"> 
  21.         <xsl:param name="users" /> 
  22.           
  23.         <xsl:for-each select="$users/user"> 
  24.             <tr> 
  25.                 <td><xsl:value-of select="position()" /></td> 
  26.                   
  27.                 <xsl:choose> 
  28.                     <xsl:when test="position() mod 2 = 0"> 
  29.                         <td><font color="red"><xsl:value-of select="name" /></font></td> 
  30.                     </xsl:when> 
  31.                     <xsl:otherwise> 
  32.                         <td><xsl:value-of select="name" /></td> 
  33.                     </xsl:otherwise> 
  34.                 </xsl:choose> 
  35.                   
  36.                 <td><xsl:value-of select="id" /></td> 
  37.                 <td><xsl:value-of select="desc" /></td> 
  38.                 <td><xsl:value-of select="schoole" /></td> 
  39.                 <td><xsl:value-of select="age" /></td> 
  40.             </tr> 
  41.         </xsl:for-each> 
  42.     </xsl:template> 
  43.  
  44. </xsl:stylesheet> 

运行结果: