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

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWLXML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → [求助]xsl:for-each 嵌套循环问题,急 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 8225 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]xsl:for-each 嵌套循环问题,急 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     yuzhile 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:18
      积分:138
      门派:XML.ORG.CN
      注册:2007/11/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yuzhile发送一个短消息 把yuzhile加入好友 查看yuzhile的个人资料 搜索yuzhile在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yuzhile的博客楼主
    发贴心情 [求助]xsl:for-each 嵌套循环问题,急

    我的需求是这样的:从数据库里生成xml文件,然后根据这个文件做成二级树型菜单,操作菜单可以 修改或删除数据库中的信息

    这是生成的xml 文件:
    -------------------------------------------------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <ResultSet>
      <ROW>
        <col_id>1</col_id>
        <col_name>国际新闻</col_name>
        <col_level>0</col_level>
      </ROW>
      <ROW>
        <col_id>2</col_id>
        <col_name>全球焦点</col_name>
        <col_level>1</col_level>
      </ROW>
      <ROW>
        <col_id>3</col_id>
        <col_name>域外风情</col_name>
        <col_level>1</col_level>
      </ROW>
      <ROW>
        <col_id>4</col_id>
        <col_name>一级栏目</col_name>
        <col_level>0</col_level>
      </ROW>
      <ROW>
        <col_id>5</col_id>
        <col_name>二级栏目</col_name>
        <col_level>1</col_level>
      </ROW>
      <ROW>
        <col_id>6</col_id>
        <col_name>二级栏目</col_name>
        <col_level>1</col_level>
      </ROW>
      <ROW>
        <col_id>7</col_id>
        <col_name>大国军事</col_name>
        <col_level>0</col_level>
      </ROW>
      <ROW>
        <col_id>8</col_id>
        <col_name>海外文化</col_name>
        <col_level>1</col_level>
      </ROW>
      <ROW>
        <col_id>9</col_id>
        <col_name>国内新闻</col_name>
        <col_level>0</col_level>
      </ROW>
      <ROW>
        <col_id>10</col_id>
        <col_name>社会政策</col_name>
        <col_level>1</col_level>
      </ROW>
      <ROW>
        <col_id>11</col_id>
        <col_name>财经纵横</col_name>
        <col_level>9</col_level>
      </ROW>
      <ROW>
        <col_id>12</col_id>
        <col_name>考古发现</col_name>
        <col_level>0</col_level>
      </ROW>
      <ROW>
        <col_id>13</col_id>
        <col_name>教育人文</col_name>
        <col_level>0</col_level>
      </ROW>
      <ROW>
        <col_id>14</col_id>
        <col_name>天文地理</col_name>
        <col_level>0</col_level>
      </ROW>
      <ROW>
        <col_id>15</col_id>
        <col_name>星际探索</col_name>
        <col_level>1</col_level>
      </ROW>
      <ROW>
        <col_id>16</col_id>
        <col_name>海底世界</col_name>
        <col_level>0</col_level>
      </ROW>
      <ROW>
        <col_id>17</col_id>
        <col_name>南极北极</col_name>
        <col_level>0</col_level>
      </ROW>
      <ROW>
        <col_id>18</col_id>
        <col_name>大学之道</col_name>
        <col_level>1</col_level>
      </ROW>
      <ROW>
        <col_id>19</col_id>
        <col_name>百姓生活</col_name>
        <col_level>7</col_level>
      </ROW>
      <ROW>
        <col_id>20</col_id>
        <col_name>教学相长</col_name>
        <col_level>13</col_level>
      </ROW>
      <ROW>
        <col_id>21</col_id>
        <col_name>教学相长</col_name>
        <col_level>13</col_level>
      </ROW>
      <ROW>
        <col_id>22</col_id>
        <col_name>职业培训</col_name>
        <col_level>13</col_level>
      </ROW>
      <ROW>
        <col_id>23</col_id>
        <col_name>校园生活</col_name>
        <col_level>13</col_level>
      </ROW>
      <ROW>
        <col_id>24</col_id>
        <col_name>娱乐时代</col_name>
        <col_level>0</col_level>
      </ROW>
    </ResultSet>

    -----------------------------------------------------------
    首先要取出col_level=0的栏目,作为一级栏目,然后根据一级栏目的col_id, 找出col_level=col_id的栏目作为二级栏目,这需要嵌套循环。我的xsl文件是这样写的:

    <xsl:for-each select="ResultSet/ROW">
    <xsl:variable name="id" select="current()/col_id"/>
     <xsl:if test="col_level = 0">
      
       <tr>
        <td><xsl:value-of select="$id"/></td> 
        <td><xsl:value-of select="col_name"/></td>
        <td><xsl:value-of select="col_level"/></td>
    <xsl:for-each select="ResultSet/ROW">
       <xsl:if test="col_level = $id">

    <td>
                                                                          
       <tr>
        <td><xsl:value-of select="col_id"/></td> 
        <td><xsl:value-of select="col_name"/></td>
        <td><xsl:value-of select="col_level"/></td>
       </tr>
       

        </td>
                                 </xsl:if>
       </xsl:for-each>
       </tr>
    </xsl:if>
    </xsl:for-each>

    -----------------------------------------------------
    显示的结果是这样的

    1 国际新闻 0
    4 一级栏目 0
    7 大国军事 0
    9 国内新闻 0
    12 考古发现 0
    13 教育人文 0
    14 天文地理 0
    16 海底世界 0
    17 南极北极 0
    24 娱乐时代 0

    好像内层循环根本没有运行

    我对xml/xslt语法不熟悉,从网上找了一些资料,临时突击学习,请高手指点


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/27 12:24:00
     
     enyaxp 帅哥哟,离线,有人找我吗?巨蟹座1984-7-4
      
      
      威望:2
      等级:计算机学士学位(版主)
      文章:350
      积分:2433
      门派:XML.ORG.CN
      注册:2007/12/11

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

    <xsl:for-each select="ResultSet/ROW">
    <xsl:variable name="id" select="current()/col_id"/>
    <xsl:if test="col_level = 0">
      
       <tr>
        <td><xsl:value-of select="$id"/></td>
        <td><xsl:value-of select="col_name"/></td>
        <td><xsl:value-of select="col_level"/></td>
    <xsl:for-each select="//ROW">  // 这里改一下
       <xsl:if test="col_level = $id">

    <td>
                                                                          
       <tr>
        <td><xsl:value-of select="col_id"/></td>
        <td><xsl:value-of select="col_name"/></td>
        <td><xsl:value-of select="col_level"/></td>
       </tr>
       

        </td>
                                 </xsl:if>
       </xsl:for-each>
       </tr>
    </xsl:if>
    </xsl:for-each>


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

    I'M BACK, NEVER GO AWAY.

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

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

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