• XSL基础教程(三)


    青苹果工作室编译,转自 ccidnet 网站
    2001年03月16日
    内容:
     
    XSL索引
    XSL过滤器
    XSL条件IF
    XSL条件Choose

    XSL(eXtensible Style sheet Language),即可扩展样式表语言,是XML的亲密
    伙伴。要学习好XML,不能不掌握XSL。本文就向你全面讲述XSL的一切一切:
    XSL索引:将XML文档转换成HTML之前,如何用XML解析器来对XML文档进行索引。

    XSL索引
    XSL可以用来对一个XML文档进行索引。
    将索引信息放在哪里
    现在重新看看在以前许多章节中都曾看到过的 XML文档:

        <?xml version="1.0"?>
        <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文件输出,并且同时对它进行索引,只需
    要在XSL文件中增加一个order-by 属性,如下:
    <xsl:for-each select="CATALOG/CD" order-by="+ ARTIST">
    order-by属性使用加号(+)或减号(-)来定义是使用升序还是降序,再用一个元素
    名称来定义排序的元素。

    现在来看看经过轻微调整的XSL样式表(或在IE5中打开它):

        <?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>
    在浏览器中转换
    以下是在浏览器中将XML文件转换成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>
    如果使用的是Internet Explorer 5.0 或更高版本,请点击这里查看结果


    XSL过滤器:将XML文档转换成HTML之前,如何用XML解析器过滤XML文档。

    XSL过滤器查询
    XSL可以用来过滤一个 XML 文件。
    在哪里放置过滤器信息
    现在重新看看你以前已经看过多次的XML文档:

        <?xml version="1.0"?>
        <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文件,只需要为XSL文件中的for-each元素的选择属性增加一个过滤器,如下:
    <xsl:for-each select="CATALOG/CD[ARTIST='Bob Dylan']">

    合法的过滤器操作符是:

        = 等于
        != 不等于
        < 小于
        > 大于
    现在看看经过轻微调整的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>
    在浏览器中转换
    以下是在浏览器中将XML文件转换成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_filter.xsl")
        // Transform
        document.write(xml.transformNode(xsl))
        </script>
        </body>
        </html>



    XSL条件IF:如何让XML解析器有条件地将XML文档转换成HTML。

    XSL条件IF
    XSL可以用一个IF语句过滤来自XML文档的信息。
    在哪里放置IF条件
    现在来重新看看你已经看过多次的XML文档:

        <?xml version="1.0"?>
        <CATALOG>
          <CD>
            <TITLE>Empire Burlesque</TITLE>
            <ARTIST>Bob Dylan</ARTIST>
            <COUNTRY>USA</COUNTRY>
            <COMPANY>Columbia</COMPANY>
            <PRICE>10.90</PRICE>
            <YEAR>1985</YEAR>
          </CD>
        .
        .
        .
    要想放置一个对文件内容的条件测试if命令,只需要向XSL文档中增加一个xsl:i
    f元素,如下:
        <xsl:if match=".[ARTIST='Bob Dylan']">
        ... 一些输出...
        </xsl:if>
    现在看一下经过轻微调整的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">
              <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>
    在浏览器中转换
    以下是在浏览器中将XML文件转换成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_if.xsl")
        // Transform
        document.write(xml.transformNode(xsl))
        </script>
        </body>
        </html>

  • 相关阅读:
    [开源] FreeSql.AdminLTE 功能升级
    [开源] .NETCore websocket 即时通讯组件---ImCore
    [开源] FreeSql 配套工具,基于 Razor 模板实现最高兼容的生成器
    Redis 基础数据结构
    Keepalived 原理与实战
    反向代理与负载均衡
    Nginx 安装与配置
    CentOS 7.x编写开机启动服务
    Mac 软件包管理器Homebrew使用指北
    Springboot 关于日期时间格式化处理方式总结
  • 原文地址:https://www.cnblogs.com/goody9807/p/828330.html
Copyright © 2020-2023  润新知