forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sina K. Heshmati" <>
Subject RE: generate-id and @id (skins)
Date Wed, 13 May 2009 17:19:07 GMT
Gavin wrote:
> Just wondering on the implementation of generate-id when @id are already
> present.
> Example, in sample.xml we have
> <section id="link-class">
> which gives us a generated file with
> <a name="N102CC"></a><a name="link-class"></a>
> Now, I don't see the generated-id as being referenced anywhere, whereas
> 'link-class' is referenced from the toc.
> This seems to be the situation for all <section id="..."> , they all get a
> generated id also.
> In document-to-html.xsl we have :-
>   <xsl:template match="section">
> <!-- count the number of section in the ancestor-or-self axis to compute
>          the title element name later on -->
>     <xsl:variable name="sectiondepth"
> select="count(ancestor-or-self::section)"/><a name="{generate-id()}"/>
>     <xsl:apply-templates select="@id"/>
> ...
> which causes the above behaviour.
> So, just wanted to query, should we use the given id and not use generate-id
> unless an id is not given? (as 'id' is not a required attribute of section)
> ? That way we have one named anchor or the other, not both.

The following template is responsible for processing the section tag in [1].

<xsl:template match="section">
  <a name="{generate-id()}"/> (1)
  <xsl:apply-templates select="@id"/> (2)

It should be safe to remove (1) and replace (2) and other references to @id with:

<xsl:call-template name="generate-id"/>

It would be even better to wrap the heading with a div. This way we can easily generate something

<div id="section-id">
  <a name="section-id"/> 
  <h2>Section Heading</h2>

The id attribute on the wrapper div will do what (1) is supposed to do and is generally a
better solution so we could also remove (1) unless there's a good reason not to do so.


[1] $FORREST/main/webapp/skins/common/xslt/html/document-to-html.xsl

View raw message