当前位置: 首页 > 图文教程 > XML家族 > XML > XSL基础教程第四章

XML
XML简易教程之四
XML与HTML的结合(上)
XML与HTML的结合(下)
XML入门的常见问题(一)
XML入门的常见问题(二)
XMLHTTP资料
什么是XML
什么是 XML Web Service
XML正在接管Web服务 成为SOA的基础
怎么样在网页上读取远程xml的数据
XML教程—编写结构完整的XML文档
读写xml文件的2个小函数
XML文档的基本操作
初学者如何开发出一个高质量的J2EE系统
优化 JavaScript 代码
自动更新程序的设计框架
使Firefox对XML的处理兼容IE的节点处理方法
WML学习之四 锚和任务
WML学习之五 显示表单
WML学习之六 事件

XML 中的 XSL基础教程第四章


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 45 ::
收藏到网摘: n/a

 

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过滤器查询

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>