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: xsl fo conversion pb with customization layer.


Correcting my own mistake, see below.

> From bobs Mon Sep 10 01:41:16 2001
> 
> > From: Matthieu Paindavoine <mpaindav@toad.net>
> > 
> > I found a file that redefines the behavior of variablelist, and I would
> > like to use it as part of a customization layer. alas, I am not so
> > successful, and I would be glad if someone could provide some pointers.
> > 
> > I have my main xsl document: matt.xsl
> > 
> > 
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > 		xmlns:fo="http://www.w3.org/1999/XSL/Format"
> > 		extension-element-prefixes="fo"
> > 		version="1.0">
> > 
> > <xsl:import href="docbook.xsl"/>
> > <xsl:include href="variablelist.xsl"/>
> > 
> > </xsl:stylesheet>
> > 
> > 
> > which calls: variablelist.xsl
> > 
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > 		xmlns:fo="http://www.w3.org/1999/XSL/Format"
> > 		version="1.0">
> > 		
> > <xsl:template match="variablelist">
> >   <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
> > <xsl:apply-templates name="variablelist"/>
> > </xsl:template>
> > 
> > <xsl:template match="varlistentry">
> >   <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
> >   <fo:block xsl:use-attribute-sets="list.item.spacing">
> >     <xsl:apply-templates/>
> >   </fo:block>
> > </xsl:template>
> > 
> > <xsl:template match="varlistentry/term">
> >   <fo:inline><xsl:apply-templates/>,  </fo:inline>
> > </xsl:template>
> > 
> > <xsl:template match="varlistentry/term[position()=last()]" priority="2">
> >   <fo:inline>
> > <xsl:apply-templates/></fo:inline>
> > </xsl:template>
> > 
> > <xsl:template match="varlistentry/listitem">
> > <fo:block start-indent="{count(ancestor::*)*.05}in">
> > <xsl:apply-templates/></fo:block>
> > </xsl:template>
> > 
> > </xsl:stylesheet>
> > 
> > 
> > When running this through the fop blender, I get the following:
> > 
> > /usr/bin/xsltproc /home/matt/docbook-xsl-1.44/fo/matt.xsl main.xml > main.fo
> > Making portrait pages on USletter paper (8.5inx11in)
> > xsltApplyOneTemplate: failed to find extension block
> > xsltApplyOneTemplate: failed to find extension block
> > xsltApplyOneTemplate: failed to find extension block
> > xsltApplyOneTemplate: failed to find extension block
> > /usr/lib/j2sdk1.3/bin/java -classpath /home/matt/test/classes.zip:/home/matt/test/xerces.jar:/home/matt/test/xalan.jar:/home/matt/test/batik-1.0/batik.jar:/home/matt/test/batik-1.0/batik-svgbrowser.jar:/home/matt/test/batik-1.0/batik-svgpp.jar:/home/matt/test/fop.jar org.apache.fop.apps.Fop -fo main.fo -pdf main.pdf
> > security properties not found. using defaults.
> > FOP 0.19.0-CVS
> > using SAX parser org.apache.xerces.parsers.SAXParser
> > building formatting object tree
> > WARNING: property 'linefeed-treatment' ignored
> > setting up fonts
> > formatting FOs into areas
> >  [1] [2]
> > rendering areas to PDF
> > writing out PDF
> > 
> > Presumably the patch is correct, so it must be the way I apply that
> > customization... Could you please indicate what I did wrong?
> > I have tried different xsl processor (xalan and xslt) and they both
> > stumble on that pb. I have also noticed that the extension block error
> > is linked to the <fo:block> in the template varlistentry.
> > 
> > It seems to me that the error is that by copying this chunk out of the
> > main xsl file, I loose some context information. But I don't know
> > exactly what it is.
> 
> According to my reference book (Michael Kay's XSLT
> Programmer's Reference 2nd ed), the scope of
> extension-element-prefixes attribute is the stylesheet
> module, not the full stylesheet tree constructed by
> applying <xsl:include> and <xsl:import>. So I think
> the <xsl:stylesheet> element in variablelist.xsl
> needs to include:
> 
> 		extension-element-prefixes="fo"
> 
> That should clear up the "failed to find extension block"
> errors.

In fact, "fo" is not an extension-element-prefix at all, it
is a namespace for the literal result elements being
generated .  So the right answer is to remove this
attribute from <xsl:stylesheet> in both of his
customization files.  I should always test before
answering!  8)

bobs
Bob Stayton                                 400 Encinal Street
Publications Architect                      Santa Cruz, CA  95060
Technical Publications                      voice: (831) 427-7796
Caldera International, Inc.                 fax:   (831) 429-1887
                                            email: bobs@caldera.com


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


Powered by eList eXpress LLC