SQL标签库提供了创建和操作XML文档的标签。

引入语法:<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

导入包:http://www.apache.org/dist/xerces/j/ 进行下载

解压,提取xalan.jar 和 xercesImpl.jar ,导入工程中。

XML标签都有:

标签 描述
<x:out> 与<%= ... >,类似,不过只用于XPath表达式
<x:parse> 解析 XML 数据
<x:set> 设置XPath表达式
<x:if> 判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体
<x:forEach> 迭代XML文档中的节点
<x:choose> <x:when>和<x:otherwise>的父标签
<x:when> <x:choose>的子标签,用来进行条件判断
<x:otherwise> <x:choose>的子标签,当<x:when>判断为false时被执行
<x:transform> 将XSL转换应用在XML文档中
<x:param> 与<x:transform>共同使用,用于设置XSL样式表

<x:out> 显示XPath表达式的结果,类似于<c:out>

语法:

属性 描述 是否必要 默认值
select 需要计算的XPath表达式,通常使用XPath 变量
escapeXml 是否忽略XML 特殊字符 true

<x:parse> 用来解析属性中或标签主体中的XML数据

语法:

<x:parse xml="xml文本变量" var="使用变量" />

属性 描述 是否必要 默认值
var 包含已解析XML数据的变量
xml 需要解析的文档的文本内容(String或Reader) Body
systemId 系统标识符URI,用来解析文档
filter 应用于源文档的过滤器
doc 需要解析的XML文档 Page
scope var属性的作用域 Page
varDom 包含已解析XML数据的变量 Page
scopeDom varDom属性的作用域 Page

eg:

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<html>
<head>
<title>Using JSTL Functions</title>
</head>
<body>
<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" />
<p>关于第一本书的信息:</p>
name:<x:out select="$output/books/book[1]/name" /><br>
author:<x:out select="$output/books/book[1]/author" /><br>
price:<x:out select="$output/books/book[1]/price" /><br> </body>
</html>
//输出结果为:

  关于第一本书的信息:

  name:Padam History
author:ZARA
price:100
 

<x:set> 为XPath表达式的值设置一个变量

语法:

属性 描述 是否必要 默认值
var 代表XPath表达式值得变量 Body
select 需要计算的XPath表达式
scope var属性的作用域 Page

eg:

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<html>
<head>
<title>Using JSTL Functions</title>
</head>
<body>
<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" />
<p>子节点中book节点值为:<c:out value="${fragment}" /></p>
</body>
</html>
//输出结果为:
子节点中book节点值为:[]

<x:if> 判断一个XPath表达式的值,若为真则执行

语法:

属性 描述 是否必要 默认值
select 需要计算的XPath表达式
var 存储条件结果的变量
scope var属性的作用域 Page

eg:

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<html>
<head>
<title>Using JSTL Functions</title>
</head>
<body>
<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/books/bookp[1]/price >100">
Book1 prices are very high
<x:out select="$output/books/book[1]/price <100" />
</x:if>
<x:if select="$output/books/book[2]/price >100">
Book2 prices are very high
</x:if>
</body>
</html> //输出结果为:
Book2 prices are very high

<x:forEach> 循环遍历各节点

语法:

属性 描述 是否必要 默认值
select 需要计算的XPath表达式
var 用于存储当前项目的变量
begin 迭代器的开始索引
end 迭代器的结束索引
step 迭代的步长
varStatus 代表迭代器所存储的状态的变量

eg:

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<html>
<head>
<title>Using JSTL Functions</title>
</head>
<body>
<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" />
<p>循环books子节点:
<x:forEach select="$output//book" var="item" >
<c:out value="${item }" />
</x:forEach>
</p>
</body>
</html> //输出结果为:
循环books子节点: [book: null] [book: null]

<x:choose> 类似于switch标签

语法:

<x:choose>

  <x:when><?x:when>

  ...

  <x:otherwise><x:otherwise>

</x:choose>

<x:when> 判断条件相当于if,属于<x:choose>的子标签

语法:

<x:when select="条件">

属性 描述 是否必要 默认值
select 条件

<x:otherwise> 相当于switch中的default,属于<x:choose>的子标签

eg:

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<html>
<head>
<title>Using JSTL Functions</title>
</head>
<body>
<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" />
<p>判断第一本书的作者:
<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>
</p>
</body>
</html> //输出结果为:
判断第一本书的作者: Book is written by ZAR

<x:transform> 将XSL转换应用在XML文档中

语法:

属性 描述 是否必要 默认值
doc 源XML文档 Body
docSystemId 源XML文档的URI
xslt XSLT 样式表
xsltSystemId 源XSLT文档的URI
result 接收转换结果的对象 Print to page
var 代表被转换的XML文档的变量 Print to page
scope var属性的作用域

<x:param>  在<x:transform>中使用,设置参数名称

语法:

属性 描述 是否必要 默认值
name XSLT参数的名称 Body
value XSLT参数的值

eg:

xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" />
<xsl:param name="bgcolor" />
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template> <xsl:template match="books">
<table border="1" width="100%" bgColor="{$bgcolor}">
<xsl:for-each select="book">
<tr>
<td>
<i><xsl:value-of select="name" /></i>
</td>
<td>
<i><xsl:value-of select="author" /></i>
</td>
<td>
<i><xsl:value-of select="price" /></i>
</td>
</tr>
</xsl:for-each> </table>
</xsl:template> </xsl:stylesheet>

html:

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<html>
<head>
<title>Using JSTL Functions</title>
</head>
<body>
<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/test2/style.xsl" var="xslt" />
<p>将xml文档按照格式输出:
<x:transform xml="${xmltext}" xslt="${xslt}" >
<x:param name="bgcolor" value="red"/>
</x:transform>
</p>
</body>
</html>
//输出结果为:

XML标签的更多相关文章

  1. [Java] 解决spring的xml标签内不能自由增加说明的难题,方便调试、部署时进行批量屏蔽

    作者:zyl910 以往我们想在spring的xml配置文件中增加说明文本时,只能使用xml注释(<!-- 注释 -->).这对于"调试.部署时想批量屏蔽部分bean" ...

  2. JSP标准标签库(JSTL)--XML标签库 x

    ³在开发中XML解析的操作是非常烦琐的,幸运的是在JSTL中专门提供了用于XML解析的操作,这样用户就可以不用费力的去研究SAX或DOM等操作的使用,就可以轻松的进行XML文件的解析处理.  XML标 ...

  3. dubbo源码—dubbo自定义spring xml标签

    dubbo为了和spring更好的集成,提供了一些xml配置标签,也就是自定义标签 spring自定义标签 spring自定义标签的方式如下: 设计配置属性和JavaBean 编写xsd文件,校验xm ...

  4. Dubbo源码-Dubbo是如何随心所欲自定义XML标签的

    叨叨 今天考虑了很久要不要写这篇文章. 距离<Dubbo源码>系列的开篇到现在已经快两个月时间了.当时是想着工作上的RPC框架使用存在一些让人头疼的问题,就来看看Dubbo给出了一套什么样 ...

  5. 6.2 dubbo在spring中自定义xml标签源码解析

    在6.1 如何在spring中自定义xml标签中我们看到了在spring中自定义xml标签的方式.dubbo也是这样来实现的. 一 META_INF/dubbo.xsd 比较长,只列出<dubb ...

  6. 6.1 如何在spring中自定义xml标签

    dubbo自定义了很多xml标签,例如<dubbo:application>,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子. 一 编写模型类 package ...

  7. JSTL XML标签库 使用

    推荐博客:http://blog.sina.com.cn/s/blog_4f925fc30101820u.html XML标签库 JSTL提供了操作xml文件的标签库,使用xml标签库可以省去使用Do ...

  8. 自动回复之实现随机回复与常用Mapper XML标签

    [常用Mapper XML标签] 1.基本的:select.insert.update 等 2.可读性.方便拼SQL:where.set.trim 3.减少重复:sql 4.逻辑控制:if.choos ...

  9. (5)JSTL的xml标签库

    Jstl的XML标签库 JSTL提供了操作xml文件的标签库,使用xml标签库可以省去使用Dom和SAX标签库的繁琐,能轻松的读取xml文件的内容. <%@ taglib uri="h ...

随机推荐

  1. [LintCode] Median of Two Sorted Arrays 两个有序数组的中位数

    There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted ...

  2. Color Processing 色彩处理

    How to read and write pixel data Bitmap processing Image Stride Bayer Color Filter Pattern High-Qual ...

  3. ArcGIS AddIN开发之自定义鼠标样式

    如果想修改Windows默认的鼠标样式,可以这样 //设置鼠标样式 this.Cursor = System.Windows.Forms.Cursors.Cross; 可是如果想设置成一些自定义的很好 ...

  4. thinkphp框架验证码验证一次

    做异步验证验证码,只要验证一次结果正确,拿相同的值再次来对比,返回结果就不正确.我看到论坛中有人说,tp框架只要验证过一次正确后验证码就销毁了.确实是这个效果,但具体的还没深入了解

  5. CSS3初学篇章_3(属性选择符/字体样式/元素样式)

    属性选择符  选择符  说明  E[att]  选择具有att属性的E元素.  E[att="val"]  选择具有att属性且属性值等于val的E元素.  E[att~=&quo ...

  6. MVC概念性的内容

    MVC:    是一个缩写(model + view + control),      Model:是一些类文件,  功能:负责增删改查, 负责跟数据库打交道 (把数据存入到数据库: 从数据库把数据读 ...

  7. Linux下一些有用的指令

    1.   安装源代码包用到的configure 这用来定位安装位置. 用法: ./configure -prefix=<安装目录>,  前提是文件中有configure执行文件.

  8. 详解 Python 中的下划线命名规则

    在 python 中,下划线命名规则往往令初学者相当 疑惑:单下划线.双下划线.双下划线还分前后……那它们的作用与使用场景 到底有何区别呢?今天 就来聊聊这个话题. 1.单下划线(_) 通常情况下,单 ...

  9. jquery ajax 对异步队列defer与XMLHttprequest.onload的依赖

    ajax 对异步队列defer与XMLHttprequest.onload的依赖

  10. 数位dp/记忆化搜索

    一.引例 #1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an  ...