以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  怎样写分组(groupby)的xslt代码呢  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=8213)


--  作者:fjczq
--  发布时间:6/9/2004 10:16:00 AM

--  怎样写分组(groupby)的xslt代码呢
xml文件内容如下:

<root>
<product>
<class>a</class>
<detail>aa</detail>
</product>
<product>
<class>b</class>
<detail>bb</detail>
</product>
<product>
<class>a</class>
<detail>aaa</detail>
</product>
<product>
<class>d</class>
<detail>dd</detail>
</product>
</root>

我要转换成如下的html:

productclass:a
<select>
<option>aa</option>
<option>aaa</option>
</select>
productclass:b
<select>
<option>bb</option>
</select>
productclass:d
<select>
<option>dd</option>
</select>

我应该怎样写xslt代码呢?
谢谢。


--  作者:sam
--  发布时间:6/9/2004 12:55:00 PM

--  
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:key name="classcodes" match="product" use="class"/>
 <xsl:template match="/">
  <xsl:for-each select="//product[generate-id(.) = generate-id(key('classcodes',class)[1])]">
   <xsl:text>product class: </xsl:text>
   <xsl:value-of select="class"/>
   <br/>
   <select>
    <xsl:for-each select="key('classcodes',class)">
     <option>
      <xsl:value-of select="detail"/>
     </option>
    </xsl:for-each>
   </select>
   <br/>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
4,800.781ms