[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] generating ID strings that are both readable and unique
Subject: Re: [xsl] generating ID strings that are both readable and unique From: David Carlisle <davidc@xxxxxxxxx> Date: Tue, 14 Oct 2008 09:59:06 +0100 |
me> > However this mechanism isn't possible in XSL 1.0 me> me> why not? something like the following. You'd need to fine tune the set of characters made safe (this makes spaces into _ and discards !#,( but lets anything else through, and doesn't take care to avoid digits etc being at the front of the id but all those are probably fixable in practice. David <x> <section><title>Introduction with spaces!</title>...</section> ... <section id="examples"><title>Examples</title>...</section> <section><title>Examples</title>...</section> ... <section><title>Introduction with spaces!</title>...</section> <section id="foo"><title>og jhl</title>...</section> <section><title>og jhl</title>...</section> <section><title>og jhl</title>...</section> ... </x> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="node()"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:key name="noid" match="section[not(@id)]" use="translate(title,' !#,()','_')"/> <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="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> </xsl:stylesheet> $ saxon ids.xml ids.xsl <?xml version="1.0" encoding="utf-8"?><x> <section id="Introduction_with_spaces"><title>Introduction with spaces!</title>...</section> ... <section id="examples"><title>Examples</title>...</section> <section id="Examples"><title>Examples</title>...</section> ... <section id="Introduction_with_spaces-2"><title>Introduction with spaces!</title>...</section> <section id="foo"><title>og jhl</title>...</section> <section id="og_jhl"><title>og jhl</title>...</section> <section id="og_jhl-2"><title>og jhl</title>...</section> ... </x> ________________________________________________________________________ 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, David Carlisle | Thread | RE: [xsl] generating ID strings tha, Trevor Nicholls |
Re: [xsl] generating ID strings tha, David Carlisle | Date | RE: [xsl] generating ID strings tha, Trevor Nicholls |
Month |
Keywords