新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   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继承(争做版主大放血) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 11760 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 小谈XSL继承(争做版主大放血) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     hexun831012 帅哥哟,离线,有人找我吗?天秤座1983-10-12
      
      
      威望:1
      等级:研二(Pi-Calculus看得一头雾水)(版主)
      文章:800
      积分:5114
      门派:XML.ORG.CN
      注册:2006/12/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hexun831012发送一个短消息 把hexun831012加入好友 查看hexun831012的个人资料 搜索hexun831012在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hexun831012的博客楼主
    发贴心情 小谈XSL继承(争做版主大放血)

    XSL支持import和include,这使XSL实现继承成为可能,import和include从功能的角度上看区别不大,但从继承的角度上看有着本质的区别。
    在说明XSL继承之前,首先要说明XSL模板的优先级问题,稍微了解XSL的人都知道,XSL的模板是自下而上进行解析的,也就是说文档下方的模板具有较高的优先级,如果文档中的模板相互交叉,那么下方的模板将覆盖上方的模板:
    <xsl:template match="*">
      <b>
        <xsl:value-of select="." />
      </b>
    </xsl:template>
    <xsl:template match="node">
      <xsl:value-of select="." />
    </xsl:template>
    这个例子最能说明问题,node节点将被下方的模板拦截,而其他节点将交给上方的模板解析,这就说明了模板的顺序对文档来说非常重要,而import和include最大的区别就在于顺序。
    import是顶级元素,它必须放在任何模板之前,这是一个良好的特性,import导入文档的模板将放在当前文档的最上方,他们的优先级相对于当前文档较低,也就是说如果模板相互交叉,那么当前文档的模板将覆盖导入文档的模板,这就是实现了重写!!!这种方式最类似于JAVA,他在默认情况下是可重写的:
    base.xsl
    <xsl:template match="text()"/>
      <xsl:value-of select="." />
    </xsl:template>
    use.xsl
    <xsl:import href="base.xsl" />
    <xsl:template match="text()"/>
      <b>
        <xsl:value-of select="." />
      </b>
    </xsl:template>
    use.xsl的text()模板覆盖了base.xsl中的模板,也就是重写,而include和import不同,它可以放在文档的任何位置,如果放在文档的最下部,那就意味着导入文档的模板的优先级高于当前文档的模板,也就是封装!!!这种方式最类似于.NET,默认情况下不可重写:
    base.xsl
    <xsl:template match="text()"/>
      <xsl:value-of select="." />
    </xsl:template>
    use.xsl
    <xsl:template match="text()"/>
      <b>
        <xsl:value-of select="." />
      </b>
    </xsl:template>
    <xsl:include href="base.xsl" />
    use.xsl的text()模板无法覆盖了base.xsl中的模板,也就是封装,如果想实现部分重写,有两种方式,第一,是手动分配模板的优先级,当然这种方式比较繁琐,还有一种方法就是把include放在文档中部,把不需要重写的放在上面,把需要重写的放在下面,当然这种情况比较少。
    我所推荐的是使用import,从逻辑上说,可重写的模式对XSL来说比较合理,对于开发人员来说,这种模式既继承了基类的模板,又不用关心基类的细节,如果文档多次继承,那么文档之间有着良好的层次结构,这就为XSL的模块化,层次化提供了可能

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/7/23 12:40:00
     
     hexun831012 帅哥哟,离线,有人找我吗?天秤座1983-10-12
      
      
      威望:1
      等级:研二(Pi-Calculus看得一头雾水)(版主)
      文章:800
      积分:5114
      门派:XML.ORG.CN
      注册:2006/12/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hexun831012发送一个短消息 把hexun831012加入好友 查看hexun831012的个人资料 搜索hexun831012在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hexun831012的博客2
    发贴心情 
    申请精华,争做版主
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/7/23 12:44:00
     
     gogy 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:66
      积分:493
      门派:XML.ORG.CN
      注册:2006/10/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gogy发送一个短消息 把gogy加入好友 查看gogy的个人资料 搜索gogy在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gogy的博客3
    发贴心情 
    才看明白你这篇文章的意思。我的个人观点就是,这篇文章除了“import是顶级元素,它必须放在任何模板之前”这句话外,通篇的理解都是有问题的。
    >>>>>>>>>
    XSL的模板是自下而上进行解析的,也就是说文档下方的模板具有较高的优先级,如果文档中的模板相互交叉,那么下方的模板将覆盖上方的模板
    <<<<<<<<<<<<
    这句话问题最大,XSLT模板的优先级是由priority属性决定的,可不是由上下顺序决定的。如果没有显式指定该属性,则有一套计算规则存在。

    >>>>>>>>>
    这个例子最能说明问题,node节点将被下方的模板拦截,而其他节点将交给上方的模板解析,这就说明了模板的顺序对文档来说非常重要
    <<<<<<<<<<<<<<<
    其实,你举的例子最不能说明问题,不要被表面现象所迷惑了。不信,你把两个模板颠倒上下顺序试试。

    <<<<<
    import是顶级元素,它必须放在任何模板之前,这是一个良好的特性,import导入文档的模板将放在当前文档的最上方,他们的优先级相对于当前文档较低,也就是说如果模板相互交叉,那么当前文档的模板将覆盖导入文档的模板,这就是实现了重写!!!这种方式最类似于JAVA,他在默认情况下是可重写的
    >>>>>>
    这可不是因为import放在前面才使得它的优先级最低,而是W3C规范这样规定的。当然import导入的模板优先级要高于默认模板的优先级。
    其他的,就不多说了,楼主不是专业的XSLT程序员,XSLT的知识还是欠缺一点。,但是,想象力很丰富。。

    所以,import和include等等,跟JAVA的继承等,没有任何关系和相似性。

    另外,欢迎讨论,

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/7/25 14:36:00
     
     hexun831012 帅哥哟,离线,有人找我吗?天秤座1983-10-12
      
      
      威望:1
      等级:研二(Pi-Calculus看得一头雾水)(版主)
      文章:800
      积分:5114
      门派:XML.ORG.CN
      注册:2006/12/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hexun831012发送一个短消息 把hexun831012加入好友 查看hexun831012的个人资料 搜索hexun831012在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hexun831012的博客4
    发贴心情 
    楼上的说话要负责任,连XSL的解析顺序都不知道,还自称专业,真是自视甚高,好好看看W3C的文档和XSL解析原理,你把代码反来试试看!
    我的确不是XSL程序员,技术实现不是我的工作重心,但就技术论技术我也不比有些人差。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/7/25 15:09:00
     
     gogy 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:66
      积分:493
      门派:XML.ORG.CN
      注册:2006/10/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gogy发送一个短消息 把gogy加入好友 查看gogy的个人资料 搜索gogy在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gogy的博客5
    发贴心情 
    生气了不是?我可没有攻击你的意思,可是你却搞人身攻击,这不好吧?

    》》》》》》
    我的个人观点就是,这篇文章除了“import是顶级元素,它必须放在任何模板之前”这句话外,通篇的理解都是有问题的。
    《〈〈〈〈〈〈〈

    我只是说出自己的观点。你不认同我的观点就算了,大不了,不讨论了嘛。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/7/25 15:32:00
     
     hexun831012 帅哥哟,离线,有人找我吗?天秤座1983-10-12
      
      
      威望:1
      等级:研二(Pi-Calculus看得一头雾水)(版主)
      文章:800
      积分:5114
      门派:XML.ORG.CN
      注册:2006/12/8

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

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gogy发送一个短消息 把gogy加入好友 查看gogy的个人资料 搜索gogy在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gogy的博客7
    发贴心情 
    呵呵,其实,我的意思不是“专业”和“业余”,我是想说“专职”来着。

    admin老大,发过好几条回帖奖励给我。这篇回帖又有。是系统自动发的,还是admin仔细看过呢?

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/7/26 10:44:00
     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18406
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客8
    发贴心情 
    以下是引用gogy在2007-7-26 10:44:00的发言:
    呵呵,其实,我的意思不是“专业”和“业余”,我是想说“专职”来着。

    admin老大,发过好几条回帖奖励给我。这篇回帖又有。是系统自动发的,还是admin仔细看过呢?


    嗯。因为你积极参与交流,发表自己的看法。所以就奖励了。因为一天站上贴子很多,无法一一细看了 :-)

    ----------------------------------------------

    -----------------------------------------------

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

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

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

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