JSTL XML標簽庫 使用


推薦博客:http://blog.sina.com.cn/s/blog_4f925fc30101820u.html

XML標簽庫

JSTL提供了操作xml文件的標簽庫,使用xml標簽庫可以省去使用DomSAX標簽庫的繁瑣,能輕松的讀取xml文件的內容。

1 XML核心標簽庫

1<x:parse>標簽

<x:parse/>標簽用來解析指定的xml文件。

【語法1】:

<x:parse doc=”xmlDocument”

{var=”name”[scope=”page|request|session|application”]|varDom=”name”[scope=”page|request|session|application”]}

systemId=”systemId”

filter=”filter”

/>

【語法2】:

<x:parse

{var=”name”[scope=”page|request|session|application”]|varDom=”name”[scope=”page|request|session|application”]}

systemId=”systemId”

filter=”filter”

xmlDocument

</x:parse>

【參數說明】:見表9-20

9-20 <x:parse>標簽屬性說明

屬性名

說明

EL

類型

必須

默認值

doc

指定解析的xml文件

String/Reader

var

存儲解析后的xml文件

String

scope

指定varJSP范圍

String

page

varDom

以(org.w3c.dom.Doucemet)的形式存儲解析的xml文件

String

scopeDom

指定varDomJSP范圍

String

page

systemId

xml文件的url

String

filter

解析xml文件的過濾器

Org.xml.sax.Filter

提示:doc指定解析的xml文件並不是指定xml文件的路徑,而是同<c:import>共同使用,由<c:import>加載並存儲,然后使用<x:parse>解析。

例如:如果解析person.xml文件需要通過如下代碼實現對xml文件的解析。

<c:import var="docString" url="person.xml"/><!--引入person.xml文件-->

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

<c:import>語句用來導入或存儲文件到JSP。如果不使用var來存儲,xml文件將顯式的出現在JSP文件中。

<x:parse>標簽只用來解析xml文件,並不顯示xml文件中的內容,如果想得到xml的節點元素或值需要使用<x:out>元素來實現。

2<x:out>標簽

<x:out>標簽主要用來輸出xml的信息。

【語法】:

<x:out select=”XpathExperssion”[excapeXml=”true|false”]>

【參數說明】:見表9-21

9-21 <x:out>標簽屬性說明

屬性名

說明

EL

類型

必須

默認值

select

指定使用的XPath語句

String

escapeXml

是否轉換特殊字符。如<

boolean

true

提示:使用XPath語句需要用到xalan.jar支持包,可以從示例程序的lib中獲取,獲得直接從myEclipse中可以找到。

【示例代碼】:

3<x:set>標簽

<x:set>標簽用於將從xml文件節點解析的內容存儲到JSP屬性范圍中。

【語法】:

<x:set select=”XPathExperssion” var=”name” scope=”page|request|session|application”>

【參數說明】:

1select通過指定的XPath表達式語句獲取節點的值。

2var指定用於存儲值的變量名。

3)指定varJSP屬性范圍。

2 XML流程控制

使用xml標簽庫的流程控制標簽可以迭代處理xml文件的內容,流程控制可以分為以下兩個方面的內容:

1)條件判斷。

2)循環功能。

1<x:if>

<x:if>主要用於條件判斷。

【語法1】:未含有本體內容。

<x:if select=”XPathExperssion” var=”name”[scope=”page|request|session|application”]/>

【語法2】:含有本體內容。

<x:if select=”XPathExperssion” var=”name”[scope=”page|request|session|application”]

本體內容

</x:if>

語法1只把根據條件表達式得到的結果的存儲在JSP范圍中,語法2根據<x:if>標簽根據條件表達式的結果決定是否執行本體內的代碼。

【參數說明】:

1select用來指定使用的XpathExperssion表達式。

2var設定標量名用來存儲表達式的結果。

3scope指定var存儲的JSP屬性范圍。

2<x:choose><x:when><x:otherwise>標簽

同核心標簽庫的<c:choose><c:when><c:otherwise>標簽作用相似,只是使用的條件表達式不同。

<x;choose>是主標簽,<x:when><x:otherwise>放在<x:choose>標簽體內共同使用。

【語法】:

<x:choose>

<x:when>

<x:when>

<x:otherwise>

</x:choose>

其中只有<x:when>有屬性。

【語法】:

<x:when select=”XPathExperssion”>

3<x:forEach>標簽

<x;forEach>標簽實現了對xml文檔的遍歷。

【語法】:

<x:forEach select=”XPathExperssion”[var=”name”][varStartus=”StartusName”]

[begin=”begin”][end=”end”][step=”step”]

//標簽主體

</x:forEach>

【參數說明】:見表9-22

9-22 <x:forEach>標簽屬性說明

屬性名

說明

EL

類型

必須

默認值

select

指定使用的XPath語句

String

var

用於存儲表達式的結果

String

varStatus

用來存放循環到的變量的相關信息

String

begin

循環的起始位置

int

end

循環的終止位置

int

3 xml的文件轉換

<x:transform><x:param>能輕易使用XSLT樣式包裝xml文件,成為另一種顯示方式。

1<x:transform>標簽

使用該標簽可以輕松的實現xmlXSLT的轉化。

【語法1】:

<x:transform doc=”xmldoc” xslt=”XSLTStytlesheet”[docSystemId=”xmlsystemid”]

[result=”result”]

[var=”name”]

[scope=”scopeName”]

[xsltSystemId=”xsltsystemid”]/>

【語法2】:

<x:transform doc=”xmldoc” xslt=”XSLTStytlesheet”[docSystemId=”xmlsystemid”]

[result=”result”]

[var=”name”]

[scope=”scopeName”]

[xsltSystemId=”xsltsystemid”]

<x:param/>

</x:transform>

【語法3】:

<x:transform doc=”xmldoc” xslt=”XSLTStytlesheet”[docSystemId=”xmlsystemid”]

[result=”result”]

[var=”name”]

[scope=”scopeName”]

[xsltSystemId=”xsltsystemid”]

Xml文件內容

<x:param/>

</x:transform>

【參數說明】:見表9-23

9-23 <x:transform>標簽屬性說明

屬性名

說明

EL

類型

必須

默認值

doc

指定xml文件來源

String

xslt

轉化xml的樣式模板

String

docSystemId

xml文件的URI

String

xsltSystemId

xslt文件的URI

String

result

用來存儲轉換后的結果對象

java.xml.transform

var

org.w3c.dom.Documet類型存儲轉換后的結果

String

scope

var的屬性范圍

String

2<x:param>標簽

該標簽用來為<x:transform>標簽轉換參數。

【語法1】:

<x:param name=”name” value=”value”/>

【語法2】:

<x:param name=”name” value=”value”

Value

</x:param>

【參數說明】:

1name指定參數的名稱。

2value指定參數值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM