`
mmjj4067
  • 浏览: 7020 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSTL XML processing标签库

阅读更多
在企业级应用越来越依赖XML的今天,XML格式的数据被作为信息交换的优先选择。XML processing标签库为程序设计者提供了基本的对XML格式文件的操作。在该标签库中的标签一共有10个,被分为了三类,分别是:
q         XML核心标签:<x:parse>、<x:out>、<x:set>。
q         XML流控制标签:<x:if>、<x:choose>、<x:when>、<x:otherwise>、<x:forEach>。
q         XML转换标签:<x:transform>、<x:param>。
由于该组标签库专注于对某一特定领域的实现,因此本书将只选择其中常见的一些标签和属性进行介绍。
9.4.1 用于解析XML文件的<x:parse>标签
<x:parse>标签是该组标签库的核心,从其标签名就可以知道,它是作为解析XML文件而存在的。它的属性和描述如表9.12所示:
表9.12 <x:parse>标签属性和说明
属性 描述
doc 源XML的内容,该属性的内容应该为String类型或者java.io.Reader的实例,可以用xml属性来替代,但是不被推荐
var 将解析后的XML保存在该属性所指定的变量中,之后XML processing标签库中的其他标签若要取XML中的内容就可以从该变量中得到(可选)
scope 变量的作用范围(可选)
varDom 指定保存的变量为org.w3c.dom.Document接口类型(可选)
scopeDom org.w3c.dom.Document的接口类型变量作用范围(可选)
systemId 定义一个URI,该URI将被使用到XML文件中以接入其他资源文件(可选)
filter 该属性必须为org.xml.sax.XMLFilter类的一个实例,可以使用EL表达式传入,将对XML文件做过滤得到自身需要的部分(可选)

其中,var、scope和varDom、scopeDom不应该同时出现,而应该被视为两个版本来使用,二者的变量都可以被XML processing标签库的其他标签来使用。
<x:parse>标签单独使用的情况很少,一般会结合XML processing标签库中的其他标签来一起工作。下面看一个示例。
首先给出一个简单的XML文件,将对该XML文件做解析,该XML文件名为SampleXml.xml。
<?xml version="1.0" encoding="UTF-8"?>
<xml-body>
         <name>RW</name>
         <passWord>123456</passWord>
         <age>28</age>
         <books>
                   <book>book1</book>
                   <book>book2</book>
                   <book>book3</book>
         </books>
</xml-body>
标签库的工作:
<c:import var="xmlFile" url="http://localhost:8080/booksamplejstl/SampleXml.xml"/>
<x:parse var="xmlFileValue" doc="${xmlFile}"/>
该示例读取XML文件得到了<c:import>标签的帮助,<c:import>标签将源XML文件的内容保存在“xmlFile”变量中,<x:parse>标签根据“xmlFile”变量的值解析“SampleXml.xml”。

9.4.2 用于显示XML内容的<x:out>标签
<x:out>标签从<x:parse>标签解析后保存的变量中取得需要的XML文件内容,并显示在页面上。该标签是通过XPath技术(定位XML元素的一种技术)来实现的。要使用<x:out>标签必须将xalan-j的jar包保存在“WEB-INF/lib”下。它的属性和描述如表9.13所示:
表9.13 <x:out>标签属性和说明
属性 描述
select XPath表达式
escape 当特殊字符如:“<,>,&,’,””出现在取得的结果字符串中时,将以转义字符来替换

<x:out>标签需要与<x:parse>标签协同工作,下面看一个示例。
<c:import var="xmlFile" url="http://localhost:8080/booksamplejstl/SampleXml.xml"/>
<x:parse var="xmlFileValue" doc="${xmlFile}"/>
name:<x:out select="$xmlFileValue/xml-body/name"/><br>
passWord:<x:out select="$xmlFileValue/xml-body/passWord"/><br>
age:<x:out select="$xmlFileValue/xml-body/age"/><br>
读取XML文件并解析后的变量xmlFileValue将加上“$”作为XPath表达式的开头,select中的表达式将从xml-body根元素下的各个子元素中取得实体内容,最后将结果显示在页面上。根据“SampleXml.xml”文件的内容,将显示。
name:RW
passWord:123456
age:28
9.4.3 用于保存XML内容的<x:set>标签
<x:set>标签允许将某个源XML中元素的实体内容或属性,保存到一个变量中去,它的实现也依靠XPath技术。它的属性和描述如表9.14所示:
表9.14 <x:set>标签属性和说明
属性 描述
select XPath表达式
var 保存结果的变量名
scope 变量的作用范围(可选)

<x:set>标签的var保存的变量由XPath的结果决定该变量的类型,下面看一个示例。
<c:import var="xmlFile" url="http://localhost:8080/booksamplejstl/SampleXml.xml"/>
<x:parse var="xmlFileValue" doc="${xmlFile}"/>
<x:set select="$xmlFileValue/xml-body/name" var="thisName"/>
这里将保存XML的name元素内容到变量“thisName”中。
9.4.4 用于判断的<x:if>标签
<x:if>标签允许由XPath的boolean()函数得到的判断结果,来判断是否显示其标签所包含的内容。<x:if>标签的属性与<x:set>标签相同,但是var的结果只能是boolean类型。
9.4.5 用于复杂判断的<x:choose>、<x:when>、<x:otherwise>标签
这组标签将一起使用,来提供“if elseif”语句的功能。
<x:choose>标签没有属性,可以被认为是父标签,<x:when>、<x:otherwise>将作为其子标签来使用。
<x:when>标签等价于“if”语句,它包含一个select属性,该属性为XPath判断表达式。
<x:otherwise>标签没有属性,它等价于“else”语句。
9.4.6 用于对XML元素循环的 <x:forEach>标签
<x:forEach>为对XML文件中同一名称元素的循环控制标签。它的属性和描述如表9.15所示:
表9.15 <x:set>标签属性和说明
属性 描述
select XPath表达式,结果是一个集合,将对该集合进行循环(可选)
begin 开始条件(可选)
end 结束条件(可选)
step 循环的步长,默认为1(可选)
var 做循环的对象变量名,表示XPath表达式结果集合中的一个对象(可选)
varStatus 显示循环状态的变量(可选)

下面看一个示例。
<x:forEach select="$xmlFileValue/xml-body/books/book" var="book">
${book}
</x:forEach>
该示例将使用循环读取XML中多个同存于books元素下的book子元素。
9.4.7 格式化XML显示数据的<x:transform>标签
<x:transform>标签允许使用XSLT(转换XML格式的语言)为页面的显示数据做格式化的处理。它的属性和描述如表9.16所示:
表9.16 <x:transform>标签属性和说明
属性 描述
doc 源XML的内容,该属性的内容应该为String、java.io.Reader、javax.xml.transform.Source、org.w3c.dom.Document的实例,或者从<x:parse>、<x:set>两个标签得到。可以用xml属性来替代,但是不被推荐(可选)
xslt 源XSLT的内容,该属性的内容应该为String、java.io.Reader、javax.xml.transform.Source的实例(可选)
docSystemId 定义一个URI,该URI将被使用到XML文件中以接入其他资源文件。可以用xml SystemId属性来替代,但是不被推荐(可选)
xsltSystemId 定义一个URI,该URI将被使用到XSLT文件中以接入其他资源文件(可选)
var 将格式化后的XML文件保存在该属性所指定的变量中,保存的变量为org.w3c.dom.Document接口类型(可选)
scope 变量的作用范围(可选)
result 保存转化结果的变量,保存的变量为javax.xml.transform.Result类型的实例(可选)

下面看一个示例:
<c:import var="xmlFile" url="http://localhost:8080/booksamplejstl/SampleXml.xml" />
<c:set var="xsltdoc">
         <?xml version="1.0"?>
         <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
                   <xsl:template match="/">
                            <xsl:apply-templates />
                   </xsl:template>
                   <xsl:template match="xml-body">
                            <html>
                                     <head></head>
                                     <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0">
                                               <h2>
                                                        UserName:
                                                        <xsl:value-of select="name" />
                                               </h2>
                                               <h2>
                                                        PassWord:
                                                        <xsl:value-of select="passWord" />
                                               </h2>
                                               <h2>
                                                        age:
                                                        <xsl:value-of select="age" />
                                               </h2>
                                     </body>
                            </html>
                   </xsl:template>
         </xsl:stylesheet>
</c:set>
<x:transform xslt="${xsltdoc}" doc="${xmlFile}" />
这个示例将XML文件保存的数据信息利用<c:import>保存在“xmlFile”中,然后使用<c:set>标签保存一个XSLT的源到“xsltdoc”,最后通过<x:transform>格式化XML文件的数据显示在页面上。

9.4.8 用于参数传递的<x:param>标签
<x:param>标签用于在格式化XML时传递所需要的参数。它的属性和描述与<c:param>标签相同,这里不再赘述。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/edmond80/archive/2007/03/20/1535488.aspx
分享到:
评论

相关推荐

    JSTL详解,一份很不错的JSTL学习文档

    **第三章:JSTL XML processing 标签库** 这一章主要介绍如何使用JSTL处理XML数据,包括解析、查询、转换等功能,但具体内容未在提供的摘要中给出。 通过学习JSTL,开发者可以有效地提升JSP页面的可读性和可维护性...

    JSTL标准标签库的应用

    2. **XML标签库 (XML Processing Tag Library)** - URI: `http://java.sun.com/jstl/xml` - 前缀: `x` - 示例: `&lt;x:forEach&gt;` - 功能: 支持XML文档的处理。 3. **I18N格式标签库 (Internationalization Tag ...

    jstl C标准标签库

    ### JSTL C标准标签库概述 JSTL(JavaServer Pages Standard Tag Library),即JavaServer Pages标准标签库,是一个不断完善的开源项目,由Apache的Jakarta小组维护。该标签库旨在提供一套标准且功能丰富的标签集合...

    (JSTL)jsp标签库

    JSTL,即JavaServer Pages Standard Tag Library(JavaServer页面标准标签库),是为简化JSP页面开发而设计的一组自定义标签库。自JSP 1.1版本开始,JSP支持自定义标签,而JSTL则提供了更为丰富和强大的标签功能。...

    JSTL标准标签库很详细的说明和使用指南

    ##### XML processing标签库 - **URI**:`http://java.sun.com/jstl/xml` - **前缀**:`x` - **示例**:`&lt;x:tagname&gt;` ##### I18N capable formatting标签库 - **URI**:`http://java.sun.com/jstl/fmt` - **前缀**...

    JSTL(JSP标准标签库)介绍.doc

    2. **XML处理标签库(XML processing)** 这个库主要用于XML文档的处理,如XSLT转换、XML节点的操作等。标签如`&lt;x:parse&gt;`用于解析XML文档,`&lt;x:out&gt;`用于输出XML内容。 3. **国际化格式化标签库(I18N capable ...

    JSTL详解--Core 标签库介绍

    在JSTL 1.1中,Core库是五个可用标签库之一,包括Core、XML Processing、I18N Formatting、Database Access和Functions库。每个库都有其特定的URI和前缀,例如Core库的URI为`http://java.sun.com/jsp/jstl/core`,...

    jstl标签使用的总结心得

    2. XML processing库:用于处理XML文档,如解析、验证和操作XML数据。`&lt;x:parse&gt;`、`&lt;x:transform&gt;`等标签可以帮助开发者进行XML操作。 3. I18N capable formatting库(国际化格式化库):提供日期、时间、数字的...

    JSTL详解--标签库介绍.doc

    2. **XML processing标签库**:专门用于处理XML文档。 3. **I18N formatting标签库**:支持国际化与格式化功能。 4. **Database access标签库**:用于数据库访问操作。 5. **Functions标签库**:包含一系列通用函数...

    JSTL标签库的介绍

    - **XML processing标签库**:处理XML文档,如解析、验证和转换。 - **I18N capable formatting标签库**(fmt):支持国际化和格式化输出。 - **Database access (SQL)标签库**:用于JSP页面与数据库的交互,执行...

    jstl标签库的介绍

    【JSTL标签库介绍】 JSTL,全称JavaServer Pages Standard Tag Library,是一个开源的JSP标签库,由Apache Jakarta项目维护。这个库旨在提高JSP开发的效率和可读性,通过提供一系列预定义的标签,使得开发者可以...

    详细讲解的jstl标签库

    2. **XML processing 标签**:用于处理XML文档。 3. **I18N capable formatting 标签**:支持国际化和格式化。 4. **Database access (SQL) 标签**:提供数据库操作接口。 #### EL (Expression Language) 介绍 EL ...

    jstl里操作xml的包

    在Java世界中,JSTL(JavaServer Pages Standard Tag Library)是一个标准标签库,它提供了一系列的标签来简化JSP页面中的常见任务,包括XML处理。JSTL的XML部分称为JSTL XML(JSTL XML Core),它允许开发者在JSP...

    jstl标签介绍,jstl标签学习

    - **支持XML处理**:JSTL可以很好地处理XML文档,与JAXP(Java API for XML Processing)结合使用。 在实际项目中,通常与EL(Expression Language)一起使用,EL负责表达式计算,而JSTL则处理控制流和输出。两者...

    JSTL--Core标签详解

    在JSTL 1.1版本中,提供了五个主要的标签库,分别是Core、XML processing、I18N formatting、Database access和Functions。每个库都有特定的URI和前缀,方便在JSP页面中引用。 Core标签库是JSTL的基础,包含了处理...

    JSTL(JSP标准标签库)介绍

    2. **XML processing**: 提供处理XML文档的标签,帮助开发者解析和操作XML数据。 - `&lt;x:parse&gt;` 用于解析XML字符串 - `&lt;x:transform&gt;` 用于XSLT转换 - `&lt;x:out&gt;` 显示XML数据 3. **I18N capable formatting**: ...

    jsp标准标签库使用指南

    2. **XML处理标签库(XML processing)**:用于解析和操作XML文档。 - URI前缀:`http://java.sun.com/jstl/xml` - 标签名前缀:`x:` 3. **国际化与格式化标签库(I18N capable formatting)**:提供日期、数字等...

    JSP网页编程JSTL标签

    2. **XML Processing** - 支持XML文档的处理。 3. **Internationalization and Formatting** - 提供国际化和格式化功能。 4. **Database Access (SQL)** - 支持JSP页面对数据库的操作。 #### Core标签库详解 本文...

    java jstl学习详解过程

    - **XML processing 标签库**:处理 XML 数据。 - **I18N formatting 标签库**:处理国际化格式化问题。 - **Database access 标签库**:提供数据库访问能力。 - **Functions 标签库**:提供常用函数。 每个标签库...

Global site tag (gtag.js) - Google Analytics