|
Subject: [xsl] XSL:key and Column grouping From: David Laurie <dlaurie@xxxxxxxxxxx> Date: Tue, 1 Feb 2005 13:24:33 -0700 |
Hello all,
I have a problem with a stylesheet that groups a set of elements into three
columns. As it is not flat, I have attempted to use an xsl:key function to
pick out every 3rd element out of all the desired nodes. This works, but when
I then use xsl:apply-templates to specify the output of those nodes and their
next two siblings, the nodes returned revert to their position in the normal
flow of the document. I have only recently started using xsl:key so it may be
that this is a simple problem or that I don't know the proper syntax (both
likely)). What I need is a way to access the key function at the
apply-templates step; or conversely to specify groups of three nodes when I
call the key function. I have tried both without success. Any ideas?
The xsl I am using (with xalan):
<xsl:key name="map" match="mapunits/maps" use="."/>
<xsl:template match="chapters" mode="track-thumb">
<xsl:if test="@chap=$chapter">
<div style="margin-top: 30px; margin-bottom: 20px;">
<span class="trackNumber">Track <xsl:value-of select="$chapter"/> - </span>
<span class="trackTitle">
<xsl:value-of select="chaptertitle"/> Maps</span>
</div>
<table border="0" cellpadding="0" cellspacing="0" >
<xsl:for-each select="key('map', mapunits/maps)[position() mod 3 = 1]">
<tr valign="top" style="width:100%">
<xsl:apply-templates select=".|following-sibling::maps[position() <
3]"/>
</tr>
</xsl:for-each>
</table>
</xsl:if>
</xsl:template>
Cheers,
dave
David Laurie
MA Humanities Computing
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] xsl:element name AVT, Jack Matheson | Thread | Re: [xsl] XSL:key and Column groupi, Wendell Piez |
| RE: [xsl] Merging two xml documents, Michael Kay | Date | Re: [xsl] XSL:key and Column groupi, Wendell Piez |
| Month |