JSTL-XML标签库
主页:http://www.cnblogs.com/EasonJim/p/6958992.html的分支页。
一、<x:out>
<x:out>
标签显示XPath表达式的结果,它的作用和JSP语法中的<%= %>
类似。
属性:
<x:out>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
select | 作为字符串要计算的XPath表达式,通常使用XPath变量 | 是 | 无 |
escapeXml | 如果标签会转义特殊的XML字符,则为真 | 否 | true |
实例:
举个例子,会覆盖(a)(b)标签。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <html>
<head>
<title>JSTL x:out Tags</title>
</head>
<body>
<h3>Books Info:</h3> <c:set var="xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set> <x:parse xml="${xmltext}" var="output"/>
<b>The title of the first book is</b>:
<x:out select="$output/books/book[1]/name" />
<br>
<b>The price of the second book</b>:
<x:out select="$output/books/book[2]/price" />
</body>
</html>
这将产生如下所示结果:
二、<x:parse>
<x:parse>
标签用于解析通过一个属性或在标签本体中指定的XML数据。
属性:
<x:parse>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
var | 包含解析的XML数据的变量 | 否 | 无 |
xml | 要解析的文档文本(String或Reader) | 否 | Body |
systemId | 解析文档的系统标识符URI | 否 | 无 |
filter | 应用于源文档的过滤器 | 否 | 无 |
doc | 要被解析的XML文档 | 否 | 页面 |
scope | 在var属性中指定的变量范围 | 否 | 页面 |
varDom | 包含解析的XML数据的变量 | 否 | 页面 |
scopeDom | 在varDom属性中指定的变量范围 | 否 | 页面 |
实例:
下述的例子中描述了解析是怎样用来读取和解析外部的XML文件的:
已经理解了怎样从给定的文档中的主体解析XML。现在将下述内容放到books.xml文件中:
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
现在尝试下述的main.jsp,并保存在相同的目录中:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <html>
<head>
<title>JSTL x:parse Tags</title>
</head>
<body>
<h3>Books Info:</h3>
<c:import var="bookInfo" url="http://localhost:8080/books.xml"/> <x:parse xml="${bookInfo}" var="output"/>
<b>The title of the first book is</b>:
<x:out select="$output/books/book[1]/name" />
<br>
<b>The price of the second book</b>:
<x:out select="$output/books/book[2]/price" /> </body>
</html>
现在用http://localhost:8080/main.jsp
尝试访问上述JSP,这会产生如下所示结果:
三、<x:set>
<x:set>
标签为XPath表达式的值设置变量。
如果XPath表达式的结果是一个布尔值,<x:set>标签就设置java.lang.Boolean对象;若结果是一个字符串,就设置java.lang.String对象;若结果是一个数值,就设置java.lang.Number对象。
属性:
<x:set>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
var | 设置XPath表达式值的变量 | 是 | Body |
select | 要计算的XPath表达式 | 否 | 无 |
scope | 在var属性中指定的变量范围 | 否 | 页面 |
实例:
下述例子展示了如何使用<x:set>
标签:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <html>
<head>
<title>JSTL Tags</title>
</head>
<body>
<h3>Books Info:</h3> <c:set var="xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set> <x:parse xml="${xmltext}" var="output"/>
<x:set var="fragment" select="$output//book"/>
<b>The price of the second book</b>:
<c:out value="${fragment}" />
</body>
</html>
现在尝试访问JSP,会产生如下所示结果:
四、<x:if>
<x:if>
标签计算了一个测试XPath表达式,如果测试条件为真,则处理它的主体,如果测试条件为假,主体就被忽略。
属性:
<x:if>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
select | 要计算的XPath表达式 | 是 | 无 |
var | 存储条件结果的变量名 | 否 | 无 |
scope | 在var属性中指定的变量范围 | 无 | 页面 |
实例:
下述例子展示了如何使用<x:if>
标签:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <html>
<head>
<title>JSTL x:if Tags</title>
</head>
<body>
<h3>Books Info:</h3> <c:set var="xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set> <x:parse xml="${xmltext}" var="output"/> <x:if select="$output//book">
Document has at least one <book> element.
</x:if>
<br />
<x:if select="$output/books[1]/book/price > 100">
Book prices are very high
</x:if> </body>
</html>
现在尝试访问JSP,将会产生如下所示结果:
五、<x:forEach>
<x:forEach>
标签用于在XML文档中的代码中循环。
属性:
<x:forEach>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
select | 要计算的XPath表达式 | 是 | 无 |
var | 每次循环中存储当前项目的变量名 | 否 | 无 |
begin | 迭代的开始指针 | 否 | 无 |
end | 迭代的结束指针 | 否 | 无 |
step | 遍历集合时指针增量的大小 | 否 | 无 |
varStatus | 存储的迭代状态的变量名 | 否 | 无 |
实例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <html>
<head>
<title>JSTL x:if Tags</title>
</head>
<body>
<h3>Books Info:</h3> <c:set var="xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set> <x:parse xml="${xmltext}" var="output"/>
<ul class="list">
<x:forEach select="$output/books/book/name" var="item">
<li>Book Name: <x:out select="$item" /></li>
</x:forEach>
</ul> </body>
</html>
这将产生如下所示结果:
六、<x:choose>,<x:when>,<x:otherwise>
<x:choose>
标签的工作方式类似于Java的switch语句,允许在许多选项中进行选择。switch语句有case语句,<x:choose>
标签有<x:when>
标签。switch语句有缺省子句来指定默认操作,同样的,<x:choose>
标签也有<x:otherwise>
标签作为缺省子句。
属性:
<x:choose>
标签没有任何属性。<x:when>
标签有一个属性,如下所示。<x:otherwise>
标签没有任何属性。
<x:when>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
select | 要计算的条件 | 是 | 无 |
实例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <html>
<head>
<title>JSTL x:choose Tags</title>
</head>
<body>
<h3>Books Info:</h3> <c:set var="xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set> <x:parse xml="${xmltext}" var="output"/>
<x:choose>
<x:when select="$output//book/author = 'ZARA'">
Book is written by ZARA
</x:when>
<x:when select="$output//book/author = 'NUHA'">
Book is written by NUHA
</x:when>
<x:otherwise>
Unknown author.
</x:otherwise>
</x:choose> </body>
</html>
这将产生如下所示结果:
七、<x:transform>
<x:transform>
标签用于XML文档中的XML转换。
属性:
<x:transform>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
doc | XSLT转换的源XML文档 | 否 | Body |
docSystemId | 初始XML文档的URI | 否 | 无 |
xslt | XSLT样式表提供转换指导 | 是 | 无 |
xsltSystemId | 初始XSLT文档的URI | 否 | 无 |
result | 接收转换结果的结果对象 | 否 | 页面输出 |
var | 设置为转换的XML文档的变量 | 否 | 页面输出 |
scope | 显示转换结果的变量范围 | 否 | 无 |
实例:
考虑如下所示的XSLT样式表style.xsl:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" indent="yes"/> <xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template> <xsl:template match="books">
<table border="1" width="100%">
<xsl:for-each select="book">
<tr>
<td>
<i><xsl:value-of select="name"/></i>
</td>
<td>
<xsl:value-of select="author"/>
</td>
<td>
<xsl:value-of select="price"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
现在考虑如下所示的JSP文件:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <html>
<head>
<title>JSTL x:transform Tags</title>
</head>
<body>
<h3>Books Info:</h3>
<c:set var="xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set> <c:import url="http://localhost:8080/style.xsl" var="xslt"/>
<x:transform xml="${xmltext}" xslt="${xslt}"/> </body>
</html>
这将产生如下所示的结果:
八、<x:param>
<x:param>
标签和转换标签一起使用来设置XSLT样式表中的参数。
属性:
<x:param>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
name | 要设置的XSLT参数名 | 是 | Body |
value | 要设置的XSLT参数值 | 否 | 无 |
实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> <c:set var="doc1">
<document>
<description>This is first document.</description>
</document>
</c:set> <x:parse varDom="doc2">
<document>
<description>This is second document.</description>
</document>
</x:parse> <x:parse varDom="doc3">
<document>
<description>This is third document.</description>
</document>
</x:parse> <c:set var="xslt">
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" />
<xsl:param name="doc2"/>
<xsl:param name="doc3"/> <xsl:template match="/">
<xsl:value-of select="/document/description" /><br />
<xsl:value-of select="$doc2/document/description" /><br />
<xsl:value-of select="$doc3/document/description" /><br />
</xsl:template> </xsl:stylesheet>
</c:set> <html>
<head><title>Example of x:param tag of JSTL</title></head>
<body>
<x:transform xml="${doc1}" xslt="${xslt}">
<x:param name="doc2" value="${doc2}" />
<x:param name="doc3" value="${doc3}" />
</x:transform>
</body>
</html>
这将产生如下所示结果:
提示:如果参考官网的教程https://www.tutorialspoint.com/jsp/jstl_xml_param_tag.htm,Eclipse会报这个错误:
可能太旧的原因导致。
JSTL-XML标签库的更多相关文章
- JSP标准标签库(JSTL)--XML标签库 x
³在开发中XML解析的操作是非常烦琐的,幸运的是在JSTL中专门提供了用于XML解析的操作,这样用户就可以不用费力的去研究SAX或DOM等操作的使用,就可以轻松的进行XML文件的解析处理. XML标 ...
- JSTL XML标签库 使用
推荐博客:http://blog.sina.com.cn/s/blog_4f925fc30101820u.html XML标签库 JSTL提供了操作xml文件的标签库,使用xml标签库可以省去使用Do ...
- 小峰servlet/jsp(7)jstl国际化标签库、sql标签库等
一.jstl国际化标签库: fmt:setLocale 设定用户所在的区域: fmt:formatDate 对日期进行格式化 fmt:requestEncoding 设置所有的请求编码; fmt: ...
- (5)JSTL的xml标签库
Jstl的XML标签库 JSTL提供了操作xml文件的标签库,使用xml标签库可以省去使用Dom和SAX标签库的繁琐,能轻松的读取xml文件的内容. <%@ taglib uri="h ...
- JSTL函数标签库 fn标签
JSTL函数标签库 fn标签 在使用jstl的函数标签库之前需要在页面中引入: <%@ taglib prefix="fn" uri="http://java.su ...
- Java Servlet(十):JSTL核心标签库
JSTL全名称:JaveServer Pages Standard Tag Library.JSTL是由JCP(Java Community Process)所定制的标准规范,它主要提供给Java W ...
- JSTL标准标签库
有时使用EL和标准动作达不到目的,于是就引入定制标记. 对于JSP页面创作人员来说,定制标记使用起来比脚本要容易一些.不过对于JAVA程序员来说,简历定制标记处理器反而更困难.幸运的是,已经有了一个标 ...
- EL表达式和JSTL核心标签库
1 EL表达式 1.1 EL的概述 EL,全名为Expression Language. 主要作用: ①EL表达式主要用于替换jsp页面中的脚本表达式,以便于从各种类型的web域中检索java对象(某 ...
- ⑤早起的鸟儿有虫吃-JSTL核心标签库[收藏]
介绍 JSTL 全名为Java Server Pages Standard Tag Library(JSP Standard Tag Library),它的中文名称为JSP 标准标签函数库. Web ...
- Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架
JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.--------- ...
随机推荐
- vue2.0 组件化
简单理解其实组件就是制作自定义的标签,这些标签在HTML中是没有的. 组件注册的是一个标签,而指令注册的是已有标签里的一个属性.在实际开发中我们还是用组件比较多,指令用的比较少. <!DOCTY ...
- PowerShell让系统可以执行.ps1文件,开机,关机,在线时间 , Function自定义函数
Function Get-ComputerUptimeHistory { $q=' <QueryList> <Query Id="0" Path="Sy ...
- 一起来学SpringBoot(十七)优雅的参数校验
参数校验在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动方法内代码显得冗长每次要看哪些参数 ...
- Jmeter之https请求
Jmeter之录制https脚本,网上介绍了好多种方法,大家自行百度. 如果手写https脚本,该如何做呢? 方法:http信息头管理器,加入User-Agent参数 案例:手写百度的搜索:哈哈 请 ...
- 华硕笔记本无法设置U盘启动,快捷启动不能识别
最近有不少华硕笔记本用户朋友在使用U大侠装系统时,不管是使用快捷键启动还是BIOS查看,都没有发现U盘启动项,这该怎么办呢? 不要急,既然找不到启动项,那就从设置启动项来解决不就可以了. 第一种方 ...
- java中属性命名get字母大小写问题
java文件 company.java private int sTime; public void setSTime (int sTime) { this.sTime = sTime; ...
- No-8.循环
01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行代码 分支 —— 根据条件判断,决定执行代码的 分支 循环 —— 让 特定代码 重复 执行 02. while ...
- android实战简易教程-链接
http://blog.csdn.net/yayun0516/article/category/2799943
- JavaScript exec()方法
exec() 方法用于检索字符串中的正则表达式的匹配.返回一个数组,其中存放匹配的结果.如果未找到匹配,则返回值为 null. var str = "我今年25岁明年26岁后年27岁千年24 ...
- cc.Label
cc.Label 1:cc.Label是显示文字的组件;2:cc.Label属性面板: String: 文本显示的内容; Horiznotal: 水平对齐的方式: 左 右 居中; Vertial ...