班哥的专栏

班哥就是班加罗尔,但班哥没去过班加罗尔。

用户操作
[即时聊天] [发私信] [加为好友]
陈先波ID:turbochen
190817次访问,排名385好友0人,关注者0
turbochen的文章
原创 74 篇
翻译 0 篇
转载 23 篇
评论 143 篇
班哥的公告


Locations of visitors to this page
最近评论
sap99:www.sap99.com/,SAP99资料多多

SAP免费资料下载
http://www.sap99.com

有很多的学习资料,推荐一下,
turbochen:那是因为你来晚了。csdn网站一天一变。
ninolilin:hen hao zheng shi wo xiang yao de
qqj007:很感兴趣,正在学J2ME,能否发一份给我,我邮箱:0775x@163.com 谢谢~^_^
wangpancom:班哥,你好,小弟最近正在学习BeahShel,由于上网不方便,不能经常上,你能给我发一份你学习时的总结吧?先谢了....QQ:413819965
文章分类
收藏
    相册
    等待图片
    深圳反日大游行
    文章插图
    五子棋游戏画面
    Framework
    Hibernate
    Struts
    开发工具
    Ant
    Eclipse
    JBoss
    Tomcat
    实用组件
    BeanShell
    JasperReport
    JDom
    JFreechart
    友情链接
    IBM DeveloperWorks
    Java.net
    JavaLobby
    JavaOne
    Java憩园
    TheServerSide.COM
    榕树下
    黎明时空
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 用XSL与XML实现多级树形菜单收藏

    新一篇: 使用动态的JNLP动态部署Java应用程序 | 旧一篇: Java 7.0需要什么样的新特性?

    XSL语言功能强大而奇妙。从前面的例子中,我们可以初步了解到,一个xsl文档中使用了很多类似"xsl:xxxxx"这样的标签,这些标签就是xsl语言的部分。一个xsl文档至少是由一个模板组成的,xsl的解析引擎会负责将xml数据按xsl的模板定义来转换。就像上面的例子,就有两个模板:


    模板可以用来处理特定的xml数据,通过match属性来指定。match属性里的是一个xpath的表达式(xpath在本文先不作讨论),通过它可以匹配相关的xml节点给模板来处理。我们看到在模板中,大部分内容都是html的内容,只有少量的这样的标签,非标签的内容,在xsl引擎解析时,会原文保留。当遇到标签才做处理。像上面的例子中,有一个标签,它是将select属性指定的greeting节点输入到当前位置。通过xml文档我们看到greeting节点值是“Hello, World!”,输出时它正好在html的H1标签当中,所以它当然以大号的黑体字来显示了。
     
    常用的xsl标签有很多,常用到的一般有:
    xsl:value-of (选择节点并输出)
    xsl:apply-templates (对匹配的节点应用相应的模板)
    xsl:template (模板定义)
    xsl:if (条件判断)
    xsl:choose (多条件分支)
    xsl:for-each (循环)
     
    利用这些xsl的标签,我们可以实现一定的‘数据结构+算法’来完成一部分工作,所以我们说,xsl是一种程序语言,关于xsl 更详细的学习,你可以看Microsoft的XML SDK文档,它对xml, xsl甚至xpath的内容讲的非常详细(感谢Microsoft提供这么好的文档)。
     
    下面回到正题,如何用xml/xsl实现一个多级树形菜单。
    我来看一下树形菜单的xml文档类型定义:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!ELEMENT tree ( menu+ ) >
    <!ELEMENT menu ( menu* ) >
    <!ATTLIST menu text CDATA #REQUIRED >
    <!ATTLIST menu icon CDATA #IMPLIED >
    <!ATTLIST menu url CDATA #IMPLIED >
    <!ATTLIST menu target CDATA #IMPLIED >
    <!ATTLIST menu folded CDATA #IMPLIED >

    通过这个定义可以看到,我们的菜单xml结构是由一个tree根结点组成。tree节点可以包含多个menu节点。而每个menu节点也可以包含多个menu节点。这样就达到多级树形结构的要求。下面来看这个xml结构的例子: 

        <tree>
            <menu text="一级菜单" icon="xxx.gif" folded="false">
                <menu text="二级菜单1" icon="yyy1.gif" url="www.yyy1.com" target="_blank"/>
                <menu text="二级菜单2" icon="yyy2.gif" url="www.yyy2.com" target="_blank"/>
            </menu>
        </tree>
    

    menu节点具有5种属性,分别是:
    text,用来作为菜单的显示文字
    icon,菜单的图标
    url, 点击菜单后的地址
    target, 显示地址的目标框架
    folded, 如果是菜单还有子菜单的话,此属性决定菜单是否折叠。
    其中,text属性是必须的,其它的根据需要取舍。

    全文请看:http://www.javagarden.org

    截图:

    演示:http://www.javagarden.org/wiki/attachment/1/tree.xml

     

     

    发表于 @ 2004年09月16日 16:05:00|评论(loading...)|编辑

    新一篇: 使用动态的JNLP动态部署Java应用程序 | 旧一篇: Java 7.0需要什么样的新特性?

    评论

    #ww 发表于2005-11-17 12:55:00  IP: 202.110.224.*
    shit!!
    给些不能访问的网页!!!!
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 班哥