首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JSTL的XML处置标签库

2012-07-03 
JSTL的XML处理标签库?JSTL的XML处理标签库提供XML剖析、取出元素与属性和XSLT转换等相关标签,在JSP程式请先

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>

?

?条件与回圈标签-<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转换。

?

?

?

热点排行