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
[email protected]
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
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]