|
Subject: [xsl] Re: How to create index entry in xsl file? From: "Kalpana Pathak" <pathak.kalpana@xxxxxxxxx> Date: Tue, 23 Dec 2008 23:26:00 +0530 |
Hello Vasu,
I am not using docbook dtd. However, I am using DITA dtd. Will this help me?
Awaiting for your reply!
Thanks,
Kalpana
On 12/22/08, Kalpana Pathak <pathak.kalpana@xxxxxxxxx> wrote:
> 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] How to create index entry, Vasu Chakkera | Thread | [xsl] Using Java in XSLT to determi, Ylvisaker, Steve |
| RE: [xsl] numbering question, Michael Kay | Date | Re: [xsl] HTML character entity iss, Atul Shinh |
| Month |