XML技術(shù)的優(yōu)勢(shì)之一就在于數(shù)據(jù)輸出的可選擇性,即選擇需要的數(shù)據(jù)輸出。前面我們所講到的選擇模式語(yǔ)句:<xsl:for-each>、<xsl:value-of>及<xsl:apply-template>只是簡(jiǎn)單的選取通過(guò)"/"符號(hào)層層到達(dá)的節(jié)點(diǎn),如果我們對(duì)XML數(shù)據(jù)不需要全部輸出,而只需要其中的滿足某條件的部分?jǐn)?shù)據(jù),"蘿卜青菜、各取所需",那么條件判斷<xsl:if>與多條件判斷<xsl:choose>及<xsl:when>則迎合了這種需要,如果你對(duì)程序設(shè)計(jì)熟悉的話,會(huì)覺(jué)得它們似曾相識(shí)。
XSL中的IF,首先,介紹XSL元素<xsl:if>的語(yǔ)法結(jié)構(gòu):
語(yǔ)法:
<xsl:if expr="script-expression" language="language-name" test="pattern">
屬性:
expr ── 腳本語(yǔ)言表達(dá)式,計(jì)算結(jié)果為"真"或"假";如果結(jié)果為"真",且通過(guò)test,則在輸出中顯示其中內(nèi)容(可省略此項(xiàng)屬性)。
language ── expr屬性中表達(dá)式的腳本語(yǔ)言類型,其取值與HTML標(biāo)記SCRIPT的LANGUAGE屬性的取值相同,缺省為"JScript"。
test ──源數(shù)據(jù)測(cè)試條件。
示例:
此處以一份報(bào)表為例,文件名為report.xml,其內(nèi)容如下:
<?xml version="1.0" encoding="GB2312"?> <?xml-stylesheet type="text/xsl" href="report.xsl"?> <document>
<report> <class> 甲班 </class> <q1>50</q1> <q2>70</q2> <q3>30</q3> <q4>10</q4> </report>
<report> <class> 乙班 </class> <q1>20</q1> <q2>30</q2> <q3>40</q3> <q4>50</q4> </report>
<report> <class> 丙班 </class> <q1>70</q1> <q2>40</q2> <q3>20</q3> <q4>10</q4> </report>
</document>
我們采用XSL模板結(jié)合今天所學(xué)的<xsl:if>,為其編寫(xiě)一個(gè)XSL文檔,要求季度產(chǎn)量小于等于20的用紅色表示,文件名為report.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>1999年生產(chǎn)統(tǒng)計(jì)</TITLE></HEAD> <BODY><xsl:apply-templates select="document"/></BODY> </HTML> </xsl:template>
<xsl:template match="document"> <H3>1999年生產(chǎn)統(tǒng)計(jì)</H3> <TABLE border="1" cellspacing="0"> <TH>班組</TH> <TH>一季度</TH> <TH>二季度</TH> <TH>三季度</TH> <TH>四季度</TH> <xsl:apply-templates select="report"/> </TABLE> </xsl:template>
<xsl:template match="report"> <TR> <TD><xsl:value-of select="class"/></TD> <TD><xsl:apply-templates select="q1"/></TD> <TD><xsl:apply-templates select="q2"/></TD> <TD><xsl:apply-templates select="q3"/></TD> <TD><xsl:apply-templates select="q4"/></TD> </TR> </xsl:template>
<xsl:template match="q1|q2|q3|q4"> <!--此處測(cè)試產(chǎn)量,如小于等于20則添加一STYLE屬性color,其值為red(紅色)--> <xsl:if test=".[value()$le$20]"> <xsl:attribute name="style">color:red</xsl:attribute> </xsl:if> <xsl:value-of/> </xsl:template>
</xsl:stylesheet>
上例在瀏覽器中的樣子(IE5.0或更新版本)
說(shuō)明:
q1|q2|q3|q4 ── 標(biāo)記q1、q2、q3、q3均用此模板確定輸出
$le$ ── 是關(guān)系運(yùn)算符中的"小于等于",其它關(guān)系有小于($lt$)、大于($gt$)、大于等于($ge$)、等于($eq$)、不等于($ne$)等。
. ── 表示引用當(dāng)前標(biāo)記。
[ ] ── 表示篩選,只有滿足篩選條件的標(biāo)記才能被選取。
value() ──XSL函數(shù),其他常用XSL函數(shù)有text()、end()、index()等。
下期,我們將學(xué)習(xí)XSL的另外三個(gè)元素,可對(duì)同一數(shù)據(jù)進(jìn)行多次測(cè)試,根據(jù)不同條件產(chǎn)生相應(yīng)輸出。
出處:CSDN
責(zé)任編輯:panliu888
上一頁(yè) XSL模板與匹配模式 下一頁(yè) XSL中的choose
◎進(jìn)入論壇網(wǎng)頁(yè)制作、網(wǎng)站綜合版塊參加討論
|