精选文章 跟我学XSL(五)

跟我学XSL(五)

作者:蝈蝈俊 时间: 2001-06-01 04:33:00
蝈蝈俊 2001-06-01 04:33:00

  上期我们学习了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 >
说明:
  在< xsl:choose >选择中,从第一个< xsl:when >开始,逐个测试,直到满足一个测试条件就将其中的内容输出,不再测试后面的条件;如果不满足任何一个条件,则输出< xsl:otherwise >中的内容。
  标记对< xsl:when >< /xsl:when >与< xsl:otherwise >< /xsl:otherwise >中可嵌套< xsl:if >或< xsl:choose >。

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:跟我学XSL(六)

下一篇:跟我学XSL(四)

您可能感兴趣

  • 为什么美国程序员不用加班,而中国程序员就只能996?

    点击上方蓝色小字,关注“涛哥聊Python” 重磅干货,第一时间送达 梅宁航 发自 凹非寺 量子位 报道 | 公众号 QbitA 作者系网易新闻·网易号“各有态度”签约作者 按惯例,先问是不是,再问为什么。 从知乎回答浏览量看,是的。 那么为什么美国程序员就可以到点下班回家,而中国程序员就要每天“主动”、“无偿”加班呢? 仔细看了群众们热情的回答之后,大概可以分为几派: 1、产品经理不够通情...

  • 机器学习面试:这25个实用又有深度的问题

    机器学习面试可以有趣且有深度么? 这是你的机器学习系统? ——嗯对呀!把数据倒进这堆线性代数,然后在另一端迎接答案。 那答案是错的怎么办? ——搅一搅,拌一拌,答案就会越来越对了...

  • 没有美术功底想学3D建模可能吗?

    一 3d建模一般学多久?太长的话,我就不玩了。 3d建模学多久这个问题不是很好回答,鬼才知道你的实力怎么样,努力的态度怎么样,如果你三天打鱼两天晒网,我估计一万年也学不会。如果你全力以赴认真的学,五六个月就能很好的玩转3D建模,当然如果你想达到大神级别的水平,还得在有实力的基础上,练个两三年,毕竟高手也不是一下是高手的,曾经也是小菜鸟,想一步登天的,容易踩空,扯着大腿跟。 有的小伙伴说如果3...

  • 对警报线程池的警报线程_如何建立更好的警报

    对警报线程池的警报线程 背景 (Background) One of the most popular complaints from developers to DBAs involves alerting, whether from third party tools or alerting built by other developers or DBAs in the environ...

  • 新职业教育的三节课,凭什么做到今天这样

    历时7天、翻遍15个平台渠道、访谈25位参与课程的从业者、挖掘了136条推文的标题和内容,我们得到了12500字的拆解。可以点击右上角☝:收藏、分享、在看,不用担心看一半,找不到文章。 本文信息公开来源:三节课官方公众号、虎嗅网、36氪、深网、东方财富网、新榜、知乎、简书、增长黑盒、短书··· 我们认为,这可能比任何官方复盘更能诠释:「三节课」是如何在3年内,做到互联网职业教育(Almost...

  • 江苏谋定特色小镇-农业大健康·万祥军:旅游理念经营产业

    江苏谋定特色小镇-农业大健康·万祥军:旅游理念经营产业 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万赢信采编 :“希望各地会后抓紧时间对培育建设对象进行梳理,根据标准推荐重点对象,有计划、有步骤地组织实施,努力打造富有鲜明个性、成效显著的特色旅游小镇。”特色旅游小镇培育工作座谈会江苏省旅游局局领导詹庚庆表示,江苏省计划通过“十三五”的努力,加...

  • 乘风破浪的云原生

    作者:禾易 1、在线教育将成为常态化应用 “还要扩容吗?” “先扩容 10 倍再说” 这已经不是李诺(洋葱学院联合创始人兼 CTO)第一次提到扩容了。受到疫情影响,今年全国学校普遍延期开学。“停课不停学”,线下教育停摆,教育行业转战线上。流量突然暴涨,扩容成了“常态”,而且每次的流量还是远远超过预期。 李诺去找杨临风(洋葱学院联合创始人兼 CEO)讨论工作的时候,碰巧杨临风正在写一封给用户的...

  • 网站建设费用贵和便宜有什么区别?

    所有做过网站或者咨询过网站建设的人们都明白一个现象,就是网站建设费用差别很大,有的报价上万,有的几千,更有的报价低至几百元,这就导致人们对于网站的真正建设费用有了很模糊的理解,网站建设今天就给大家介绍一下网站建设费用的贵与便宜的差别到底在哪里。 首先,网页制作功能不同价格肯定也不同,复杂的价格自然很高,简单的自然就低。然后同一功能复杂程度的网站建设为什么价格那么便宜,到底便宜在哪里? 1、便...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。