推薦博客:http://blog.sina.com.cn/s/blog_4f925fc30101820u.html
XML標簽庫
JSTL提供了操作xml文件的標簽庫,使用xml標簽庫可以省去使用Dom和SAX標簽庫的繁瑣,能輕松的讀取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 |
指定var的JSP范圍 |
否 |
String |
否 |
page |
varDom |
以(org.w3c.dom.Doucemet)的形式存儲解析的xml文件 |
否 |
String |
否 |
無 |
scopeDom |
指定varDom的JSP范圍 |
否 |
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”>
【參數說明】:
(1)select通過指定的XPath表達式語句獲取節點的值。
(2)var指定用於存儲值的變量名。
(3)指定var的JSP屬性范圍。
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>標簽根據條件表達式的結果決定是否執行本體內的代碼。
【參數說明】:
(1)select用來指定使用的XpathExperssion表達式。
(2)var設定標量名用來存儲表達式的結果。
(3)scope指定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>標簽
使用該標簽可以輕松的實現xml到XSLT的轉化。
【語法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>
【參數說明】:
(1)name指定參數的名稱。
(2)value指定參數值。