新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   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学习笔记(一)[推荐] 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 3407 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: XSL学习笔记(一)[推荐] 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     宇宙人 帅哥哟,离线,有人找我吗?狮子座1981-8-20
      
      
      威望:4
      等级:大一新生
      文章:96
      积分:771
      门派:W3CHINA.ORG
      注册:2004/4/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给宇宙人发送一个短消息 把宇宙人加入好友 查看宇宙人的个人资料 搜索宇宙人在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看宇宙人的博客楼主
    发贴心情 XSL学习笔记(一)[推荐]

    XSL学习笔记(一)
      有人说XSL是CSS的替换者,真的吗?

      1、简介
      XSL是一种描述样式单的语言,包括XSLT、XPath和XML格式对象三部分。
      与HTML不同,XML没有预定义的标签,所以浏览器不知道如何显示XML文档,而XSL就是XML之外用以说明如何显示的。

      2、XSLT
      XSLT是一种将XML文档转换为另一种格式XML文档的语言。XML利用XSLT将源XML树转换为结果XML树。

      3、浏览器差异
      与IE6一起MSXML解析器完全支持XSLT1.0和XPath1.0,NetScape6不完全支持XSL(NS7呢?)

      4、XSL样式单
      一个XSL文件也是XML文件,所以第一行也要声明XML:


    <?xml version="1.0" encoding="ISO-8859-1"?>

      第二行XSL声明,下述声明方式是完全一致的:

    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:transform version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      当用上述命名空间时,必须有version="1.0"的说明。
      看列例子:XML文件,XSL文件,XML+XSL.

      5、<xsl:template>元素
      XSL样式单是由模板组成,每个模板就是一组规则。
      模板的match属性,用以将模板和XML中的元素关联起来。如match="/"则将此模板与XML的根关联起来了。
      
      6、<xsl:value-of>元素
      该元素用于取得选定XML节点的值。
      对节点的选取,由其select属性完成,select的值是一个XPath表达式。XPath表达式非常象*nix系统的多级目录的写法。如例中的“breakfast_menu/food”等。

      7、<xsl:for-each>元素
      完成在XSL中的循环动作。其属性select同6中所述。
      此元素可以完成简单的过滤,例如:

    <xsl:for-each select="catalog/cd[artist='Bob Dylan']">
    可用于寻找Bob Dylan的CD作品。XSL定义了四种比较运算符:=、!=、&lt、&gt,两个比较之间可以用and 或or 连接。

      8、<xsl:sort>元素
      用于对输出进行排序,只需要将其放入<xsl:for-each>以内,并用select指明比较的元素即可。

      9、<xsl:if>元素
      当指定条件满足时,<xsl:if>包含的模板将派上用场。条件的定义,由其test属性指明,其操作符同7。
      一般说来,<xsl:if>常出现在<xsl:for-each>内部。

      10、<xsl:choose>、<xsl:when>、<xsl:otherwise>元素
      三者联合,实现多条件选择,类似C语言里的case语句。如例:


    <xsl:choose>
       <xsl:when test="price &gt; 10">
          ... some code ...
       </xsl:when>
       <xsl:otherwise>
          ... some code ....
       </xsl:otherwise>
    </xsl:choose>


      10、<xsl:apply-templates>元素
      对当前元素和其子元素使用某一模板规则,象C里的递规函数,暗含着循环的功能。其用select属性指明元素。相对应的模板,则需要用match来判断传来的是什么元素,从这一点看模板象是C++里的重载函数。

      11、XSL在客户端
      当我们用浏览器打开一个引用XSL的XML文件时,浏览器在显示前做了一个将XML转换为XHTML的隐蔽动作。
      这个动作可以用Javascript在IE上显式的完成,前提是XML中不要含有对XSL的引用。代码如下:


    <script type="text/javascript">
    var xml = new ActiveXObject("Microsoft.XMLDOM")
    xml.async = false
    xml.load("cdcatalog.xml")
    var xsl = new ActiveXObject("Microsoft.XMLDOM")
    xsl.async = false
    xsl.load("cdcatalog.xsl")
    document.write(xml.transformNode(xsl))
    </script>

      12、XSL在服务器端
      对于IIS而言,可以很方便地在服务器端实现XML的转换。如下:

    <%
    set xml = Server.CreateObject("Microsoft.XMLDOM")
    xml.async = false
    xml.load(Server.MapPath("cdcatalog.xml"))
    set xsl = Server.CreateObject("Microsoft.XMLDOM")
    xsl.async = false
    xsl.load(Server.MapPath("cdcatalog.xsl"))
    Response.Write(xml.transformNode(xsl))
    %>


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    对工作,我投入;对爱情,我专一。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/5/18 16:57:00
     
     GoogleAdSense狮子座1981-8-20
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/12 17:58:09

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

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