Thanks Bob,
I had a play around with the epub/docbook.xsl and managed to get it
working.
I am not sure if it's 100% correct, but below is my modified custom
template for handling mediaobject:
<xsl:template match="d:mediaobject|d:mediaobjectco|d:inlinemediaobject"
mode="opf.manifest">
<xsl:variable name="olist" select="d:imageobject|d:imageobjectco"/>
<!-- Glenn McDonald: Limit the mediaobject to the one that matches our
role -->
<xsl:variable name="object.index">
<xsl:call-template name="select.mediaobject.index">
<xsl:with-param name="olist" select="$olist"/>
<xsl:with-param name="count" select="1"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="object" select="$olist[position() = $object.index]"/>
<!-- Glenn McDonald: replaced d:imageobject with $object as defined
above -->
<xsl:choose>
<xsl:when test="$object/d:imageda...@format = 'GIF' or
@format = 'GIF87a' or
@format = 'GIF89a' or
@format = 'JPEG' or
@format = 'JPG' or
@format = 'PNG' or
@format = 'SVG']">
<xsl:apply-templates select="$object[d:imageda...@format = 'GIF' or
@format =
'GIF87a' or
@format =
'GIF89a' or
@format =
'JPEG' or
@format = 'JPG' or
@format = 'PNG' or
@format =
'SVG']][1]/d:imagedata"
mode="opf.manifest"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$object/d:imagedata[1]" mode="opf.manifest"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Cheers,
Glenn
On 15/07/2010 2:47 AM, Bob Stayton wrote:
Hi Glenn,
I looked at the epub/docbook.xsl stylesheet, and it does have a custom
template for handling mediaobject. Unfortunately, it does not run the
selection routine to pick one of several imageobjects, so you get them
all.
To see how it should be handled, look in xhtml/graphic.xsl, at the
template starting with:
<xsl:template match="mediaobject|mediaobjectco">
you will see that the first steps are to call the template named
'select.mediaobject.index', which should return one imageobject.
That's where the role attribute is used to select one of the
imageobjects.
Out of the box, the supported values of role are 'html', 'xhtml', or
'fo', but you can easily add a new one like 'epub' by setting the
'preferred.mediaobject.role' stylesheet param. See this reference for
more information.
http://www.sagehill.net/docbookxsl/GraphicSelection.html
Bob Stayton
Sagehill Enterprises
[email protected]
----- Original Message ----- From: "Glenn McDonald"
<[email protected]>
To: <[email protected]>
Sent: Tuesday, July 13, 2010 10:59 PM
Subject: [docbook-apps] OPF file for EPUB is linking to images with
different roles
For Docbook 4.x, I was able to use the following to force PDF's to
use SVG and HTML Books to use PNG's:
<mediaobject>
<imageobject role="fo">
<imagedata fileref="screenshots/wizard_step_1.svg" scale="70"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="screenshots/wizard_step_1.png" scale="70"/>
</imageobject>
</mediaobject>
This still works for PDF and HTML documents, however, I am finding
that the epub translation causes both of these images to be
referenced in the OPF file:
<manifest>
...
<item id="d0e88" href="screenshots/wizard_step_1.svg"
media-type="image/svg+xml"/>
<item id="d0e94" href="screenshots/wizard_step_1.png"
media-type="image/png"/>
...
</manifest>
The raw html output of the translated epub is (correctly) only
referencing the .png file
<div class="mediaobject"><img src="screenshots/wizard_step_1.png"
width="378" alt="Step 1 Image Data"/>
Incidentally, what "role" should an epub document be? role="epub"
does not seem to work. Is it "xhtml"?
Glenn
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]