跟我学XSL(四)

本文介绍了XML技术数据输出可选择性,重点讲解XSL中<xsl:if>元素。阐述其语法结构、属性,通过报表示例展示如何结合XSL模板编写XSL文档,实现按条件输出,还说明了相关运算符、函数等知识,下期将学习XSL另外三个元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试模式 

  XML技术的优势之一就在于数据输出的可选择性,即选择需要的数据输出。前面我们所讲到的选择模式语句:<xsl:for-each>、<xsl:value-of>及<xsl:apply-template>只是简单的选取通过”/”符号层层到达的节点,如果我们对XML数据不需要全部输出,而只需要其中的满足某条件的部分数据,“萝卜青菜、各取所需“,那么条件判断<xsl:if>与多条件判断<xsl:choose>及<xsl:when>则迎合了这种需要,如果你对程序设计熟悉的话,会觉得它们似曾相识。 

XSL中的IF,首先,介绍XSL元素<xsl:if>的语法结构: 

<xsl:if> 

语法: 

<xsl:if expr="script-expression" language="language-name" test="pattern"> 

属性: 

  expr ──脚本语言表达式,计算结果为“真”或“假”;如果结果为“真”,且通过test,则在输出中显示其中内容(可省略此项属性)。 

  language ──expr属性中表达式的脚本语言类型,其取值与HTML标记SCRIPT的LANGUAGE属性的取值相同,缺省为“JScript”test ──源数据测试条件。 

示例: 

此处以一份报表为例,文件名为report.xml,其内容如下: 

<?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模板结合今天所学的<xsl:if>,为其编写一个XSL文档,要求季度产量小于等于20的用红色表示,文件名为report.xsl,内容如下: 

<?xml version="1.0" encoding="GB2312"?> 

<xsl:stylesheet xmlns:xsl=" ' target=_blank>http://www.w3.org/TR/WD-xsl"> 

<xsl:template match="/"> 

<HTML><HEAD><TITLE>1999年生产统计</TITLE></HEAD> 

<BODY><xsl:apply-templates select="document ;"/></BODY> 

</HTML> 

</xsl:template> 

<xsl:template match="document"> 

<H3>1999年生产统计</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"> 

<!--此处测试产量,如小于等于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> 

说明: 

q1|q2|q3|q4 ──标记q1、q2、q3、q3均用此模板确定输出 

$le$ ──是关系运算符中的“小于等于”,其它关系有小于($lt$)、大于($gt$)、大于等于($ge$)、等于($eq$)、不等于($ne$)等 

. ──表示引用当前标记 

[ ] ──表示筛选,只有满足筛选条件的标记才能被选取 

value() ──XSL函数,其他常用XSL函数有text()、end()、index()等。 

  下期,我们将学习XSL的另外三个元素,可对同一数据进行多次测试,根据不同条件产生相应输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值