0x01 XML标签

  1. JSTL XML标签库提供了创建和操作XML文档的标签
  2. 引用XML标签库语法:
  3. <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
标签 描述
与<%= … >,类似,不过只用于XPath表达式
解析 XML 数据
设置XPath表达式
判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体
迭代XML文档中的节点
的父标签
的子标签,用来进行条件判断
的子标签,当判断为false时被执行
将XSL转换应用在XML文档中
共同使用,用于设置XSL样式表

0x02 小例子

  1. // 目录结构
  2. ├── src
  3. └── main
  4. └── webapp
  5. └── com
  6. └── ...
  7. └── WEB-INF
  8. └── web.xml
  9. ├── ...
  10. └── JSTL库测试
  11. ├── ...

0x02.1 //

0x02.1.1 语法

  1. <x:out>标签显示XPath表达式的结果,与 <%= %> 功能相似
  2. <x:out>标签语法格式如下:
  3. <x:out select="<string>" escapeXml="<true|false>"/>
标签有如下属性
属性 描述 必选 默认值
select 需要计算的XPath表达式, 通常使用XPath 变量
escapeXml 是否忽略XML特殊字符 true

0x02.1.2 语法

  1. <x:parse>标签用来解析属性中或标签主体中的XML数据
  2. <x:parse>标签语法如下:
  3. <x:parse
  4. var="<string>"
  5. varDom="<string>"
  6. scope="<string>"
  7. scopeDom="<string>"
  8. doc="<string>"
  9. systemId="<string>"
  10. filter="<string>"/>
标签有如下属性
属性 描述 是否必要 默认值
var 包含已解析XML数据的变量
xml 需要解析的文档的文本内容(String或Reader) Body
systemId 系统标识符URI, 用来解析文档
filter 应用于源文档的过滤器
doc 需要解析的XML文档 Page
scope var属性的作用域 Page
varDom 包含已解析XML数据的变量 Page
scopeDom varDom属性的作用域 Page

0x02.1.3 语法

  1. <x:set>标签为XPath表达式的值设置一个变量
  2. 如果XPath表达式的值
  3. 是boolean类型,则<x:set>将会设置一个java.lang.Boolean对象
  4. 若是字符串,则设置一个java.lang.String对象
  5. 若是数字,则设置一个java.lang.Number对象
  1. <x:set>标签语法格式如下:
  2. <x:set var="<string>" select="<string>" scope="<string>"/>
标签有如下属性
属性 描述 是否必要 默认值
var 代表XPath表达式值得变量 Body
select 需要计算的XPath表达式
scope var属性的作用域 Page

0x02.1.4 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_x_out-x_parse-x_set.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  5. <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
  6. <c:set var="xmltext">
  7. <books>
  8. <book>
  9. <name>Padam History</name>
  10. <author>ZARA</author>
  11. <price>100</price>
  12. </book>
  13. <book>
  14. <name>Great Mistry</name>
  15. <author>NUHA</author>
  16. <price>2000</price>
  17. </book>
  18. </books>
  19. </c:set>
  20. <html>
  21. <head>
  22. <title>jstl_x_out-x_parse-x_set</title>
  23. </head>
  24. <body>
  25. <x:parse xml="${xmltext}" var="output"/>
  26. <div>name: <x:out select="$output/books/book[1]/name"/></div>
  27. <div>author: <x:out select="$output/books/book[1]/author"/></div>
  28. <div>price: <x:out select="$output/books/book[1]/price"/></div>
  29. <hr/>
  30. <div>name: <x:out select="$output/books/book[2]/name"/></div>
  31. <div>author: <x:out select="$output/books/book[2]/author"/></div>
  32. <div>price: <x:out select="$output/books/book[2]/price"/></div>
  33. </body>
  34. </html>
  35. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_x_out-x_parse-x_set.jsp

image.png

0x02.2

0x02.2.1 语法

  1. <x:if>标签用于判断一个XPath表达式的值
  2. 若为真, 则执行其主体中的内容
  3. 若为假, 则其主体的内容将会被忽略
  4. <x:if>标签语法格式如下:
  5. <x:if
  6. select="<string>"
  7. var="<string>"
  8. scope="<string>">
  9. ...
  10. </x:if>
标签有如下属性
属性 描述 是否必要 默认值
select 需要计算的XPath表达式
var 存储条件结果的变量
scope var属性的作用域 Page

0x02.2.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_x_if.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  5. <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
  6. <c:set var="xmltext">
  7. <books>
  8. <book>
  9. <name>Padam History</name>
  10. <author>ZARA</author>
  11. <price>100</price>
  12. </book>
  13. <book>
  14. <name>Great Mistry</name>
  15. <author>NUHA</author>
  16. <price>2000</price>
  17. </book>
  18. </books>
  19. </c:set>
  20. <x:parse xml="${xmltext}" var="output"/>
  21. <x:if select="$output//book">
  22. <div>Document has at least one &lt;book&gt; element.</div>
  23. </x:if>
  24. <x:if select="$output/books[1]/book/price > 100">
  25. <div>Book prices are very high</div>
  26. </x:if>
  27. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_x_if.jsp

image.png

0x02.3

0x02.3.1 语法

  1. <x:forEach>标签用来循环遍历XML文档的节点
  2. <x:forEach>语法格式如下:
  3. <x:forEach
  4. var="<string>"
  5. select="<string>"
  6. begin="<int>"
  7. end="<int>"
  8. step="<int>"
  9. varStatus="<string>">
标签有如下属性
属性 描述 是否必要 默认值
select 需要计算的XPath表达式
var 用于存储当前项目的变量
begin 迭代器的开始索引
end 迭代器的结束索引
step 迭代的步长
varStatus 代表迭代器所存储的状态的变量

0x02.3.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_x_foreach.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  5. <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
  6. <c:set var="xmltext">
  7. <books>
  8. <book>
  9. <name>Padam History</name>
  10. <author>ZARA</author>
  11. <price>100</price>
  12. </book>
  13. <book>
  14. <name>Great Mistry</name>
  15. <author>NUHA</author>
  16. <price>2000</price>
  17. </book>
  18. </books>
  19. </c:set>
  20. <x:parse xml="${xmltext}" var="output"/>
  21. <x:forEach select="$output/books/book/name" var="item">
  22. <div>name: <x:out select="$item"/></div>
  23. </x:forEach>
  24. <hr/>
  25. <x:forEach select="$output/books/book" var="item">
  26. <div>name: <x:out select="$item/name"/></div>
  27. <div>author: <x:out select="$item/author"/></div>
  28. <div>price: <x:out select="$item/price"/></div>
  29. <br/>
  30. </x:forEach>
  31. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_x_foreach.jsp

image.png

0x02.4 //

0x02.4.1 语法

  1. <x:choose>标签与Java switch语句有相同的功能
  2. switch语句有case语句
  3. <x:choose>标签有<x:when>标签
  4. switch语句有default语句
  5. <x:choose>标签有<x:otherwise>标签
  1. 语法格式:
  2. <x:choose>
  3. <x:when select="<string>">
  4. ...
  5. </x:when>
  6. <x:when select="<string>">
  7. ...
  8. </x:when>
  9. ...
  10. <x:otherwise>
  11. ...
  12. </x:otherwise>
  13. </x:choose>
  14. <x:choose>没有属性
  15. <x:when>标签只有一个属性,在下表中有给出
  16. <x:otherwise>没有属性
标签的属性
属性 描述 是否必要 默认值
select 条件

0x02.4.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_x_choose-x_when-x_otherwise.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  5. <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
  6. <c:set var="xmltext">
  7. <books>
  8. <book>
  9. <name>Padam History</name>
  10. <author>ZARA</author>
  11. <price>100</price>
  12. </book>
  13. <book>
  14. <name>Great Mistry</name>
  15. <author>NUHA</author>
  16. <price>2000</price>
  17. </book>
  18. </books>
  19. </c:set>
  20. <x:parse xml="${xmltext}" var="output"/>
  21. <x:choose>
  22. <x:when select="$output//book/author = 'ZARA'">
  23. Book is written by ZARA
  24. </x:when>
  25. <x:when select="$output//book/author = 'NUHA'">
  26. Book is written by NUHA
  27. </x:when>
  28. <x:otherwise>
  29. Unknown author.
  30. </x:otherwise>
  31. </x:choose>
  32. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_x_choose-x_when-x_otherwise.jsp

image.png

0x02.5

0x02.5.1 语法

  1. <x:transform>标签在XML文档中应用XSL
  2. <x:transform>标签语法格式:
  3. <x:transform
  4. var="<string>"
  5. scope="<string>"
  6. result="<string>"
  7. doc="<string>"
  8. docSystemId="<string>"
  9. xslt="<string>"
  10. xsltSystemId="<string>"/>
标签有如下属性
属性 描述 是否必要 默认值
doc 源XML文档 Body
docSystemId 源XML文档的URI
xslt XSLT 样式表
xsltSystemId 源XSLT文档的URI
result 接收转换结果的对象 Print to page
var 代表被转换的XML文档的变量 Print to page
scope var属性的作用域

0x02.5.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_x_transform_xslt.jsp
  3. <?xml version="1.0" encoding="UTF8" ?>
  4. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  5. <xsl:output method="html" indent="yes"/>
  6. <xsl:template match="/">
  7. <html>
  8. <body>
  9. <xsl:apply-templates/>
  10. </body>
  11. </html>
  12. </xsl:template>
  13. <xsl:template match="books">
  14. <table border="1" width="100%">
  15. <xsl:for-each select="book">
  16. <tr>
  17. <td>
  18. <i><xsl:value-of select="name"/></i>
  19. </td>
  20. <td>
  21. <xsl:value-of select="author"/>
  22. </td>
  23. <td>
  24. <xsl:value-of select="price"/>
  25. </td>
  26. </tr>
  27. </xsl:for-each>
  28. </table>
  29. </xsl:template>
  30. </xsl:stylesheet>
  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_x_transform.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  5. <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
  6. <c:set var="xmltext">
  7. <books>
  8. <book>
  9. <name>Padam History</name>
  10. <author>ZARA</author>
  11. <price>100</price>
  12. </book>
  13. <book>
  14. <name>Great Mistry</name>
  15. <author>NUHA</author>
  16. <price>2000</price>
  17. </book>
  18. </books>
  19. </c:set>
  20. <c:import url="./jstl_x_transform_xslt.jsp" var="xslt"/>
  21. <x:transform xml="${xmltext}" xslt="${xslt}"/>
  22. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_x_transform.jsp

image.png

0x02.6

0x02.6.1 语法

  1. <x:param>标签与<x:transform>标签一同使用,用于设置XSLT样式表的参数
  2. <x:param>标签语法格式:
  3. <x:param name="<string>" value="<string>"/>
标签有如下属性
属性 描述 是否必要 默认值
name XSLT参数的名称 Body
value XSLT参数的值

0x02.6.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_x_param_xslt.jsp
  3. // 使用<xsl:param>标签与{$bgColor}变量
  4. <?xml version="1.0" encoding="UTF8" ?>
  5. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  6. <xsl:output method="html" indent="yes"/>
  7. <xsl:param name="bgColor"/>
  8. <xsl:template match="/">
  9. <html>
  10. <body>
  11. <xsl:apply-templates/>
  12. </body>
  13. </html>
  14. </xsl:template>
  15. <xsl:template match="books">
  16. <table border="1" width="50%" bgColor="{$bgColor}">
  17. <xsl:for-each select="book">
  18. <tr>
  19. <td>
  20. <i><xsl:value-of select="name"/></i>
  21. </td>
  22. <td>
  23. <xsl:value-of select="author"/>
  24. </td>
  25. <td>
  26. <xsl:value-of select="price"/>
  27. </td>
  28. </tr>
  29. </xsl:for-each>
  30. </table>
  31. </xsl:template>
  32. </xsl:stylesheet>
  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_x_param.jsp
  3. // 在<x:transform>标签中使用<x:param>标签
  4. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  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. <c:set var="xmltext">
  8. <books>
  9. <book>
  10. <name>Padam History</name>
  11. <author>ZARA</author>
  12. <price>100</price>
  13. </book>
  14. <book>
  15. <name>Great Mistry</name>
  16. <author>NUHA</author>
  17. <price>2000</price>
  18. </book>
  19. </books>
  20. </c:set>
  21. <c:import url="./jstl_x_param_xslt.jsp" var="xslt"/>
  22. <x:transform xml="${xmltext}" xslt="${xslt}">
  23. <x:param name="bgColor" value="grey"/>
  24. </x:transform>
  25. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_x_param.jsp

image.png