Re: [xsl] alphabetic counters

Subject: Re: [xsl] alphabetic counters
From: David Carlisle <davidc@xxxxxxxxx>
Date: Mon, 10 May 2004 17:13:05 +0100
Ouch!

Never use disable-output escaping like that!

> <a href="#konacki2003">Konacki et al. 2003</a>

Not really it doesn't produce an a element at all, it just produces teh
text stream with that markup, which would normally appear in XML or html
as

&lt;a href="#konacki2003"&gt;Konacki et al. 2003&lt;/a&gt;

You might, if you are lucky and your system supports d-o-e get an
element after the output from XSLT is serialised and re-parsed by an XML
parser but there is no need to do that, just have

<xsl:for-each select="reference">
 <a href="#{@cite}">
  <xsl:value-of select="id(@cite)/@author" />
  <xsl:value-of select="id(@cite)/@year" />
 </a>
<xsl:if test="position() != last()">, >/xsl:if>
</xsl:for-each>


  What my problem is, is that references like the above are supposed to 
  be suffixed by a lower case alphabetic character ('a', 'b', etc.) after 
  the year if there are multiple 'citation' elements with identical 
  values for 'author' and 'year'.

that's really a "grouping problem" more efficiently solved with keys,
(see the faq or jeni's site) however a direct extension of teh above
would be

<xsl:for-each select="reference">
 <xsl:variable name="x">
  <xsl:number format="a" count="reference[@author=current()/@author][@year=current()/@year]"/>
 </xsl:variable>
 <a href="#{@cite}{$x}">
  <xsl:value-of select="id(@cite)/@author" />
  <xsl:value-of select="id(@cite)/@year" />
 </a>
<xsl:if test="position() != last()">, >/xsl:if>
</xsl:for-each>


(or maybe you need one less than that count, I'm not sure)

David

-- 
The LaTeX Companion
  http://www.awprofessional.com/bookstore/product.asp?isbn=0201362996
  http://www.amazon.co.uk/exec/obidos/tg/detail/-/0201362996/202-7257897-0619804


________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread