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

Subject: Re: [xsl] How to render TEI <div*>s with chapter-like pagination?
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 10 Apr 2003 20:39:21 +0100

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

It's not just fragile, it just simply won't work at all in many
situations as d-o-e is an optional feature. In particular it
almost certainly won't work if the result tree from XSLT is passed
straight as an in memory tree to the FO engine as d-o-e is about
writing out tags and tags don't have any meaning for an XML tree, only
its linearisation.

You really need to think in tree transformations when using XSLT
if you think in those terms then you can't even state a requirement to
create non-well formed markup, and XSLT's behaviour will seem far more
natural.

David


If I understand you correctly you want page-sequences that slurp up
a anything before the first div
b each div
c anything after the last div
which is something like

<xsl:variable name="x" select="div1|div2|div3"/>

<xsl:if test="$x[1]/preceding-sibling::*">
  <fo:page-sequence>
    <xsl:apply-templates select="$x[1]/preceding-sibling::*"/>
  </fo:page-sequence>
  </xsl:if>
  <xsl:apply-templates select="$x"/>

<xsl:if test="$x[last()]/following-sibling::*">
  <fo:page-sequence>
    <xsl:apply-templates select="$x[last()]/following-sibling::*"/>
  </fo:page-sequence>
  </xsl:if>

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


Current Thread