This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Bib refs
- To: xsl-list at lists dot mulberrytech dot com
- Subject: [xsl] Bib refs
- From: Peter Flynn <peter at silmaril dot ie>
- Date: Sat, 24 Feb 2001 14:08:50 +2400
- Reply-To: xsl-list at lists dot mulberrytech dot com
I've had my nose too close to the grindstone to see this. It looks like
a candidate for Key, but I haven't grokked the fullness of keys yet.
This should be really obvious but I'm probably lacking enough sleep
or caffeine or something.
Given some para text containing an IDREF reference to something in the
bibliography of the document, eg <cit doc="someid">something</cit> ,
and some biblio references at the end to be sorted, each with an
ID attribute,
how can I replicate in the <ref> template the value which HTML will
generate
for the <li> that I am placing round each bib reference after sorting
at the end
of the doc?
In other words, how do I hoik back an xsl:number from elsewhere in
the tree
post-sorting but pre-serialization?
I can kludge round it by re-doing the entire sort locally each time
a <cit>
node gets handled, and testing the IDs against the IDREF, but that makes
me think of steamhammers and nuts.
Fragment:
<para>Some text referring to <cit doc="bar">PF</cit>.</para>
<para>Some more text referring to <cit doc="foo">MB</cit></para>
[...] <!-- doc is declared as IDREF in the DTD, bar below is an ID -->
<refs>
<book id="bar">
<author>Peter <name>Foo</name></author>
<title>Bars I Have Known</title>
<etc>Blah</etc>
</book>
<article id="foo">
<author>Michael <name>Bar</name></author>
<title>Foos I Have Barred</title>
<doctitle>World Foo Encyclopaedia</doctitle>
<etc>Blort</etc>
</article>
</refs>
I'm trying to do this:
<xsl:template match="cit">
<xsl:apply-templates/>
<sup>
<a>
<xsl:attribute name="href">
<xsl:text>#</xsl:text>
<xsl:value-of select="@doc"/>
</xsl:attribute>
<!-- need to replicate number generated in refs
<xsl:value-of select="WTF?"/>
-->?
</a>
</sup>
</xsl:template>
<xsl:template match="refs">
<h3>References</h3>
<ol>
<xsl:for-each select="book|article">
<xsl:sort select="author/name"/>
<li><!-- Need to generate number -->
<xsl:apply-templates/>
</li>
</xsl:for-each>
</ol>
</xsl:template>
Should you have the time, you can get the abbreviated instance at
http://oimelc.ucc.ie/bibref.xml | http://oimelc.ucc.ie/bibref.xsl
(warning, use right-click, that's a Cocoon server). And my apologies to
the purists for the goddessawful hybrid bib ref format...it was none
of my
doing, honest.
///Peter
--
XSL: Think like a tree, not a chainsaw.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list