新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国XML论坛<<     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → XSL 简明教程 (下) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 17040 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: XSL 简明教程 (下) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     anchen0617 帅哥哟,离线,有人找我吗?双子座1983-6-17
      
      
      威望:5
      等级:大二(研究C++)
      文章:281
      积分:3413
      门派:XML.ORG.CN
      注册:2004/10/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anchen0617发送一个短消息 把anchen0617加入好友 查看anchen0617的个人资料 搜索anchen0617在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问anchen0617的主页 引用回复这个贴子 回复这个贴子 查看anchen0617的博客楼主
    发贴心情 XSL 简明教程 (下)


    五 . XSL 的索引
    章 节 导 航

    如果我需要将元素的显示按一定的顺序排列,应该如何建立 XSL的索引呢?

    我们还是来看前面的例子,还是这段代码:

    <?xml version="1.0" encoding="ISO8859-1" ?>

    <CATALOG>

    <CD>

    <TITLE>Empire Burlesque</TITLE>

    <ARTIST>Bob Dylan</ARTIST>

    <COUNTRY> USA </COUNTRY>

    <COMPANY> Columbia </COMPANY>

    <PRICE>10.90</PRICE>

    <YEAR>1985</YEAR>

    </CD>

    .

    .

    .

    当 XML文档被转换成HTML文件,索引应该同时建立。简单的办法就是给你的for-each元素增加一个order-by属性,就 象 这样:

    < xsl:for -each select="CATALOG/CD" order-by="+ ARTIST">

    order-by属性带有一个"+"或者"-" 的符号,用来定义索引的方式,是升序 还是降序排列 。符号后面的名字就是要索引的关键字。

    例如( cd_catalog_sort.xsl ):

    <?xml version='1.0'?>

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

    < xsl:template match="/">

    <html>

    <body>

    <table border="2" bgcolor ="yellow">

    < tr >

    < th >Title</ th >

    < th >Artist</ th >

    </ tr >

    < xsl:for -each select="CATALOG/CD" order-by="+ ARTIST">

    < tr >

    <td>< xsl:value -of select="TITLE"/></td>

    <td>< xsl:value -of select="ARTIST"/></td>

    </ tr >

    </ xsl:for -each>

    </table>

    </body>

    </html>

    </ xsl:template >

    </ xsl:stylesheet >

    最后,我们用下面的 HTML代码来显示索引结果,你可以自己尝试一下。

    < html >

    <body>

    <script language=" javascript ">

    // Load XML

    var xml = new ActiveXObject (" Microsoft.XMLDOM ")

    xml.async = false

    xml.load (" cd_catalog.xml ")

    // Load the XSL

    var xsl = new ActiveXObject ( " Microsoft.XMLDOM ")

    xsl.async = false

    xsl.load (" cd_catalog_sort.xsl ")

    // Transform

    document.write ( xml.transformNode ( xsl ))

    </script>

    </body>

    </html>


    一 .XSL 入 门

    二 .XSL的转换

    三 .XSL--在客户端的实现

    四 .XSL --- 在服务器端的实现


    五 . XSL 的索引

    六 . XSL的过滤和查询

    七 . XSL 的控制语句

      

    六 . XSL的过滤和查询 章 节 导 航
    如果我们希望只显示满足一定的条件的 XML数据应该怎么做呢?还是上面的例子代码,我们只需要在 xsl:for -each元素的select属性中加入参数就可以,类似:

    < xsl:for -each select="CATALOG/CD[ARTIST='Bob Dylan']">

    参数的逻辑选择有:

    = (等于)

    =! (不等于)

    &LT& 小于

    &GT& 大于等于

    和前面同样的例子 ( cd_catalog_sort.xsl ):

    <?xml version='1.0'?>

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

    < xsl:template match="/">

    <html>

    <body>

    <table border="2" bgcolor ="yellow">

    < tr >

    < th >Title</ th >

    < th >Artist</ th >

    </ tr >

    < xsl:for -each select="CATALOG/CD[ARTIST='Bob Dylan']">

    < tr >

    <td>< xsl:value -of select="TITLE"/></td>

    <td>< xsl:value -of select="ARTIST"/></td>

    </ tr >

    </ xsl:for -each>

    </table>

    </body>

    </html>

    </ xsl:template >

    </ xsl:stylesheet >

    你可以自己测试一下,看到的结果有什么不同。

    一 .XSL 入 门

    二 .XSL的转换

    三 .XSL--在客户端的实现

    四 .XSL --- 在服务器端的实现


    五 . XSL 的索引

    六 . XSL的过滤和查询

    七 . XSL 的控制语句

    七 . XSL 的控制语句  章 节 导 航
    1.条件语句if...then

    XSL同样还有条件语句(呵呵~~好厉害吧, 象 程序语言一样)。具体的语法是增加一个 xsl:if 元素,类似这样

    < xsl: if match=".[ARTIST='Bob Dylan']">

    ... some output ...

    </ xsl:if >

    上面的例子改写成为:

    <?xml version='1.0'?>

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

    < xsl:template match="/">

    <html>

    <body>

    <table border="2" bgcolor ="yellow">

    < tr >

    < th >Title</ th >

    < th >Artist</ th >

    </ tr >

    < xsl:for -each select="CATALOG/CD">

    < xsl:if match=".[ARTIST='Bob Dylan']">

    < tr >

    <td>< xsl:value -of select="TITLE"/></td>

    <td>< xsl:value -of select="ARTIST"/></td>

    </ tr >

    </ xsl:if >

    </ xsl:for -each>

    </table>

    </body>

    </html>

    </ xsl:template >

    </ xsl:stylesheet >

    2. XSL 的Choose

    choose的用途是出现多个条件,给出不同显示结果。具体的语法是增加一组 xsl:choose,xsl:when,xsl:otherwise 元素:

    < xsl :choose >

    < xsl:when match=".[ARTIST='Bob Dylan']">

    ... some code ...

    </ xsl:when >

    < xsl:otherwise >

    ... some code ....

    </ xsl :otherwise >

    </ xsl:choose >

    上面的例子改写成为:

    <?xml version='1.0'?>

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

    < xsl:template match="/">

    <html>

    <body>

    <table border="2" bgcolor ="yellow">

    < tr >

    < th >Title</ th >

    < th >Artist</ th >

    </ tr >

    < xsl:for -each select="CATALOG/CD">

    < tr >

    <td>< xsl:value -of select="TITLE"/></td>

    < xsl:choose >

    < xsl:when match=".[ARTIST='Bob Dylan']">

    <td bgcolor ="#ff0000">< xsl:value -of select="ARTIST"/></td>

    </ xsl:when >

    < xsl:otherwise >

    <td>< xsl:value -of select="ARTIST"/></td>

    </ xsl:otherwise >

    </ xsl:choose >

    </ tr >

    </ xsl:for -each>

    </table>

    </body>

    </html>

    </ xsl:template >

    </ xsl:stylesheet >


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    xml这门语言太好了,我们共同努力吧!!!!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/10/26 10:43:00
     
     scil 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:35
      积分:179
      门派:XML.ORG.CN
      注册:2004/10/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给scil发送一个短消息 把scil加入好友 查看scil的个人资料 搜索scil在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看scil的博客2
    发贴心情 
    这个例子正是用得妙啊
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/10/29 15:41:00
     
     scil 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:35
      积分:179
      门派:XML.ORG.CN
      注册:2004/10/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给scil发送一个短消息 把scil加入好友 查看scil的个人资料 搜索scil在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看scil的博客3
    发贴心情 
    这个例子正是用得妙啊
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/10/29 15:41:00
     
     jimmyvk 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:66
      积分:400
      门派:XML.ORG.CN
      注册:2004/10/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jimmyvk发送一个短消息 把jimmyvk加入好友 查看jimmyvk的个人资料 搜索jimmyvk在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jimmyvk的博客4
    发贴心情 
    写的好,顶上去
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/26 12:02:00
     
     jimmyvk 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:66
      积分:400
      门派:XML.ORG.CN
      注册:2004/10/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jimmyvk发送一个短消息 把jimmyvk加入好友 查看jimmyvk的个人资料 搜索jimmyvk在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jimmyvk的博客5
    发贴心情 
    不过为什么我写的<xsl:when match=".[ARTIST='Bob Dylan']"> 和
    < xsl:if match=".[ARTIST='Bob Dylan']"> 以及
    < xsl:for -each select="CATALOG/CD" order-by="+ ARTIST">上的march属性和order-by属性不支持
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/26 13:38:00
     
     jimmyvk 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:66
      积分:400
      门派:XML.ORG.CN
      注册:2004/10/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jimmyvk发送一个短消息 把jimmyvk加入好友 查看jimmyvk的个人资料 搜索jimmyvk在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jimmyvk的博客6
    发贴心情 
    还有“大等于”和“小等于”怎么用,举个例子瞧瞧
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/26 13:45:00
     
     jimmyvk 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:66
      积分:400
      门派:XML.ORG.CN
      注册:2004/10/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jimmyvk发送一个短消息 把jimmyvk加入好友 查看jimmyvk的个人资料 搜索jimmyvk在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jimmyvk的博客7
    发贴心情 
    上面的问题已经知道了,但是<xsl:if>、<xsl:when>等问题还不是很清楚,麻烦知道的给个提示,谢谢!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/29 18:11:00
     
     bluekeke 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:72
      门派:XML.ORG.CN
      注册:2005/5/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给bluekeke发送一个短消息 把bluekeke加入好友 查看bluekeke的个人资料 搜索bluekeke在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看bluekeke的博客8
    发贴心情 
    谢谢,好东西
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/10/7 17:06:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/12/25 21:53:09

    本主题贴数8,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms