新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   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生成XML树格式 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5604 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 用xsl生成XML树格式 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     apple77 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:2
      积分:57
      门派:XML.ORG.CN
      注册:2008/6/1

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

    各位前辈,刚学XML碰到如下问题,想了好久不知道错在哪,请大家指教,谢谢帮助。

    任务:将一个xml文件从无层次格式(源文件格式)转到有层次格式(目标文件格式)
    测试数据:
    源XML文件
    <?xml version="1.0" encoding="gb2312"?>
    <?xml-stylesheet type="text/xsl" href="test.xsl" ?>
    <tree_tests>
    <tree_test ID="1" PARENT_ID="0" NAME="ROOT      " SIZE="0         " CHILDFLAG="T"/>
    <tree_test ID="2" PARENT_ID="1" NAME="A         " SIZE="13        " CHILDFLAG="T"/>
    <tree_test ID="3" PARENT_ID="1" NAME="B         " SIZE="23        " CHILDFLAG="T"/>
    <tree_test ID="4" PARENT_ID="1" NAME="C         " SIZE="1         " CHILDFLAG="T"/>
    <tree_test ID="5" PARENT_ID="2" NAME="A.A1      " SIZE="34        " CHILDFLAG="T"/>
    <tree_test ID="6" PARENT_ID="2" NAME="A.A2      " SIZE="6         " CHILDFLAG="F"/>
    <tree_test ID="7" PARENT_ID="5" NAME="A.A1.1    " SIZE="7         " CHILDFLAG="T"/>
    <tree_test ID="8" PARENT_ID="5" NAME="A.A1.2    " SIZE="5         " CHILDFLAG="T"/>
    <tree_test ID="9" PARENT_ID="2" NAME="A.A3      " SIZE="3         " CHILDFLAG="F"/>
    <tree_test ID="10" PARENT_ID="3" NAME="B.B1      " SIZE="5         " CHILDFLAG="T"/>
    <tree_test ID="11" PARENT_ID="4" NAME="C.C1      " SIZE="6         " CHILDFLAG="F"/>
    <tree_test ID="12" PARENT_ID="10" NAME="B.B1.1    " SIZE="6         " CHILDFLAG="F"/>
    <tree_test ID="13" PARENT_ID="7" NAME="A.A1.1.a  "  SIZE="12         " CHILDFLAG="F"/>
    </tree_tests>
    目标XML文件希望如下:
    <tree_test ID="1" NAME="ROOT"  >
          <tree_test ID="2"  NAME="A"  >  
                    <tree_test ID="5" NAME="A.A1 ">
                           <tree_test ID="7"  NAME="A.A1.1 >
                                      <tree_test ID="13"  NAME="A.A1.1.a  ">
                          <tree_test ID="8"  NAME="A.A1.2 >
                    <tree_test ID="6" NAME="A.A2 ">
           <tree_test ID="3"  NAME="B" >
                   <tree_test ID="10"  NAME="B.B1" >
                             <tree_test ID="12" NAME="B.B1.1" >
           <tree_test ID="4" NAME="C" >
                  <tree_test ID="11"  NAME="C.C1">
    </tree_test>

    我的XLS
    <?xml version="1.0" encoding="gb2312" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:template match="/">
        <xsl:call-template name="treetemplate">
          <xsl:with-param name="parent_id" select="0"/>
        </xsl:call-template>
      </xsl:template>

      <xsl:template name="treetemplate">
        <xsl:param name="parent_id"/>
        <xsl:for-each select="/tree_tests/tree_test[@PARENT_ID=$parent_id]">
          <xsl:value-of select="." />  <!--不显示,因为无值-->
          <br/>
          <xsl:value-of select="$parent_id"/>
          <br/>
          Id: <xsl:value-of select="./@ID"/>
          <br/>
          PARENT_ID:<xsl:value-of select="./@PARENT_ID"/><br/>
          NAME: <xsl:value-of select="./@NAME"/><br/>
          SIZE: <xsl:value-of select="./@SIZE"/><br/>
          CHILDFLAG:<xsl:value-of select="./@CHILDFLAG"/>
          <br/>
        </xsl:for-each>
        <xsl:if test="CHILDFLAG='T'">
          <xsl:call-template name="treetemplate">        
              <xsl:with-param name="parent_id" select="./@ID"/>        
          </xsl:call-template>
        </xsl:if>
      </xsl:template>
    </xsl:stylesheet>

    递归有问题,但我想不出问题在哪


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/1 13:05:00
     
     bigsea76 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:77
      门派:XML.ORG.CN
      注册:2004/7/3

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给bigsea76发送一个短消息 把bigsea76加入好友 查看bigsea76的个人资料 搜索bigsea76在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看bigsea76的博客2
    发贴心情 
    XPath函数中有专门关于字符串的函数,如startwith这样的函数,试试吧
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/2 9:18:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

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

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

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

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/2 13:35:00
     
     apple77 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:2
      积分:57
      门派:XML.ORG.CN
      注册:2008/6/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给apple77发送一个短消息 把apple77加入好友 查看apple77的个人资料 搜索apple77在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看apple77的博客4
    发贴心情 鞠躬感谢
    谢谢您的指点,帮助我提高. 这坛子真是好地方,能认识你们觉得自己真幸运。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/2 21:38:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客5
    发贴心情 
    已经在CSDN和本人的BLOG上贴过代码,http://blogger.org.cn/blog/more.asp?name=Qr&id=36322

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

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

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/2 21:58: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/5/13 23:34:36

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

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