上期我們學習了XSL元素<xsl:if>,已能通過測試XML數(shù)據(jù)的值來決定不同的輸出形式,不知你嘗試過沒有,實際上<xsl:for-each>也可部分實現(xiàn)<xsl:if>的功能,但有時,我們希望對同一數(shù)據(jù)同時測試多個條件,根據(jù)不同條件輸出相應結果。當然,我們可以用if,假如我們只有if可用的話。幸好我們有一個更好的選擇,那就是用<xsl:choose>。下面介紹相關元素的語法:
<xsl:choose>
語法:<xsl:choose>
屬性:無,表示一個多選測試的開始
<xsl:when>
語法:
<xsl:when expr="script-expression" language="language-name" test="pattern">
屬性:
expr ── 腳本語言表達式,計算結果為"真"或"假";如果結果為"真",且通過test,則在輸出中顯示其中內(nèi)容(可省略此項屬性)。
language ── expr屬性中表達式的腳本語言類型,其取值與HTML標記SCRIPT的LANGUAGE屬性的取值相同,缺省為"JScript"。
test ── 源數(shù)據(jù)測試條件。
<xsl:otherwise>
語法:<xsl:otherwise>
屬性:無,在一個多選測試中,如果沒有不滿足<xsl:when>規(guī)定的條件,如果在最后有此標記,則輸出此標記中的內(nèi)容。
示例:
此處以學生成績單為例,要求按成績的高低給出優(yōu)秀( >85)、一般(70~85)、及格(60~69)、不及格(< 60),而不是顯示分數(shù)。其中成績單的XML文檔(文件名:grade.xml)如下:
<?xml version="1.0" encoding="GB2312"?> <?xml-stylesheet type="text/xsl" href="grade.xsl"?> <document> <grade> <name>大胖</name> <english>80</english> <math>90</math> <chymest>90</chymest> </grade> <grade> <name>小花</name> <english>98</english> <math>70</math> <chymest>85</chymest> </grade> </document>
為實現(xiàn)按分數(shù)分等級顯示,其XSL文檔(文件名:grade.xsl)內(nèi)容如下:
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <HTML> <HEAD><TITLE>成績單</TITLE></HEAD> <BODY> <xsl:apply-templates select="document"/> </BODY> </HTML> </xsl:template>
<xsl:template match="document"> <TABLE border="1" cellspacing="0"> <TH>姓名</TH><TH>英語</TH><TH>數(shù)學</TH><TH>化學</TH> <xsl:apply-templates select="grade"/> </TABLE> </xsl:template>
<xsl:template match="grade"> <TR> <TD><xsl:apply-templates select="name"/></TD> <TD><xsl:apply-templates select="english"/></TD> <TD><xsl:apply-templates select="math"/></TD> <TD><xsl:apply-templates select="chymest"/></TD> </TR> </xsl:template>
<xsl:template match="name"> <xsl:value-of/> </xsl:template>
<xsl:template match="english|math|chymest"> <xsl:choose> <xsl:when test=".[value()$gt$85]">優(yōu)秀</xsl:when> <xsl:when test=".[value()$gt$70]">一般</xsl:when> <xsl:when test=".[value()$gt$60]">起格</xsl:when> <xsl:otherwise>不起格</xsl:otherwise> </xsl:choose> </xsl:template>
</xsl:stylesheet>
上例在瀏覽器中的樣子(IE5.0或更新版本)
說明:在<xsl:choose>選擇中,從第一個<xsl:when>開始,逐個測試,直到滿足一個測試條件就將其中的內(nèi)容輸出,不再測試后面的條件;如果不滿足任何一個條件,則輸出<xsl:otherwise>中的內(nèi)容。
標記對<xsl:when></xsl:when>與<xsl:otherwise></xsl:otherwise>中可嵌套<xsl:if>或<xsl:choose>。
出處:CSDN
責任編輯:panliu888
上一頁 測試模式 下一頁
◎進入論壇網(wǎng)頁制作、網(wǎng)站綜合版塊參加討論
|