DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 跟我學XSL(5)XSL中的choose
跟我學XSL(5)XSL中的choose
編輯:XML詳解     

上期我們學習了XSL元素<xsl:if>,已能通過測試XML數據的值來決定不同的輸出形式,不知你嘗試過沒有,實際上<xsl:for-each>也可部分實現<xsl:if>的功能,但有時,我們希望對同一數據同時測試多個條件,根據不同條件輸出相應結果。當然,我們可以用if,假如我們只有if可用的話。幸好我們有一個更好的選擇,那就是用<xsl:choose>。下面介紹相關元素的語法:
  <xsl:choose>
  語法:<xsl:choose>
  屬性:無,表示一個多選測試的開始

  <xsl:when>
  語法:
<xsl:when expr="script-expression" language="language-name" test="pattern">
  屬性:
  expr ── 腳本語言表達式,計算結果為"真"或"假";如果結果為"真",且通過test,則在輸出中顯示其中內容(可省略此項屬性)。
  language ── expr屬性中表達式的腳本語言類型,其取值與Html標記SCRIPT的LANGUAGE屬性的取值相同,缺省為"JScript"。
  test ── 源數據測試條件。

  <xsl:otherwise>
  語法:<xsl:otherwise>
  屬性:無,在一個多選測試中,如果沒有不滿足<xsl:when>規定的條件,如果在最後有此標記,則輸出此標記中的內容。

  示例:

  此處以學生成績單為例,要求按成績的高低給出優秀( >85)、一般(70~85)、及格(60~69)、不及格(< 60),而不是顯示分數。其中成績單的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>

 為實現按分數分等級顯示,其XSL文檔(文件名:grade.xsl)內容如下:

  <?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>數學</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]">優秀</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>開始,逐個測試,直到滿足一個測試條件就將其中的內容輸出,不再測試後面的條件;如果不滿足任何一個條件,則輸出<xsl:otherwise>中的內容。
  標記對<xsl:when></xsl:when>與<xsl:otherwise></xsl:otherwise>中可嵌套<xsl:if>或<xsl:choose>。


 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved