|
Subject: [xsl] How to create index entry in xsl file? From: "Kalpana Pathak" <pathak.kalpana@xxxxxxxxx> Date: Mon, 22 Dec 2008 19:43:04 +0530 |
Hello everyone,
I would like to generate the indexes in the PDF output. I typed the
following elements in the xsl file, but it is giving me error. Can
someone guide me to what are the attributes/parameters i need to put
in the xsl file to generate the index.
<xsl:key name="letter" match="indexterm" use="substring(primary,1,1)"/>
<xsl:key name="letter" match="indexterm"
use="translate(substring(primary,1,1),
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
<xsl:apply-templates select="//indexterm[count(.|
key('letter',
translate(substring(primary,1,1),
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'))[1])
= 1]"
mode="index-div">
<xsl:sort select="translate(primary, 'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
</xsl:apply-templates>
<xsl:key name="primary" match="indexterm" use="primary"/>
<xsl:template match="indexterm" mode="index-div">
<!-- Get the group key (ie. first letter of index terms in this group -->
<xsl:variable name="key"
select="translate(substring(primary,1,1),
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
<!-- Output label for current index group -->
<xsl:value-of select="$key"/>
<xsl:apply-templates select="key('letter', $key)
[count(.|key('primary',primary)[1])=1]"
mode="index-primary">
<xsl:sort select="translate(primary,
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
</xsl:apply-templates>
</xsl:template>
<xsl:key name="primary" match="indexterm" use="primary"/>
<xsl:template match="indexterm" mode="index-primary">
<!-- Find all occurences of index term -->
<xsl:variable name="refs" select="key('primary', primary)"/>
<!-- Output text of index term -->
<xsl:value-of select="primary"/>
<xsl:for-each select="$refs[not(secondary)]">
<!-- Create page number reference (print) or link with back
reference (HTML) to each occurrence of the index term -->
</xsl:for-each>
<xsl:if test="$refs/secondary">
<!-- Process secondary level entries -->
</xsl:if>
</xsl:template>
Thanks in advance,
Kalpana
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Variable issues, David Carlisle | Thread | Re: [xsl] How to create index entry, Vasu Chakkera |
| Re: [xsl] Variable issues, Martin Honnen | Date | Re: [xsl] How to create index entry, Vasu Chakkera |
| Month |