以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (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=46802)


--  作者:szbaby
--  发布时间:5/12/2007 11:05:00 PM

--  在循环的时候如何合并相同的数据为一列
<persons>
     <Name>张三</name>
     <subject> english</Title>
     <mark> 90</mark>
     <time></time>

      <Name>李四</name>
     <subject> math</Title>
     <mark> 80</mark>
       <time></time>
    <Name>张三</name>
     <subject> math</Title>
     <mark> 80</mark>
   <time></time>
   <Name>张四</name>
     <subject> math</Title>
     <mark> 80</mark>
   <time></time>
<Name>张三</name>
     <subject> math</Title>
     <mark> 80</mark>
   <time></time>
</persons>

我想输出结果
姓名   科目    成绩    时间
张三   english  90     
         math    80
         english  90     
         math    80
李四   english  90     
         math    80

谢谢大家,是不是用分组? 我记得我看过有个函数,就是前一个数=后一个数
这个函数是什么呢?怎么写呢?
      


--  作者:gu_xiaorou
--  发布时间:5/15/2007 3:50:00 PM

--  
看了你的代码,发现有些地方不对,我改了一下,不知道是不是你的想法

xml文档

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="0515.xsl"?>
<persons>
 <person>
  <name>张三</name>
  <subject> english</subject>
  <mark> 90</mark>
  <time/>
 </person>
 <person>
  <name>李四</name>
  <subject> math</subject>
  <mark> 20</mark>
  <time/>
 </person>
 <person>
  <name>张三</name>
  <subject> math</subject>
  <mark> 80</mark>
  <time/>
 </person>
 <person>
  <name>李四</name>
  <subject> math</subject>
  <mark> 50</mark>
  <time/>
 </person>
 <person>
  <name>张三</name>
  <subject> math</subject>
  <mark> 80</mark>
  <time/>
 </person>
</persons>

xsl文档

<?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="/">
  <xsl:apply-templates select="persons"/>
 </xsl:template>
 <xsl:template match="persons">
  <xsl:variable name="ming">
   <xsl:value-of select="person/name"/>
  </xsl:variable>
  <xsl:value-of select="$ming"/>
  <xsl:for-each select="person[name = $ming]">
      <xsl:value-of select="subject"/>
   <xsl:value-of select="mark"/>
  </xsl:for-each>
  <xsl:value-of select="person/name[. != $ming]"/>
  <xsl:for-each select="person[name != $ming]">
      <xsl:value-of select="subject"/>
   <xsl:value-of select="mark"/>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>

我没有做表格,你自己确认一下对不对吧


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
80.078ms