xsl-list
[Top] [All Lists]

RE: Finding and promoting footnotes

2005-11-29 23:35:17
From: Trevor Nicholls [mailto:trevor(_at_)castingthevoid(_dot_)com]


<snip/>

trouble. What is the recommended way to process this so that 
the content of
the single FOOTNOTE which contains an <A ID="x"> which 
matches the document
body's <A href="id(x)"> is output here?



Trevor,

This statement within the template matching "A[(_at_)class='footnote']" --

<xsl:apply-templates select="/XML/FOOTNOTES" mode="body" />

could be specialized to apply to just the TableFootnote node you require:

<xsl:apply-templates select="//*/TableFootnote[A/@ID=$fid]" mode="body"/>

from its current context by calling out to the top of the input XML using
the "//" path expression, but at some runtime expense.  You want to avoid
this by making up a key table of TableFootnote elements (at top level of
stylesheet) --

<xsl:key name="footnotes" 
         match="*/FOOTNOTES/FOOTNOTE/TableFootnote" 
         use="A/@ID"/>

using the ID attribute of their child A nodes, and apply-templates to the
node-set returned by the desired index --

<xsl:apply-templates select="key('footnotes', 
        substring-before(substring-after(@href, '(')
        , ')')
        )" 
        mode="body"/>



In all these cases, obviously, the template we are applying should have a
match expression "TableFootnote" not "FOOTNOTES"


This could well be an FAQ but if so, not under the keywords I tried!


It is, but there is often difficulty knowing what keywords are appropriate
to a particular problem.  This problem, as are so many of XSL, is a grouping
problem.


HTH,

-----------------------------------
Mike Haarman,
XSL Developer,
Internet Broadcasting Systems, Inc.

--~------------------------------------------------------------------
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>