|
Subject: Re: [xsl] <br/> in FO? From: Joerg Pietschmann <joerg.pietschmann@xxxxxx> Date: Wed, 27 Feb 2002 16:07:45 +0100 |
"Gustaf Liljegren" <gustaf.liljegren@xxxxxx> wrote:
> I've found a reason for a <br/> tag in my DTD, and I wonder how to implement
> it in the XSL (to FO).
You have already been told that the FO equivalent of HTML
<p>Stuff<br>more stuff</p>
is preferably
<fo:block>
<fo:block>Stuff</fo:block>
<fo:block>more stuff</fo:block>
</fo:block>
You asked also how to get from something resembling the first to the
second. This is easy if the <br/> is a immediate child of the <p>, one
solution is
<xsl:template match="p">
<fo:block>
<fo:block>
<xsl:apply-templates select="node()[not(previous-sibling::br)]"/>
</fo:block>
<xsl:for-each select="br">
<fo:block>
<xsl:apply-templates
select="following-sibling::node()
[generate-id(previous-sibling::br[1])=generate-id(current())]"/>
</fo:block>
</xsl:for-each>
</fo:block>
</xsl:template>
(untested)
or you can handle it as a more general grouping problem, see the XSLT FAQ.
If the <br/> could be nested, for example
<p><em>Important Stuff<br/>more important stuff</em></p>
i can only think of a multipass solution which pulls up the <br/> to direct
child level, thereby splitting all elements it contains. (Not recommended
hack: use disable-output-escaping to generate "lone" tags)
If the above becomes unpracticable, you can have the FO processor honor
linefeed by setting the linefeed-treatment property to preserve.
(http://www.w3.org/TR/xsl/slice7.html#linefeed-treatment) That's more
of a kludge and may give unexpected results in some contexts, but you
might get a cheap shot. Inserting dummy blocks
<xsl:template match="br">
<fo:block/>
</xsl:template>
(perhaps with some modifications) might also be a cheap if brittle solution
in you concrete case.
HTH
J.Pietschmann
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] <br/> in FO?, Nitin . Jain | Thread | [xsl] XSLQUERRY, XSL Developer |
| [xsl] Re: TOKENISER, Dimitre Novatchev | Date | AW: [xsl] adding borderline at page, Fries, Markus, fiscu |
| Month |