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>

posted @ 2007-07-28 10:04  PointNet  阅读(855)  评论(1编辑  收藏  举报