以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  [求助]我的代码哪里有错?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=71289)


--  作者:hugh151721
--  发布时间:1/12/2009 1:30:00 PM

--  [求助]我的代码哪里有错?
XML代码如下:
<?xml version="1.0" standalone="yes"?>
<?xml:stylesheet type="text/xsl" href="group.xsl"?>
<NewDataSet>
  <group>
    <group_no>1</group_no>
    <emp_no>00067</emp_no>
    <group_name>新光</group_name>
    <emp_name>张</emp_name>
    <amt>57.0000</amt>
  </group>
  <group>
    <group_no>1</group_no>
    <emp_no>00064</emp_no>
    <group_name>新光</group_name>
    <emp_name>刘</emp_name>
    <amt>15.0000</amt>
  </group>
  <group>
    <group_no>1</group_no>
    <emp_no>00067</emp_no>
    <group_name>新光</group_name>
    <emp_name>张</emp_name>
    <amt>48.0000</amt>
  </group>
  <group>
    <group_no>1</group_no>
    <emp_no>00067</emp_no>
    <group_name>新光</group_name>
    <emp_name>张</emp_name>
    <amt>22.0000</amt>
  </group>
   <group>
    <group_no>2</group_no>
    <emp_no>00067</emp_no>
    <group_name>华春</group_name>
    <emp_name>张</emp_name>
    <amt>12.0000</amt>
  </group>
   <group>
    <group_no>2</group_no>
    <emp_no>00064</emp_no>
    <group_name>华春</group_name>
    <emp_name>刘</emp_name>
    <amt>25.0000</amt>
  </group>
   <group>
    <group_no>2</group_no>
    <emp_no>00068</emp_no>
    <group_name>华春</group_name>
    <emp_name>马</emp_name>
    <amt>23.0000</amt>
  </group>
   <group>
    <group_no>2</group_no>
    <emp_no>00067</emp_no>
    <group_name>华春</group_name>
    <emp_name>张</emp_name>
    <amt>24.0000</amt>
  </group>
</NewDataSet>
----------------------------------------------------------------------------------------
XSL代码如下:
<?xml version="1.0" encoding="utf-8"?>
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
  <xsl:key   name="groupno"   match="group"   use="group_no"   />
  <xsl:key   name="empno"   match="group"   use="emp_no"   />
  <xsl:template match="NewDataSet">
      <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/tr/rec-html40">
        <Worksheet ss:Name="mypage">
          <Table border="1" >
            <tr>
              <td>事业组编号</td>
              <td>员工代号</td>
              <td >事业组名称</td>
              <td>员工名称</td>
              <td>费用</td>
            </tr>
            <xsl:for-each select="group[generate-id(.)=generate-id(key('groupno',group_no))]">
      <xsl:variable name="samegroup_no" select="key('groupno',group_no)" />
      <xsl:for-each select="$samegroup_no[not(emp_no=preceding-sibling::samegroup_no/emp_no)]">
     <xsl:variable name="sameemp_no" select="key('empno',emp_no)" />
      <xsl:for-each select ="$sameemp_no">
       <xsl:if test="$samegroup_no/group_no=group_no">
        <tr>
       <td>
        <xsl:value-of select="group_no"/>
       </td>
       <td>
        <xsl:value-of select="emp_no"/>
       </td>
        <td>
       <xsl:value-of select="group_name"/>
        </td>
        <td>
       <xsl:value-of select="emp_name"/>
        </td>
        <td>
       <xsl:value-of select="amt"/>
        </td>
      </tr>
      </xsl:if>
     </xsl:for-each>
     
     <tr>
      <th>ss</th>
     </tr>
     </xsl:for-each>
     <tr>
      <th>cc</th>
     </tr>
            </xsl:for-each>
            <tr>
              <td>合计</td>
              <td/>
              <td/>
              <td/>
              <td>
                  <xsl:value-of select="sum(//group/amt)"/>
              </td>
            </tr>
          </Table>
        </Worksheet>
      </Workbook>
  </xsl:template>
</xsl:stylesheet>
----------------------------------------------------------------------------------------------------------------
但得到的结果却不符合我的要求,结果为:

事业组编号 员工代号 事业组名称 员工名称 费用
1 00067 新光 张 57.0000
1 00067 新光 张 48.0000
1 00067 新光 张 22.0000
ss
1 00064 新光 刘 15.0000
ss
1 00067 新光 张 57.0000
1 00067 新光 张 48.0000
1 00067 新光 张 22.0000
ss
1 00067 新光 张 57.0000
1 00067 新光 张 48.0000
1 00067 新光 张 22.0000
ss
cc
2 00067 华春 张 12.0000
2 00067 华春 张 24.0000
ss
2 00064 华春 刘 25.0000
ss
2 00068 华春 马 23.0000
ss
2 00067 华春 张 12.0000
2 00067 华春 张 24.0000
ss
cc
合计    226
-------------------------------------------------------------------------
请问 “$samegroup_no[not(emp_no=preceding-sibling::samegroup_no/emp_no)] ”这句代码有什么错误吗?


--  作者:Qr
--  发布时间:1/13/2009 3:30:00 PM

--  
http://bbs.xml.org.cn/dispbbs.asp?boardid=13&id=71219&star=2#167271
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms