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

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4993 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 通用的结果集处理xsl 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     hanjack 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:52
      门派:XML.ORG.CN
      注册:2008/2/18

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

    我有一个xml文件,该文件包含一个结果集和结果集对应的Column信息,如下:
    <?xml version="1.0" encoding="GB2312"?>
    <?xml-stylesheet type="text/xsl" href="DefaultTemplate.xsl"?>
    <ResultSet version="1.0">
     <DataGrid>
      <Rows>
       <Row id="1">
        <PROGRAMID>ProgramDef</PROGRAMID>
        <PROGRAMCAPTION>程序定义</PROGRAMCAPTION>
        <PROGRAMJSPFILE>/Frame/ProgramDef/ProgramDef_Main.jsp</PROGRAMJSPFILE>
        <PROGRAMPROCESSER>com.jillsoft.MainServlet.JillCustomServlet</PROGRAMPROCESSER>
        <PROGRAMPARAM />
       </Row>
       <Row id="2">
        <PROGRAMID>UserDef</PROGRAMID>
        <PROGRAMCAPTION>用户定义</PROGRAMCAPTION>
        <PROGRAMJSPFILE>/Frame/UserDef/UserDef_Main.jsp</PROGRAMJSPFILE>
        <PROGRAMPROCESSER>com.jillsoft.JillFrame.Jill_UserDef</PROGRAMPROCESSER>
        <PROGRAMPARAM />
       </Row>
       <Row id="3">
        <PROGRAMID>SysDef</PROGRAMID>
        <PROGRAMCAPTION>系统定义</PROGRAMCAPTION>
        <PROGRAMJSPFILE>/Frame/SysDef/SysDef_Main.jsp</PROGRAMJSPFILE>
        <PROGRAMPROCESSER>com.jillsoft.MainServlet.JillCustomServlet</PROGRAMPROCESSER>
        <PROGRAMPARAM />
       </Row>
       <Row id="4">
        <PROGRAMID>DeptDef</PROGRAMID>
        <PROGRAMCAPTION>部门定义</PROGRAMCAPTION>
        <PROGRAMJSPFILE>/Frame/DeptDef/DeptDef_Main.jsp</PROGRAMJSPFILE>
        <PROGRAMPROCESSER>com.jillsoft.MainServlet.JillCustomServlet</PROGRAMPROCESSER>
        <PROGRAMPARAM />
       </Row>
       <Row id="5">
        <PROGRAMID>StyleSet</PROGRAMID>
        <PROGRAMCAPTION>风格设置</PROGRAMCAPTION>
        <PROGRAMJSPFILE>/StyleSet.jsp</PROGRAMJSPFILE>
        <PROGRAMPROCESSER />
        <PROGRAMPARAM />
       </Row>
      </Rows>
      <Cols>
       <Column>
        <FieldName>ProgramID</FieldName>
        <ColumnTitle>程序代码</ColumnTitle>
        <ColumnWidth>500</ColumnWidth>
       </Column>
       <Column>
        <FieldName>ProgramCaption</FieldName>
        <ColumnTitle>程序标题</ColumnTitle>
        <ColumnWidth>100</ColumnWidth>
       </Column>
       <Column>
        <FieldName>ProgramJspFile</FieldName>
        <ColumnTitle>程序页面</ColumnTitle>
        <ColumnWidth>100</ColumnWidth>
       </Column>
       <Column>
        <FieldName>ProgramProcesser</FieldName>
        <ColumnTitle>业务处理器</ColumnTitle>
        <ColumnWidth>100</ColumnWidth>
       </Column>
       <Column>
        <FieldName>ProgramParam</FieldName>
        <ColumnTitle>程序参数</ColumnTitle>
        <ColumnWidth>100</ColumnWidth>
       </Column>
      </Cols>
     </DataGrid>
    </ResultSet>
    其中DataGrid是结果集,Rows下是记录数据,Cols下是Column数据,Column中定义了每个记录的字段的信息。Row下面的节点的名字是由Column/FieldName来决定的,每一个Column对应Row下面的一个节点,这样我可以根据不同的结构输出不同的Cols和Rows。
    我通过下面的XSL进行显示:
    <?xml version="1.0" encoding="gb2312"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
     <xsl:key name="lists" match="//Row" use="attribute::id"/>
     <xsl:template match="/ResultSet">
      <html>
       <head>
        <title>XML</title>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
       </head>
       <body leftmargin="0" topmargin="0">
        <table id="tbl" width="100%" border="1" cellspacing="1" cellpadding="2">
         <THEAD align="center">
          <xsl:for-each select="DataGrid/Cols/Column">
           <th>
            <xsl:attribute name="width">
             <xsl:value-of select="ColumnWidth"/>
            </xsl:attribute>
            <xsl:value-of select="ColumnTitle"/>
           </th>
          </xsl:for-each>
         </THEAD>
         <TBODY>
          <xsl:for-each select="DataGrid/Rows/Row">
           <tr>
            <xsl:variable name="CNode" select="current()"/>
            <xsl:variable name="CPos" select="position()"/>
            <xsl:for-each select="/ResultSet/DataGrid/Cols/Column">
             <xsl:variable name="ColumnName" select="FieldName"></xsl:variable>
             <td>
              <xsl:apply-templates select="key('lists', $CPos)">
               <xsl:with-param name="fn" select="FieldName"/>
              </xsl:apply-templates>
             </td>
            </xsl:for-each>
           </tr>
          </xsl:for-each>
         </TBODY>
        </table>
       </body>
      </html>
     </xsl:template>
        <xsl:template match="Row">
            <xsl:param name="fn"/>
            <xsl:value-of select="$fn"/>
        </xsl:template>
    </xsl:stylesheet>
    现在的问题是列标题可以显示出来,但是每列的数据始终不能显示出来,就是XSL文件的最后几句话里,<xsl:param name="fn"/>,fn是字段的名字,应该显示出来Row下面对应的fn的节点的值,一直也没弄出来,看看哪位高手能帮我搞定它!!!

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/2/18 15:46: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
    发贴心情 
    是我眼花了吗,怎么找不到fn节点?

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

    I'M BACK, NEVER GO AWAY.

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/2/20 22:38:00
     
     孤独 帅哥哟,离线,有人找我吗?
      
      
      威望:7
      等级:大三(面向对象是个好东东!)(版主)
      文章:826
      积分:4220
      门派:XML.ORG.CN
      注册:2004/1/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给孤独发送一个短消息 把孤独加入好友 查看孤独的个人资料 搜索孤独在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看孤独的博客3
    发贴心情 
    @enyaxp
    <xsl:with-param name="fn" select="FieldName"/>
    @hanjack
    Here is the xslt for you.
    <?xml version="1.0" encoding="gb2312"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:key name="lists" match="//Row" use="attribute::id"/>
      <xsl:template match="/ResultSet">
        <html>
          <head>
            <title>XML</title>
            <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
          </head>
          <body leftmargin="0" topmargin="0">
            <table id="tbl" width="100%" border="1" cellspacing="1" cellpadding="2">
              <THEAD align="center">
                <xsl:for-each select="DataGrid/Cols/Column">
                  <th>
                    <xsl:attribute name="width">
                      <xsl:value-of select="ColumnWidth"/>
                    </xsl:attribute>
                    <xsl:value-of select="ColumnTitle"/>
                  </th>
                </xsl:for-each>
              </THEAD>
              <TBODY>
                <xsl:for-each select="DataGrid/Rows/Row">
                  <tr>
                    <xsl:variable name="CNode" select="current()"/>
                    <xsl:variable name="CPos" select="position()"/>
                    <xsl:for-each select="/ResultSet/DataGrid/Cols/Column">
                      <xsl:variable name="ItemPos" select="position()"/>
                      <xsl:variable name="ColumnName" select="FieldName"></xsl:variable>
                      <td>
                        <xsl:apply-templates select="key('lists', $CPos)">
                          <xsl:with-param name="fn" select="$CNode/*[position()=$ItemPos]"/>
                        </xsl:apply-templates>
                      </td>
                    </xsl:for-each>
                  </tr>
                </xsl:for-each>
              </TBODY>
            </table>
          </body>
        </html>
      </xsl:template>
      <xsl:template match="Row">
        <xsl:param name="fn"/>
        <xsl:value-of select="$fn"/>
      </xsl:template>
    </xsl:stylesheet>
    I think you want to get this and I Really don't know what your code's meaning is,such as
    "<xsl:apply-templates select="key('lists', $CPos)">"~

    ----------------------------------------------
    <?xml version="1.0" encoding="gb2312"?>
    <个人签名>
      <Website>[url=http://www.mahaobo.cn]
    MaHaobo.cn[/url]
    </Website>
    <Email>aloning(at)gmail.com</Email>
      <Qq >32113739</Qq>
    </个人签名>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/2/22 15:42:00
     
     孤独 帅哥哟,离线,有人找我吗?
      
      
      威望:7
      等级:大三(面向对象是个好东东!)(版主)
      文章:826
      积分:4220
      门派:XML.ORG.CN
      注册:2004/1/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给孤独发送一个短消息 把孤独加入好友 查看孤独的个人资料 搜索孤独在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看孤独的博客4
    发贴心情 
    And Here is the result
    程序代码 程序标题 程序页面 业务处理器 程序参数
    ProgramDef 程序定义 /Frame/ProgramDef/ProgramDef_Main.jsp com.jillsoft.MainServlet.JillCustomServlet  
    UserDef 用户定义 /Frame/UserDef/UserDef_Main.jsp com.jillsoft.JillFrame.Jill_UserDef  
    SysDef 系统定义 /Frame/SysDef/SysDef_Main.jsp com.jillsoft.MainServlet.JillCustomServlet  
    DeptDef 部门定义 /Frame/DeptDef/DeptDef_Main.jsp com.jillsoft.MainServlet.JillCustomServlet  
    StyleSet 风格设置 /StyleSet.jsp

    ----------------------------------------------
    <?xml version="1.0" encoding="gb2312"?>
    <个人签名>
      <Website>[url=http://www.mahaobo.cn]
    MaHaobo.cn[/url]
    </Website>
    <Email>aloning(at)gmail.com</Email>
      <Qq >32113739</Qq>
    </个人签名>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/2/22 15:43: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/11/1 2:36:59

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

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