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] | [List Home]


Subject: AW: [docbook-apps] Using imageobject twice on title page fails (FO)


Fantastic, this works fine. Still it's not easy for me to wrap my head around all the modes in DocBook XSL.

Thanks,
Ben


-----Ursprüngliche Nachricht-----
Von: Bob Stayton [mailto:bobs@sagehill.net] 
Gesendet: Freitag, 17. April 2015 20:56
An: Kallauch, Benjamin (EEIN); docbook-apps@lists.oasis-open.org
Betreff: Re: [docbook-apps] Using imageobject twice on title page fails (FO)

Hi,
If you take a peek inside the generated titlepage.templates.xsl, you'll 
see that each of the title pages uses different modes to process their 
elements:

recto page:

<xsl:template match="mediaobject" mode="book.titlepage.recto.auto.mode">
   <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format";
           xsl:use-attribute-sets="book.titlepage.recto.style">
     <xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
   </fo:block>
</xsl:template>

verso page:

<xsl:template match="mediaobject" mode="book.titlepage.verso.auto.mode">
   <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format";
         xsl:use-attribute-sets="book.titlepage.verso.style"
         space-before="1.5in">
     <xsl:apply-templates select="." mode="book.titlepage.verso.mode"/>
   </fo:block>
</xsl:template>

For many elements (including mediaobject), these modes eventually apply 
templates in the normal mode.  That's why you get duplicate ids.

You'll need to add a template to your customization layer something like 
this:

<xsl:template match="mediaobject" mode="book.titlepage.verso.mode">

   <!-- copy the contents of the normal template that matches on 
mediaobject (from fo/graphics.xsl) here, and remove the part that 
generates the id attribute. -->

</xsl:template>

(Add the namespace prefix d:mediaobject if you are using the namespaced 
stylesheets with DocBook 5).

Bob Stayton
Sagehill Enterprises
bobs@sagehill.net

On 4/10/2015 5:52 AM, Kallauch, Benjamin (EEIN) wrote:
> Hi group.
> I want to display an image (mediaobject) twice on my book titlepages,
> first on the recto page and second on the following verso page.
> I made a simple extension to the "titlepage.templates.xml" file as
> proposed by Bob. Here is an XML snippet:
> <t:titlepage-content t:side="recto">
>            <mediaobject
>                    t:predicate="[position() = 1]"/>
> .
> <t:titlepage-content t:side="verso">
> .
>            <mediaobject
>                    space-before="1.5in"
>                    t:predicate="[position() = 1]" />
> .
> When I do this with other elements (i.e. <author>), everything is fine.
> But if I do this with an image, the FOP complains about a previously
> used ID:
> "javax.xml.transform.TransformerException:
> org.apache.fop.fo.ValidationException: Property ID "N4000E" (found on
> "fo:block") previously used; ID values must be unique within a document!"
> I checked the FO-Output and indeed found the image block twice with the
> same ID ("N4000E"). For the other elements there is no problem, because
> they don't get an ID (i.e. author).
> Question: How can I reuse my image more than once on the recto/verso
> title page.
> I could insert a second imageobject (same file) and fetch it with
> t:predicate="[position() = 2]" as a work around. But somehow I want to
> keep my code easy and clean.
> Can anyone help? Thanks.
> Ben


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