This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Grouping and conditional info questions
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: [xsl] Re: Grouping and conditional info questions
- From: "Yang" <sfyang at unisvr dot net dot tw>
- Date: Sat, 25 Aug 2001 16:11:34 +0800
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi, Ying Qin
The following xslt may be one of your solutions.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="item" match="item" use="id" />
<xsl:template match="/">
<groups>
<xsl:for-each
select="docs/item[count(.|key('item', id)[1]) = 1]">
<group>
<title><xsl:text>Group</xsl:text>
<xsl:number value="position()" format=" A"/>
</title>
<xsl:for-each select="key('item', id)">
<item>
<xsl:copy-of select="*"/>
</item>
</xsl:for-each>
<xsl:text>
</xsl:text>
</group>
</xsl:for-each>
</groups>
</xsl:template>
</xsl:stylesheet>
Basically, your problem is a typical group method, which
Jeni Tennison is one of the best to illustrate the solution for this kind
of method.
One of her most most recent post is on
http://sources.redhat.com/ml/xsl-list/2001-08/msg01289.html(title:grouping
headers)
I highly recommend you to read this one and her web site. It will help
yourself a
lot to be familiar with the subject about how to solve the group problem
using key and
Muenchian method.
Besides, copy-of is to copy child node of item, and xsl:number to get your
desired title name.
Hope it will help.
cheers.
Sun-fu Yang,
sfyang@unisvr.net.tw
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list