220 likes | 299 Views
13.3 XML 标签库及其它. JSP 视频教学课程. 目录. 1. XML 标签库. 2. 格式化 / 国际化标签库. 3. 数据库标签库. 4. 函数标签库. 1. XML 标签库. JSTL 的 XML 标签库为程序设计者提供了基本的对 XML 格式文件的操作, XML 标签分为三类,分别是: XML 核心标签: <x:parse> 、 <x:out> 、 <x:set>
E N D
13.3 XML标签库及其它 JSP 视频教学课程
目录 1. XML标签库 2. 格式化/国际化标签库 3. 数据库标签库 4. 函数标签库
1. XML标签库 • JSTL的XML标签库为程序设计者提供了基本的对 XML 格式文件的操作,XML标签分为三类,分别是: • XML 核心标签: <x:parse> 、 <x:out> 、 <x:set> • XML 流控制标签: <x:if> 、 <x:choose> 、 <x:when> 、 <x:otherwise> 、 <x:forEach> • XML 转换标签: <x:transform> 、 <x:param> • 要使用XML标签需要在JSP文件的首部添加如下语句: • <%@ taglib prefix=”x” uri=”http://java.sun.com/jsp/jstl/xml”%>
1.1 x:parse标签 <x:parse>标签用来解析XML文件。其语法有如下两种: 语法一: <x:parse {doc=”xmldocument”|xml=”xmldocument”} {var=”varName” [scope=”page|request|session|application”]| varDom=”varName” [scopeDom=” page|request|session|application”]} [systemId=”systemId”] [filter=”filter”]/> 或 <x:parse {var=”varName” [scope=”page|request|session|application”]| varDom=”varName” [scopeDom=” page|request|session|application”]} [systemId=”systemId”] [filter=”filter”]> XMLDocument </x:parse>
1.1 x:parse标签 • 两种形式的区别在于,第二种形式;把XMLDocument写在标签体中。参数XMLDocument是要解析的XML文件内容。其属性描述如下所示。
1.1 x:parse标签 • 其中,var、scope和varDom、scopeDom不应该同时出现,而应该被视为两个版本来使用,二者的变量都可以被 XML processing 标签库的其他标签来使用。 • 注意:var和varDom均用于存储解析后XML文件的范围变量名,但两者还是有区别的,var属性的类型取决于实现的方式,而varDom属性的类型为org.w3c.dom.Document。 • <x:parse>标签常与<c:import>标签配合使用,如: <c:import var=”testPI” url=”user.xml”/> <x:parse doc=”${testPI}” var=”testXML/> 或: <x:parse var=”testXML”> <c:import url=”user.xml”/> </x:parse>
1.2 x:out标签 • <x:out>标签用于根据XPath表达式输出XML文件中的内容,语法如下: <x:out select=”XPathExpression” [escapeXML=”true|false”]/> • 其中,参数XPathExpression为XPath表达式,escapeXML默认值为true,即转换字符”<”, “<”, “&”, “””为实体代码,转换情况参考表11.3,设置为false则不转换。
11.3.4 <x:set>标签 • <x:set>标签用于把XML文件中的部分内容存放到一个变量中,其语法如下: <x:set select=”XPathExpression” var=”varName” [scope=”page|request|session|application”]/> • 其中参数XPathExpression为XPath表达式,参数varName存放根据XPathExpression从XML文件中取出的内容,scope设定varName的有效范围。 • 用<x:set>标签取出内容后,可用<c:out>标签输出,而不必再使用<x:out标签输出>。
1.2 x:if标签 • <x:if>标签的功能与<c:if>类似,用于对XPath表达式做出判断,其语法如下: <x:if select=”XPathExpression” var=”varName” [scope=”page|request|session|application”]/> 或: <x:if select=”XPathExpression” var=”varName” [scope=”page|request|session|application”]> XPathExpression表达式为真时执行的标签语句,Java程序,HTML代码等。 </x:if> • 其中,XPathExpression为要判断的XPath表达式,参数varName存放XPath表达式的结果,scope设定varName的有效范围。 • 例如:当存在item的id属性为1的节点时输出right! <x:if select="$sampleXML/goods/item[@id=1]/name"> right! </x:if>
1.3 <x:choose>、<x:when>和<x:otherwise>标签 • 这三个标签的功能类似于<c:choose>、<c:when>和<c:otherwise>,所不同的是,<x:choose>、<x:when>和<x:otherwise>做出判断时使用的是XPath表达式。其语法如下: <x:choose> <x:when>和<x:otherwise>语句 </x:choose> <x:when>标签的语法如下: <x:when select=”XPathExpression”> 标签语句,Java语句或HTML代码等 </x:when>
1.3 <x:choose>、<x:when>和<x:otherwise>标签 • 例如:当存在item的id属性为1的节点时输出right!,否则输出wrong <x:choose> <x:when select="$sampleXML/goods/item[@id=1]/name"> right! </x:when> <x:otherwise> wrong! </x:otherwise> </x:choose>
1.4 x:foreach标签 • <x:forEach>标签功能与<c:forEach>相似,但<x:forEach>标签是专门针对XML文件的内容。其语法如下: <x:forEach select=”XPathExpression” [var=”varName”] [varStatrs=”varStatusName”] [begain=”begin”] [end=”end”] [step=”step”]> 标签语句,Java语句或HTML代码等 </x:forEach> • 其参数的含义可参考前面的<c:forEach>标签。
1.5 x:transform标签 • <x:transform>标签用来通过XSL样式表(xslstylesheet)对一篇XML文件执行转换,<x:transform>标签支持多种格式的语法,如下所示。 • 第一种语法:不含有body内容时 <x:transform doc=”xmldocument”" xslt="xslt" [docSystemId=” docsystemid”] [xsltSystemId=” xsltsystemid”] [var="varName" scope="page|request|session|application"]|result=”result”/>
1.5 x:transform标签 • 第二种语法:含有body内容以指定参数时 <x:transform doc=”xmldocument”" xslt="xslt" [docSystemId=” docsystemid”] [xsltSystemId=” xsltsystemid”] [var="varName" scope="page|request|session|application"]|result=”result”> <x:param name="name1" value="value1"/> ………… <x:param name="nameN“ value="valueN"/> </x:transform> • 第三种语法:含有body内容以指定需解析的XML文件及可选参数时 <x:transform xslt="xslt" [docSystemId=” docsystemid”] [xsltSystemId=” xsltsystemid”] [var="varName" scope="page|request|session|application"]|result=”result”> ………… </x:transform>
1.5 x:transform标签 • <x:transform>标签的属性描述如下所示
1.5 x:transform标签 • 其中,doc的属性类型主要有以下几种:包含XML文件的字符串、接收XML文件的Reader、采用org.w3c.dom.Document或javax.xml.transform.Source类的实例以及<x:parse>、<x:set>标签返回的变量值。 • 例如: <c:import var="xmlDoc" url="${xmlUrl}" /> <c:import var="xsltStyleSheet" url="${xsltUrl}" /> <x:transform doc="${xmlDoc}" xslt="${xsltStyleSheet}">
2. JSTL的格式化/国际化标签库 • JSTL的国际化格式(I18N)标签库是JSTL的一项重要标签,可以实现国际化支持功能,可以根据不同的语言请求作出不同的相应。 • JSTL的国际化格式标签库包括国际化,消息和数字日期格式化: (1)国际化:<fmt:setLocale>, <fmt:requestEncoding>。 (2)消息:<fmt:bundle>, <fmt:setBundle>, <fmt:message>,<fmt:param>。 (3)数字日期格式化:<fmt:formatNumber>, <fmt:formatDate>, <fmt:parseDate>, <fmt:parseNumber>, <fmt:timeZone>, <fmt:setTimeZone>。 • 要使用I18N国际化格式标签需要在JSP文件的首部添加如下语句: <%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt”%>
3. SQL标签库 • JSTL提供了一些与数据库操作相关的标签,它们是:<sql:setDateSource>, <sql:query>, <sql:update>, <sql:dateParam>, <sql:param>和<sql:transaction>。用JSTL的SQL标签库可以直接存取数据库,但是由于SQL标签把业务层逻辑、数据层和操作层逻辑都封装其中,是信息系统的层次逻辑性不清晰,而且没有连接池功能,所以只适合小型的网站,在大型项目中不建议使用这些标签,因此,此处不再详细介绍。 • 要使用SQL标签库的标签需要在JSP文件的首部添加如下语句: <%@ taglib prefix=”sql” uri=”http://java.sun.com/jsp/jstl/sql”%>
3. SQL标签库 • SQL标签库标签及其说明如下:
4. 函数标签库 • 在JSTL1.1中,除了以上介绍的常用标签外,还增加了许多用于字符串处理的标准EL函数,这些函数称为函数标签。 • 要使用函数标签库的标签需要在JSP文件的首部添加如下语句: <%@ taglib prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions”%>
4. 函数标签库 • 函数标签库标签及其说明如下:
谢谢收看! JSP 视频教学课程