JSTL的XML处理标签库

本文详细介绍了JSTL XML标签库的使用方法,包括XML剖析、XPath基础、XML处理标签(如<x:parse>、<x:out>、<x:set>)、条件与回圈标签(如<x:if>、<x:choose>、<x:when>、<x:otherwise>、<x:forEach>)以及XSLT转换标签(如<x:transform>)。通过实例演示了如何利用这些标签进行XML文件的读取、显示、处理及转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

JSTL的XML处理标签库提供XML剖析、取出元素与属性和XSLT转换等相关标签,在JSP程式请先使用taglib指引元素汇入XML处理标签库

 

的URI,如下所示:

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

XPath的基础-说明

nXPath(XML Path Language)是一种标示节点位置的语言,可以用来描述XML元素的位置,如同硬碟资料夹的档案路径,如

 

下所示:

C:\Inetput\wwwroot\Ch13\book.xml

n上述路径指出档案book.xml的位置,XPath指令可以指出XML元素在XML文件中的位置,也就是树状结构节点的位置。在JSTL的XML处

 

理标签库是使用XPath语言来存取XML元素。

n13-5-1 XPath的基础-位置路径

nXPath语言主要描述节点相对其它节点的位置,称为「位置路径」(Location Path),位置路径的运算子,如下表所示:

 

 XPath的基础-范例

 XML剖析与一般处理标签- <x:parse>标签(语法)

<x:parse>标签可以执行XML文件剖析,以便使用XPath或XML DOM取出XML节点或属性值,其基本语法如下所示:

<x:parse xml="运算式" var="name"/>

<x:parse var="name"/>

Body

</x:parse>

上述标签可以执行xml属性的XML文件字串(或标签内的XML文件)剖析,并将剖析结果储存在var属性的变数。

13-5-2 XML剖析与一般处理标签- <x:parse>标签(范例)

<x:parse>标签的使用上可以配合<c:import>标签插入XML文件,如下所示:

<c:import var="doc" url="test.xml"/>

<x:parse xml="${doc}" var="xml"/>

上述<c:import>标签插入test.xml的XML文件(请注意!XML文件并没有宣告部分),将文件内容储存到doc变数,然后就可以使用

 

<x:parse>标签剖析XML文件内容。

 

 XML剖析与一般处理标签- <x:out>标签(语法)

 

<x:out>标签可以使用XPath语言在剖析的XML文件中取出和显示指定的XML节点,其基本语法如下所示:

<x:out select="XPath运算式"/>

上述标签使用select属性的XPath运算式来取出指定的XML节点,XPath运算式的格式,如下所示:

$xml/books/book[1]/code

上述运算式是以"$"符号开始的字串,之后的xml是储存剖析结果的变数,然后是XPath路径字串。

13-5-2 XML剖析与一般处理标签- <x:out>标签(范例)

<x:out>标签就是使用XPath语言的运算式来取出指定的XML节点,如下所示:

<x:out select="$xml/books"/>

上述<x:out>标签的select属性是以"$"符号开始的字串,xml变数是储存前述剖析XML文件的内容,books是根节点,以此例是显示其

 

下所有XML节点的内容,即3个book节点内容。

 

XML剖析与一般处理标签- <x:set>标签(语法)

 

<x:set>标签使用XPath语言在剖析的XML文件中取出部分XML节点的子树,将它储存到其它变数,其基本语法如下所示:

<x:set var="name"

           select="XPath运算式"/>

上述标签使用select属性的XPath运算式取出部分XML节点的子树,然后将此子树储存到var属性的变数。

 

XML剖析与一般处理标签- <x:set>标签(范例)

 

<x:set>标签是使用XPath语言的运算式取出XML文件的部分内容,以便进一步使用<x:out>标签进行处理,如下所示:

<x:set var="part" select="$xml/books/book[3]"/>

上述<x:set>标签取出第3个book节点,然后就可以进一步使用<x:out>标签取出其子节点,如下所示:

<x:out select="$part/code"/><br>

<x:out select="$part/title"/><br>

 

 条件与回圈标签-<x:if>标签

 

<x:if>标签类似<c:if>标签,只是改为使用XPath运算式进行条件判断,其基本语法如下所示:

<x:if select="XPath条件运算式">

   Body

</x:if>

<x:if>标签是使用XPath条件运算式进行判断,如下所示:

<x:if select="$xml/books/book[1]/code='F8920'">

   XML文件拥有书号: F8920<br>

</x:if>

 

条件与回圈标签-<x:choose>、<x:when>和<x:otherwise>标签(语法)

 

<x:choose>、<x:when>和<x:otherwise>标签是使用XPath条件运算式进行多条件判断,其基本语法如下所示:

<x:choose>

   <x:when select="XPath条件运算式">

      Body

   </x:when>

   <x:when select="XPath条件运算式">

      Body

   </x:when>

   <x:otherwise>

      Body

   </x:otherwise>

</x:choose>

 

 

<x:set var="part" select="$xml/books/book[1]"/>

<x:choose>

   <x:when select="$part/@sales='Y'">

      图书仍在销售中<br>

   </x:when>

   <x:when select="$part/@sales='N'">

      图书目前缺货中<br>

   </x:when>

   <x:otherwise>

      图书销售状况不明<br>

   </x:otherwise>

</x:choose>

 

 条件与回圈标签-<x:forEach>标签(语法)

n<x:forEach>标签类似<c:forEach>标签,只是改为使用XPath运算式取出多个同名的XML节点,以便使用回圈一一取出每一个节点来

 

进行处理,其基本语法如下所示:

<x:forEach var="name"

                 select="XPath运算式">

   Body

</x:forEach>

 

条件与回圈标签-<x:forEach>标签(范例)

n<x:forEach>标签是使用XPath运算式来取出XML节点集合,如下所示:

<x:forEach var="item"

                 select="$xml/books/book">

   <x:out select="."/><br>

</x:forEach>

上述<x:forEach>标签取出所有book节点,然后使用<x:out>标签显示目前的节点内容,"."表示目前节点。

 

XSLT转换标签-语法

n<x:transform>标签可以使用XSLT Script执行XML文件转换,内含<x:param>子标签可以设定XSLT参数,其基本语法如下所示:

<x:transform xml="运算式" xslt="运算式"

     var="name" scope="scope">

   <x:param name="name1"

                  value="value1"/>

   …………

   <x:param name="nameN“

                  value="valueN"/>

</x:transform>

 

XSLT转换标签-范例

<x:transforml>标签只需配合<c:import>标签就可以插入XML文件和XSLT Script档案来执行转换,如下所示:

<c:import var="doc" url="test.xml"/>

<c:import var="xslt" url="test.xslt"/>

<x:transform xml="${doc}" xslt="${xslt}"/>

上述<c:import>标签分别插入XML文件test.htm和XSLT Scirpt档案test.xslt,然后使用<x:transform>标签执行XSLT转换。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值