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