xsl-list
[Top] [All Lists]

Re: How to render TEI <div*>s with chapter-like pagination?

2003-04-10 12:17:08

--- Wendell Piez <wapiez(_at_)mulberrytech(_dot_)com> wrote:
James,

Would it help to have a trick for selecting all the
element children of 
body *except* the divs? So you can create a page
sequence for them?
-- snip --

<xsl:template match="body">
   <fo:page-sequence>
     <-- You may want to wrap this page-sequence in
a conditional
         to avoid spurious ones -->
     <xsl:apply-templates
select="*[not(self::div|self::div0|self::div1)]"/>
   </fo:page-sequence>
   <xsl:apply-templates select="div|div0|div1"/>
</xsl:template>

<xsl:template match="div|div0">
   <fo:page-sequence>
     <xsl:apply-templates/>
   </fo:page-sequence>
</xsl:template>

<xsl:template match="div1[not(parent::div0)]">
   <fo:page-sequence>
     <xsl:apply-templates/>
   </fo:page-sequence>
</xsl:template>

The problem I see with this is that, if I read it
right, it would put whatever stuff that may be in
between <div>s, like <milestone/> tags, out in front
of the <div>s instead.

I did have an idea of my own, though I'm not sure how
fragile it is. <div*>s are not allowed outside
<front>, <body>, or <back> tags. So, if those tags
always render as <fo:page-sequence> . . .
</fo:page-sequence>, then making it so that something
like "</fo:page-sequence><fo:page-sequence>" is output
at the beginning of every top-level <div> except the
first should do what I want. The main catch that I see
is that one has to do something ugly like <xsl:text
disable-output-escaping="yes">&lt;/fo:page-sequence&gt;</:xsl:text>,
etc., since XSLT doesn't allow ill-formed XML inside
templates.



__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - File online, calculators, forms, and more
http://tax.yahoo.com

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list