Subject: Re: [xsl] generating ID strings that are both readable and unique From: David Carlisle <davidc@xxxxxxxxx> Date: Tue, 14 Oct 2008 10:29:44 +0100 |
<section><title>grumble</title>...</section> <section id="grumble"><title>grumble</title>...</section> would make <section id="grumble"><title>grumble</title>...</section> <section id="grumble"><title>grumble</title>...</section> you can avoid this like so <xsl:key name="noid" match="section[not(@id)]" use="translate(title,' !#,()','_')"/> <xsl:key name="id" match="*[@id]" use="@id"/> <xsl:template match="section[not(@id)]"> <xsl:copy> <xsl:variable name="id" select="translate(title,' !#._,()','_')"/> <xsl:variable name="thisnode" select="generate-id()"/> <xsl:attribute name="id"> <xsl:value-of select="$id"/> <xsl:for-each select="key('noid',$id)"> <xsl:if test="(key('id',$id)) or (position()!=1 and generate-id(.)=$thisnode)"> <xsl:text>-</xsl:text> <xsl:value-of select="position()"/> </xsl:if> </xsl:for-each> </xsl:attribute> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> which makes <section id="grumble-1"><title>grumble</title>...</section> <section id="grumble"><title>grumble</title>...</section> adding -1 now. So as long as the "suffix" form isn't used by any original ids, you should be OK. David ________________________________________________________________________ The Numerical Algorithms Group Ltd is a company registered in England and Wales with company number 1249803. The registered office is: Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] generating ID strings tha, Trevor Nicholls | Thread | RE: [xsl] generating ID strings tha, Michael Kay |
RE: [xsl] generating ID strings tha, Trevor Nicholls | Date | RE: [xsl] generating ID strings tha, Michael Kay |
Month |