新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   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实现树型结构的问题!请高手指点! 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 13068 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]新人求助XSL实现树型结构的问题!请高手指点! 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     火鸟 帅哥哟,离线,有人找我吗?
      
      
      等级:大四(GRE考了1500分!)
      文章:202
      积分:1198
      门派:XML.ORG.CN
      注册:2007/7/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给火鸟发送一个短消息 把火鸟加入好友 查看火鸟的个人资料 搜索火鸟在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看火鸟的博客11
    发贴心情 

    而且最后它也外联了一个js文件,我上面的代码就是从其中拷出来的。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/7/31 17:53:00
     
     shiwudao 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:16
      积分:177
      门派:XML.ORG.CN
      注册:2006/8/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给shiwudao发送一个短消息 把shiwudao加入好友 查看shiwudao的个人资料 搜索shiwudao在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看shiwudao的博客12
    发贴心情 
    主要有几个地方要修改:
    1)需要的话要设置XSLT输出编码gb2312,他缺省是utf-8
    2) javascript最好放在<head></head>里面
    3) style也用<xsl:comment>来包含
    4) "nav"不是"Nav"
    5) 对GetMenuID();menuFix();的调用应该放在onload()里调用,以确保HTML元素加载完毕
    经过修改,在IE6, FF下测试通过。

    测试用XML如下
    <?xml version="1.0" encoding="gb2312"?>
    <test></test>

    修改后的XSLT如下
    <?xml version="1.0" encoding="GB2312"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:output method="html" encoding="gb2312"></xsl:output>
    <xsl:template match="/">
      <html>
       <head>
        <title/>
        <title>Div+CSS+JS树型菜单,可刷新</title>
        <script type="text/javascript">
         <xsl:comment><![CDATA[
    var LastLeftID = "";
    function menuFix() {
    var obj = document.getElementById("nav").getElementsByTagName("li");
    for (var i=0; i<obj.length; i++) {
    obj[i].onmouseover=function() {
    this.className+=(this.className.length>0? " ": "") + "sfhover";
    }
    obj[i].onMouseDown=function() {
    this.className+=(this.className.length>0? " ": "") + "sfhover";
    }
    obj[i].onMouseUp=function() {
    this.className+=(this.className.length>0? " ": "") + "sfhover";
    }
    obj[i].onmouseout=function() {
    this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"), "");
    }
    }
    }

    function DoMenu(emid)
    {
    var obj = document.getElementById(emid);
    obj.className = (obj.className.toLowerCase() == "expanded"?"collapsed":"expanded");
    LastLeftID = emid }

    function GetMenuID()
    {
    var MenuID="";
    var _paramStr = new String(window.location.href);
    var _sharpPos = _paramStr.indexOf("#");
    if (_sharpPos >= 0 && _sharpPos < _paramStr.length - 1)
    { _paramStr = _paramStr.substring(_sharpPos + 1, _paramStr.length); }
    else { _paramStr = ""; }
    if (_paramStr.length > 0)
    { var _paramArr = _paramStr.split("&");
    if (_paramArr.length>0)
    { var _paramKeyVal = _paramArr[0].split("=");
    if (_paramKeyVal.length>0)
    { MenuID = _paramKeyVal[1]; }
    }

    }
    if(MenuID!="")
    { DoMenu(MenuID) }
    }

    function init() {
    GetMenuID(); //*这两个function的顺序要注意一下,不然在Firefox里GetMenuID()不起效果
    menuFix();
    }
    ]]></xsl:comment>
        </script>
        <style type="text/css">
         <xsl:comment><![CDATA[
       *{margin:0;padding:0;border:0;}
       
       body { font-size:12px; }
       
       /*定义整个ul菜单的行高和背景色*/
       #nav { width:180px; line-height: 24px; list-style-type: none; text-align:left; }
       
       /*==================一级目录===================*/
       /*Width(一定要),否则下面的li会变形*/
       #nav a { width: 160px; display: block; padding-left:20px; }
       
       #nav li { background:#CCC; /*一级目录的背景色*/
       border-bottom:#FFF 1px solid; /*下面的一条白边*/
       float:left; /*float:left,本不应该设置,但由于在Firefox不能正常显示
       继承Nav的width,限制宽度,li自动向下延伸*/ }
       
       #nav li a:hover{ background:#CC0000; /*一级目录onMouseOver显示的背景色*/ }
       #nav a:link { color:#666; text-decoration:none; }
       #nav a:visited { color:#666;text-decoration:none; }
       #nav a:hover { color:#FFF;text-decoration:none;font-weight:bold; }
       
       /*==================二级目录===================*/
       #nav li ul { list-style:none; text-align:left; }
       #nav li ul li{ background: #EBEBEB; /*二级目录的背景色*/ }
       #nav li ul a{padding-left:20px;width:160px;
       /* padding-left二级目录中文字向右移动,但Width必须重新设置=(总宽度-padding-left)*/ }
       
       /*下面是二级目录的链接样式*/
       #nav li ul a:link { color:#666; text-decoration:none; }
       #nav li ul a:visited { color:#666;text-decoration:none; }
       #nav li ul a:hover { color:#F3F3F3; text-decoration:none; font-weight:normal;
       background:#CC0000; /* 二级onmouseover的字体颜色、背景色*/ }
       
       /*==============================*/
       #nav li:hover ul { left: auto; }
       #nav li.sfhover ul { left: auto; }
       #content { clear: left; }
       
       /*此节,用来控制菜单是否全部展开,如果注释掉,菜单就全部展开,在调试程序时有用。*/
       #nav ul.collapsed { display: none; }
       
       #PARENT{ width:300px; padding-left:20px; }
       ]]>
       </xsl:comment>
        </style>
       </head>
       <body onload="init()">
        <div id="PARENT">
         <ul id="nav">
          <li>
           <a href="#Menu=ChildMenu1" onclick="DoMenu('ChildMenu1')">分类一</a>
           <ul id="ChildMenu1" class="collapsed">
            <li>
             <a href="http://www.fints.us" target="_blank">栏目1</a>
            </li>
            <li>
             <a href="http://www.fints.us" target="_blank">栏目2</a>
            </li>
            <li>
             <a href="http://www.fints.us" target="_blank">栏目3</a>
            </li>
           </ul>
          </li>
          <li>
           <a href="#Menu=ChildMenu2" onclick="DoMenu('ChildMenu2')">分类二</a>
           <ul id="ChildMenu2" class="collapsed">
            <li>
             <a href="http://www.fints.us" target="_blank">栏目1</a>
            </li>
            <li>
             <a href="#">栏目2</a>
            </li>
            <li>
             <a href="#">栏目3</a>
            </li>
            <li>
             <a href="#">栏目4</a>
            </li>
            <li>
             <a href="#">栏目5</a>
            </li>
           </ul>
          </li>
          <li>
           <a href="#Menu=ChildMenu3" onclick="DoMenu('ChildMenu3')">分类三</a>
           <ul id="ChildMenu3" class="collapsed">
            <li>
             <a href="#">栏目1</a>
            </li>
            <li>
             <a href="http://www.fints.us" target="_blank">栏目2</a>
            </li>
            <li>
             <a href="#">栏目3</a>
            </li>
            <li>
             <a href="#">栏目4</a>
            </li>
           </ul>
          </li>
          <li>
           <a href="#Menu=ChildMenu4" onclick="DoMenu('ChildMenu4')">分类四</a>
           <ul id="ChildMenu4" class="collapsed">
            <li>
             <a href="#">栏目1</a>
            </li>
            <li>
             <a href="http://www.fints.us" target="_blank">栏目2</a>
            </li>
            <li>
             <a href="#">栏目3</a>
            </li>
            <li>
             <a href="#">栏目4</a>
            </li>
           </ul>
          </li>
         </ul>
        </div>
        
       </body>
      </html>
    </xsl:template>
    </xsl:stylesheet>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/7/31 22:08:00
     
     火鸟 帅哥哟,离线,有人找我吗?
      
      
      等级:大四(GRE考了1500分!)
      文章:202
      积分:1198
      门派:XML.ORG.CN
      注册:2007/7/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给火鸟发送一个短消息 把火鸟加入好友 查看火鸟的个人资料 搜索火鸟在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看火鸟的博客13
    发贴心情 
    shiwudao的脚本能工作,真不错。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/1 10:11:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客14
    发贴心情 
    以下是引用shiwudao在2007-7-31 22:08:00的发言:
    主要有几个地方要修改:
    1)需要的话要设置XSLT输出编码gb2312,他缺省是utf-8
    2) javascript最好放在<head></head>里面
    3) style也用<xsl:comment>来包含


    1、编码一定要一致,这可以免去好多问题
    2、是你前次没有得到想要的结果的重要原因之一,XSL和HTML不同,如果不遵守,结果可能就大大的不同了
    3、<xsl:comment>是javascript和style必须用的,偶在这个坛子里讲了N次了,包括与<script>、<![CDATA[]]>的次序的问题,可是有人就不信,呜呜,不想再说了。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/1 16:25:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客15
    发贴心情 
    以下是引用火鸟在2007-7-31 12:48:00的发言:
    javascript代码要外联在js文件中,否则<>会被转码。


    按偶的用法处理就不会出现这个问题。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/1 16:31:00
     
     火鸟 帅哥哟,离线,有人找我吗?
      
      
      等级:大四(GRE考了1500分!)
      文章:202
      积分:1198
      门派:XML.ORG.CN
      注册:2007/7/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给火鸟发送一个短消息 把火鸟加入好友 查看火鸟的个人资料 搜索火鸟在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看火鸟的博客16
    发贴心情 
    按偶的用法处理就不会出现这个问题。
    =============
    是呵。我也是run了shiwudao的帖子才体会到这一点。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/1 17:40:00
     
     KELLY5677 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:14
      积分:107
      门派:XML.ORG.CN
      注册:2007/7/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给KELLY5677发送一个短消息 把KELLY5677加入好友 查看KELLY5677的个人资料 搜索KELLY5677在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看KELLY5677的博客17
    发贴心情 
    非常感谢 火鸟 shiwudao  和 Qr的帮忙 !~~~~

    现在又遇到一个问题,怎么提取想同名字的元素中的一个?
    它们通过ID进行辨别~~~,用<XSL:IF>怎么进行判断?
    <xsl:if select(band [index() = 0])
    <xsl:if select(band [index() $eq$ 0])
    <xsl:if select(band [value(@id) = 1])
    <xsl:if select(band [value(@id) $eq$ 1])
    都会提示语法错误~~

    这是为什么呢?麻烦解释下

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/2 15:58:00
     
     KELLY5677 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:14
      积分:107
      门派:XML.ORG.CN
      注册:2007/7/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给KELLY5677发送一个短消息 把KELLY5677加入好友 查看KELLY5677的个人资料 搜索KELLY5677在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看KELLY5677的博客18
    发贴心情 
    已经解决 谢谢!~~~
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/2 16:20:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/12/22 9:15:59

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

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