I have some footnotes in text coded like this:
<note>
<label/>
<cit>
<p/>
</cit>
<p/>
<p/>
</note>
While others are coded like this:
<note>
<label/>
<p/>
<p/>
</note>
I have a template which grabs the label and nests it inside the first
P in the note.
<xsl:template match="label[parent::note]">
<xsl:element name="a">
<xsl:for-each select="parent::note">
<xsl:attribute name="href">#c_<xsl:value-of select="@id"/></
xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="@id"/></
xsl:attribute>
<xsl:attribute name="id"><xsl:value-of
select="@id"/></xsl:attribute>
</xsl:for-each>
<xsl:text>[</xsl:text>
<xsl:apply-templates/>
<xsl:text>]</xsl:text>
</xsl:element>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="p[ancestor::note][1]" priority="2">
<xsl:element name="p">
<xsl:attribute name="class">note_p</xsl:attribute>
<xsl:apply-templates select="ancestor::note/label"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
This works just fine, until I encounter a note coded like this:
<note>
<label/>
<p/>
<cit>
<p/>
</cit>
</note>
Then, I end up with two copies of the same anchor, like this:
<div class="footnote">
<p>
<a id="foo" ... >*</a>
Footnote here.
</p>
<div class="cit">
<p>
<a id="foo" ... >*</a>
Citation here.
</p>
</div>
</div>
I am stuck using XSL 1.0 for this -- is there a way I can choke off
my function after it fires the first time inside the note? Is there
another way I could be looking at this problem?
Thanks,
Walter
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--