OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: Re: DOCBOOK-APPS: Attributes for figures


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


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC