新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国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/XSLT表格转换问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9646 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]急:也是XSL/XSLT表格转换问题 举报  打印  推荐  IE收藏夹 
       本主题类别: 样式表技术(XSL, XSLT, XSL-FO, CSS)    
     supershc 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:87
      门派:XML.ORG.CN
      注册:2008/12/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给supershc发送一个短消息 把supershc加入好友 查看supershc的个人资料 搜索supershc在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看supershc的博客楼主
    发贴心情 [求助]急:也是XSL/XSLT表格转换问题

    刚刚开始学习XML。想通过XSL/XSLT转换下面这段XML代码成为:
    1. HTML的表格形式。
    2. CSV格式的文件

    <root>
       <row>
          <elem name="course">xml</elem>
          <elem name="date">mon</elem>
          <elem name="hour">14h16h</elem>
       </row>
       <row>
          <elem name="course">network</elem>
          <elem name="date">tue</elem>
          <elem name="hour">10h12h</elem>
       </row>
       <row>
          <elem name="course">java</elem>
          <elem name="date">wen</elem>
          <elem name="hour">14h16h</elem>
       </row>
    ...
    ...
    ...
       <row>
       </row>
    </root>


    写了一个XSLT文件转换表格的,结果和想的不一样。
    部分XSLT代码如下:
    <xsl:template match="root">
    <p>
     <xsl:if test="position( )=1">
      <table border="1">
       <thead>
        <tr>
         <td>course</td>
         <td>Date</td>
         <td>Hour</td>
        </tr>
       </thead>
           
       <tbody>
        <tr>
         <td>
          <xsl:for-each select="row">
            <tr>
            <xsl:for-each select=".">
             <xsl:value-of select="elem" />
            </xsl:for-each>
           </tr>
          </xsl:for-each>
         </td>
        </tr>    
       </tbody>
      </table>
     </xsl:if>
    </p>
    </xsl:template>


    现在问题是,其中的
    <xsl:for-each select="row">
      <tr>
      <xsl:for-each select=".">
       <xsl:value-of select="elem" />
      </xsl:for-each>
     </tr>
    </xsl:for-each>
    只能显示每个row的第一个elem的name,也就是:
    course    |    Date    |    Hour
    ---------------------------------------------
    XML       |
    network   |
    java       |


    希望格式:
    course    |    Date    |    Hour
    ---------------------------------------------
    XML        |    mon    |   14h16h
    ---------------------------------------------
    ...
    ...
    ...

    请问该如何修改?
    再就是CSV格式应该怎样写?
    实在是“焦头乱额”,马上就要用了,谢谢各位先。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/1/1 13:56:00
     
     supershc 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:87
      门派:XML.ORG.CN
      注册:2008/12/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给supershc发送一个短消息 把supershc加入好友 查看supershc的个人资料 搜索supershc在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看supershc的博客2
    发贴心情 
    大家帮忙看一下 :)
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/1/4 4:19:00
     
     wb1125 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:11
      积分:113
      门派:XML.ORG.CN
      注册:2008/3/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wb1125发送一个短消息 把wb1125加入好友 查看wb1125的个人资料 搜索wb1125在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wb1125的博客3
    发贴心情 
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
     <xsl:template match="/">
      <html>
       <head>
        <title></title>
       </head>
       <body>
        <table border="1">
         <tbody>
          <tr>
           <td>Course</td>
           <td>Date</td>
           <td>Hour</td>
          </tr>
          <xsl:for-each select="root/row">
          <tr>
           <td><xsl:value-of select="elem[@name='course']"></xsl:value-of></td>
           <td><xsl:value-of select="elem[@name='date']"></xsl:value-of></td>
           <td><xsl:value-of select="elem[@name='hour']"></xsl:value-of></td>
          </tr>
          </xsl:for-each>
         </tbody>
        </table>
       </body>
      </html>
     </xsl:template>
    </xsl:stylesheet>
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/1/4 18:23:00
     
     supershc 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:87
      门派:XML.ORG.CN
      注册:2008/12/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给supershc发送一个短消息 把supershc加入好友 查看supershc的个人资料 搜索supershc在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看supershc的博客4
    发贴心情 
    谢谢wb1125的帮助。原来是可以这样的。

    对于 CSV,写了些东西。
    <xsl:template match="/">
     <xsl:for-each select="root">
      <xsl:for-each select="row[1]">
       <xsl:for-each select="elem"><xsl:value-of select="@name" />,</xsl:for-each>
       <xsl:text> </xsl:text>
      </xsl:for-each>
      
      <xsl:for-each select="row">
       <xsl:for-each select="elem"><xsl:value-of select="." />,</xsl:for-each>
       <xsl:text> </xsl:text>
      </xsl:for-each>
     </xsl:for-each>
    </xsl:template>


    生成的文件是这样的:
    course,date,hour,
    xml,mon,14h16h,
    network,tue,10h12h,
    java,wen,14h16h,
    每行都多了一个逗号,该怎样去掉?谢谢。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/1/5 4:42:00
     
     wb1125 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:11
      积分:113
      门派:XML.ORG.CN
      注册:2008/3/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wb1125发送一个短消息 把wb1125加入好友 查看wb1125的个人资料 搜索wb1125在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wb1125的博客5
    发贴心情 
    这个逗号可以加判断来实现,在xsl中可以后<xsl:choose><xsl:when></xsl:when><xsl:ohterwise></xsl:otherwise></xsl:choose>来实现如:
    <xsl:for-each select="row">
       <xsl:for-each select="elem">
       <xsl:choose>
        <xsl:when test="position()=3">
         <xsl:value-of select="."></xsl:value-of>
        </xsl:when>
        <xsl:otherwise>
         <xsl:value-of select="."></xsl:value-of>,
        </xsl:otherwise>
     </xsl:choose>
       </xsl:for-each>
       <xsl:text> </xsl:text>
      </xsl:for-each>
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/1/5 10:35:00
     
     supershc 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:87
      门派:XML.ORG.CN
      注册:2008/12/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给supershc发送一个短消息 把supershc加入好友 查看supershc的个人资料 搜索supershc在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看supershc的博客6
    发贴心情 
    再次感谢 wb1125。
    通过位置判断就可以解决,自己怎末没有想到
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/1/6 9:39: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 7:08:27

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

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