xsl-list
[Top] [All Lists]

Re: alphabetic counters

2004-05-10 09:13:05

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="#{(_at_)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[(_at_)author=current()/@author][(_at_)year=current()/@year]"/>
 </xsl:variable>
 <a href="#{(_at_)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
________________________________________________________________________


<Prev in Thread] Current Thread [Next in Thread>