That worked great Ken. Unfortunately I can't do much about the page
elements as they need to be inline exactly where they appear in print
for the web for reference purposes.
Thanks again,
Spencer
On Fri, Jul 17, 2009 at 3:34 PM, G. Ken
Holman<gkholman(_at_)cranesoftwrights(_dot_)com> wrote:
At 2009-07-17 15:24 -0700, Spencer Tickner wrote:
If I had an XML
like the following (snippet tried to cover off most scenarios):
<?xml version="1.0"?>
<root>
<a>This is some text</a>
<s>
<section>
<toc>Heading 1</toc>
<p>This is<endofpage num="1"/> a paragraph</p>
<p>This is a paragraph</p>
</section>
<section>
<toc>Heading 2</toc>
<p>This is a paragraph</p>
</section>
<section>
<p>This is a paragraph</p>
<p>This<endofpage num="2"/> is a paragraph</p>
<li>
<p>This is a paragraph</p>
<p>This is a paragraph</p>
</li>
</section>
<section>
<toc>Heading 3</toc>
<p>This is a paragraph</p>
</section>
</s>
<a>This<endofpage num="3"/> is some more text</a>
<p>This is a paragraph</p>
</root>
the <endofpage> element can appear anywhere within the document in an
element that contains text. The issues is building a table of contents
of the <toc> elements. For <toc>Heading 1</toc> no problem using
descendant axis. However with Heading 2 and Heading 3 I can't figure
out how to get the page number. I'm looking for something like:
<xsl:template match="toc">
<p><xsl:value-of select="."/> ......... <!-- next endofpage/@num goes
here --></p>
</xsl:template>
Any thoughts?
So by "next" do you need the "closest" <endofpage> element to the start of
each given section with a <toc>?
Since you are already in a section's child, that would entail going up to
the parent of <toc> and down as well as those that follow, so the first of
the union of those addressed elements:
(..//endofpage | ../following::endofpage)[1]
... though I would strongly suggest you revisit your XML to see if the
<endofpage> can be more logically positioned. I understand of course that
many times we have to deal with what we are given, but it would seem to me
there are too many opportunities for a misplaced <endofpage> element.
I hope the example below helps.
. . . . . . . . . . Ken
T:\ftemp>type tickner.xml
<root>
<a>This is some text</a>
<s>
<section>
<toc>Heading 1</toc>
<p>This is<endofpage num="1"/> a paragraph</p>
<p>This is a paragraph</p>
</section>
<section>
<toc>Heading 2</toc>
<p>This is a paragraph</p>
</section>
<section>
<p>This is a paragraph</p>
<p>This<endofpage num="2"/> is a paragraph</p>
<li>
<p>This is a paragraph</p>
<p>This is a paragraph</p>
</li>
</section>
<section>
<toc>Heading 3</toc>
<p>This is a paragraph</p>
</section>
</s>
<a>This<endofpage num="3"/> is some more text</a>
<p>This is a paragraph</p>
</root>
T:\ftemp>xslt tickner.xml tickner.xsl
<?xml version="1.0" encoding="utf-8"?>
<table-of-contents>
<p>Heading 1...............1</p>
<p>Heading 2...............2</p>
<p>Heading 3...............3</p>
</table-of-contents>
T:\ftemp>type tickner.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<table-of-contents>
<xsl:apply-templates select="//toc"/>
</table-of-contents>
</xsl:template>
<xsl:template match="toc">
<p>
<xsl:value-of select="."/>
<xsl:text>...............</xsl:text>
<xsl:value-of select="(..//endofpage |
../following::endofpage)[1]/@num"/>
</p>
</xsl:template>
</xsl:stylesheet>
T:\ftemp>
--
XSLT/XSL-FO/XQuery hands-on training - Oakland, CA, USA 2009-08-03
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--