xsl-list
[Top] [All Lists]

[xsl] Getting the first p inside a div

2008-08-19 10:21:22
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>
--~--

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