新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国XML论坛<<     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → 无限深度菜单代码共享 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9295 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 无限深度菜单代码共享 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     Forlan 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:19
      积分:199
      门派:XML.ORG.CN
      注册:2004/11/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Forlan发送一个短消息 把Forlan加入好友 查看Forlan的个人资料 搜索Forlan在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Forlan的博客楼主
    发贴心情 无限深度菜单代码共享

    两个文件,做好后直接访问navigater.xml

    navigater.xml:

    <?xml version="1.0" encoding="GB2312"?>
    <?xml-stylesheet type="text/xsl" href="navigater.xsl"?>
    <!-- 无限深度菜单 -->
    <!--
     如果使用本代码请保留以下版权信息.
     本代码由Forlan编写, Soft@benheco.com
    -->
    <Root>
    <Item>
     <Text>父菜单(1)</Text>
     <URL>#</URL>
     <Item>
      <Text>子菜单(1)</Text>
      <URL>#</URL>
      <Item>
       <Text>子菜单的子菜单</Text>
       <URL>http://www.benheco.com/soft/</URL>
      </Item>
     </Item>
    </Item>
    <Item>
     <Text>父菜单(2)</Text>
     <URL>#</URL>
     <Item>
      <Text>子菜单(2)</Text>
      <URL>#</URL>
      <Item>
       <Text>子菜单的子菜单</Text>
       <URL>http://www.163.com/</URL>
      </Item>
     </Item>
    </Item>
    </Root>

    navigater.xsl:

    <?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">
    <!-- 无限深度菜单 -->
    <!--
     如果使用本代码请保留以下版权信息.
     本代码由Forlan编写, Soft@benheco.com
    -->
     <xsl:template match="/">
      <html>
       <head>
        <title>Navigater</title>
        <style>
         <xsl:comment>
         <![CDATA[
          td { border-style: solid; border-width: 0 }
         !]]>
         </xsl:comment>
        </style>
        <script language="javascript">
        <xsl:comment>
        <![CDATA[
        function OppNode(ParentNodeImg,Node)
        {
         if(Node.style.display == "none")
         {
          Node.style.display = "block";
          ParentNodeImg.src = "Images/sub.gif";
         }
         else
         {
          Node.style.display = "none";
          ParentNodeImg.src = "Images/plus.gif";
         }
        }
        function OpenURL(URL)
        {
         parent.RightFrame.location = URL;
        }
        ]]>
        </xsl:comment>
        </script>
       </head>
       <body topmargin="10" leftmargin="10" marginheight="10" marginwidth="10">
        <xsl:attribute name="onselectstart">return false;</xsl:attribute>
        <xsl:attribute name="ondragstart">return false;</xsl:attribute>
        <xsl:call-template name="LinkPage">
         <xsl:with-param name="Node" select="//Root"/>
         <xsl:with-param name="ParentName">Root</xsl:with-param>
        </xsl:call-template>
       </body>
      </html>
     </xsl:template>
     <!-- 递归加载所有菜单 -->
     <xsl:template name="LinkPage">
      <xsl:param name="Node"/>
      <xsl:param name="ParentName"/>
      <table width="90%" border="0" cellspacing="0" cellpadding="0">
       <xsl:for-each select="$Node/Item">
        <xsl:variable name="ChildrenID">
         <xsl:value-of select="$ParentName"/>_<xsl:number value="position()"/>
        </xsl:variable>
        <tr>
         <td>
          <table width="50" border="0" cellspacing="0" cellpadding="0">
           <xsl:choose>
            <!-- 类别菜单下还有子菜单 -->
            <xsl:when test="count(./Item/Text) != 0">
             <!-- 类别菜单 -->
             <xsl:call-template name="ParentLinkPage">
              <xsl:with-param name="Node" select="."/>
              <xsl:with-param name="ChildrenID" select="$ChildrenID"/>
             </xsl:call-template>
             <!-- 列出类别菜单下的子菜单(递归) -->
             <tr style="display:none">
              <xsl:attribute name="id"><xsl:value-of select="$ChildrenID"/></xsl:attribute>
              <td/>
              <td>
               <xsl:call-template name="LinkPage">
                <xsl:with-param name="Node" select="."/>
                <xsl:with-param name="ParentName" select="$ChildrenID"/>
               </xsl:call-template>
              </td>
             </tr>
            </xsl:when>
            <!-- 类别菜单下没有子菜单,直接显示链接菜单 -->
            <xsl:otherwise>
             <xsl:call-template name="ChildLinkPage">
              <xsl:with-param name="Node" select="."/>
             </xsl:call-template>
            </xsl:otherwise>
           </xsl:choose>
          </table>
         </td>
        </tr>
       </xsl:for-each>
      </table>
     </xsl:template>
     <!-- 显示指定的一个类别菜单 -->
     <xsl:template name="ParentLinkPage">
      <xsl:param name="Node"/>
      <xsl:param name="ChildrenID"/>
      <xsl:variable name="ImgID"><xsl:value-of select="$ChildrenID"/>_Img</xsl:variable>
      <tr>
       <td width="10">
        <img src="Images/plus.gif" style="CURSOR: hand;" border="0">
         <xsl:attribute name="id"><xsl:value-of select="$ImgID"/></xsl:attribute>
         <xsl:attribute name="onclick">javascript: OppNode(<xsl:value-of select="$ImgID"/>,<xsl:value-of select="$ChildrenID"/>)</xsl:attribute>
        </img>
        <xsl:text> </xsl:text>
       </td>
       <td width="50" nowrap="nowrap">
        <table width="100%" border="0" cellspacing="0" cellpadding="2">
         <xsl:attribute name="class">Menu_Blur</xsl:attribute>
         <xsl:attribute name="onmouseover">javascript: this.className="Menu_Hover"</xsl:attribute>
         <xsl:attribute name="onmouseout">javascript: this.className="Menu_Blur"</xsl:attribute>
         <tr>
          <td nowrap="nowrap">
           <a>
            <xsl:attribute name="href"><xsl:value-of select="$Node/URL"/></xsl:attribute>
            <xsl:attribute name="onclick">javascript: OppNode(<xsl:value-of select="$ImgID"/>,<xsl:value-of select="$ChildrenID"/>);return false;</xsl:attribute>
            <xsl:value-of select="$Node/Text"/>
           </a>
          </td>
         </tr>
        </table>
       </td>
      </tr>
     </xsl:template>
     <!-- 显示指定的一个页面链接菜单 -->
     <xsl:template name="ChildLinkPage">
      <xsl:param name="Node"/>
      <tr>
       <td width="10">
        <a>
         <xsl:attribute name="href"><xsl:value-of select="$Node/URL"/></xsl:attribute>
         <img src="Images/point.gif" border="0"/>
        </a>
        <xsl:text> </xsl:text>
       </td>
       <td width="50" nowrap="nowrap">
        <table width="100%" border="0" cellspacing="0" cellpadding="2">
         <xsl:attribute name="class">Menu_Blur</xsl:attribute>
         <xsl:attribute name="onmouseover">javascript: this.className="Menu_Hover"</xsl:attribute>
         <xsl:attribute name="onmouseout">javascript: this.className="Menu_Blur"</xsl:attribute>
         <tr>
          <td nowrap="nowrap">
           <a>
            <xsl:attribute name="href"><xsl:value-of select="$Node/URL"/></xsl:attribute>
            <xsl:value-of select="$Node/Text"/>
           </a>
          </td>
         </tr>
        </table>
       </td>
      </tr>
     </xsl:template>
    </xsl:stylesheet>


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/1 13:30:00
     
     doubleG 帅哥哟,离线,有人找我吗?
      
      
      威望:7
      等级:大三(面向对象是个好东东!)
      文章:591
      积分:4119
      门派:XML.ORG.CN
      注册:2004/5/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给doubleG发送一个短消息 把doubleG加入好友 查看doubleG的个人资料 搜索doubleG在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看doubleG的博客2
    发贴心情 
    呵呵,不错不错,不过有一点可以注意一下
    <xsl:call-template name="ParentLinkPage">
              <xsl:with-param name="Node" select="."/>
              <xsl:with-param name="ChildrenID" select="$ChildrenID"/>
             </xsl:call-template>
    这里的<xsl:with-param name="Node" select="."/>可以省掉的,因为调用了该ParantLinkPage的时候就是在该节点下的,所以在templte ParentLinkPage中的currentNode和调用处的是相同的,所以可以把该参数省略,将template ParentLinkPage中的$Node换成".",或者去掉都是可以的。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/3 9:16:00
     
     Forlan 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:19
      积分:199
      门派:XML.ORG.CN
      注册:2004/11/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Forlan发送一个短消息 把Forlan加入好友 查看Forlan的个人资料 搜索Forlan在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Forlan的博客3
    发贴心情 
    谢谢!我刚学XML,为了方便自己开发的系统的使用就写了一个无限深度的菜单代码,加上Node主要是考虑方便理解,也方便以后扩展.
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/3 16:03:00
     
     Forlan 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:19
      积分:199
      门派:XML.ORG.CN
      注册:2004/11/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Forlan发送一个短消息 把Forlan加入好友 查看Forlan的个人资料 搜索Forlan在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Forlan的博客4
    发贴心情 
    无论写得好与不好,都希望大家回应一下.支持一下呀.
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/7 8:43:00
     
     y2uan 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:16
      积分:122
      门派:XML.ORG.CN
      注册:2005/4/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给y2uan发送一个短消息 把y2uan加入好友 查看y2uan的个人资料 搜索y2uan在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看y2uan的博客5
    发贴心情 
    支持,支持
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/23 13:10:00
     
     y2uan 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:16
      积分:122
      门派:XML.ORG.CN
      注册:2005/4/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给y2uan发送一个短消息 把y2uan加入好友 查看y2uan的个人资料 搜索y2uan在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看y2uan的博客6
    发贴心情 
    赫赫,广告的方式有些特别
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/23 13:13:00
     
     kevinxu 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:6
      积分:80
      门派:XML.ORG.CN
      注册:2005/10/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给kevinxu发送一个短消息 把kevinxu加入好友 查看kevinxu的个人资料 搜索kevinxu在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看kevinxu的博客7
    发贴心情 
    不错,能写出这样的东西,已经不错了,呵呵,谢谢你又让我学了一招
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/10/24 15:36:00
     
     bluezsy 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:13
      积分:114
      门派:XML.ORG.CN
      注册:2006/2/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给bluezsy发送一个短消息 把bluezsy加入好友 查看bluezsy的个人资料 搜索bluezsy在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看bluezsy的博客8
    发贴心情 
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/5/10 16:00:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/3/11 7:55:09

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

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