On Tue, Dec 03, 2002 at 04:15:17PM +0200, Togan Muftuoglu wrote:
> * Togan Muftuoglu; <toganm@users.sourceforge.net> on 03 Dec, 2002 wrote:
> >* Alain NAKACHE; <alain@cal.fr> on 03 Dec, 2002 wrote:
> >>At 14:49 03/12/02 +0200, Togan Muftuoglu wrote:
> >>>Hi,
> >>figure bitmap.
> >>
> >>Bob Stayton pointed to me the following advice :
> >>"You would need to customize the template named
> >>'formal.object' in the stylesheet file fo/formal.xsl.
> >>But you would need to learn XSL-FO in order to put
> >>the border attributes in the right place. Then you
> >>have to hope that FOP can output it correctly."
> >>but my result was to enclose the whole Block and not only the figure.
> >
> >Strange I had the exact same result :-) Also fighting with FOP is
> >another major issue
>
> Ok I have progressed a bit further I am able to make a frame all around
> the figure and only figure.
>
> <xsl:attribute-set name="figure.properties"
> use-attribute-sets="formal.object.properties">
> <xsl:attribute name="border-color">black</xsl:attribute>
> <xsl:attribute name="border-style">solid</xsl:attribute>
> </xsl:attribute-set>
>
> <xsl:template match="figure">
> <fo:block xsl:use-attribute-sets="figure.properties">
> <xsl:apply-templates/>
> </fo:block>
> </xsl:template>
>
>
> The only thing missing is the Figure title ie "Figure 1.1 Bla Bla"
The problem is that your new match="figure" template
overwrites the original, which called the "formal.object"
template which produced the title.
That's why I suggested customizing formal.object instead:
<xsl:template name="formal.object">
<xsl:param name="placement" select="'before'"/>
<xsl:variable name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
<fo:block id="{$id}"
xsl:use-attribute-sets="formal.object.properties">
<xsl:if test="$placement = 'before'">
<xsl:call-template name="formal.object.heading"/>
</xsl:if>
<xsl:if test="local-name(.) = 'figure'"> <!-- new -->
<fo:block xsl:use-attribute-sets="figure.properties"> <!-- new -->
<xsl:apply-templates/> <!-- new -->
</fo:block> <!-- new -->
</xsl:if> <!-- new -->
<xsl:if test="$placement != 'before'">
<xsl:call-template name="formal.object.heading"/>
</xsl:if>
</fo:block>
</xsl:template>
You need to test for 'figure' since formal.object is
used for example and table too.
Combined with your 'figure.properties' attribute-set,
this should work.
--
Bob Stayton 400 Encinal Street
Publications Architect Santa Cruz, CA 95060
Technical Publications voice: (831) 427-7796
The SCO Group fax: (831) 429-1887
email: bobs@sco.com