日期:2014-05-16  浏览次数:20358 次

JSTL的XML处理标签库

?

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&g