]> granicus.if.org Git - docbook-dsssl/commitdiff
Add support for <meta name="cover"> to support conversion with KindleGen.
authorBob Stayton <bobs@sagehill.net>
Tue, 1 May 2012 06:22:34 +0000 (06:22 +0000)
committerBob Stayton <bobs@sagehill.net>
Tue, 1 May 2012 06:22:34 +0000 (06:22 +0000)
xsl/epub3/epub3-element-mods.xsl

index 79d7624a71298a6e03ce21ebed75e34064585c7a..279001db2982de8790bd99f878db5f9512222c9b 100644 (file)
@@ -149,6 +149,8 @@ article  toc,title,figure,table,example,equation
 <xsl:param name="epub.mimetype.pathname"
            select="concat($epub.package.dir, $epub.mimetype.filename)"/>
 
+<xsl:param name="kindle.extensions" select="0"/>
+
 <!--==============================================================-->
 <!--  Internal variables used for computing certain metadata      -->
 <!--==============================================================-->
@@ -298,6 +300,7 @@ article  toc,title,figure,table,example,equation
     <xsl:call-template name="metadata.title"/>
     <xsl:call-template name="metadata.language"/>
     <xsl:call-template name="metadata.modified"/>
+    <xsl:call-template name="metadata.cover"/>
     <xsl:call-template name="metadata.other.info"/>
     
   </xsl:element>
@@ -377,9 +380,11 @@ article  toc,title,figure,table,example,equation
 
   <xsl:if test="$epub.include.metadata.dc.elements != 0">
     <dc:language>
-      <xsl:attribute name="id">
-        <xsl:value-of select="$epub.dc.language.id"/>
-      </xsl:attribute>
+      <xsl:if test="$kindle.extensions = 0">
+        <xsl:attribute name="id">
+          <xsl:value-of select="$epub.dc.language.id"/>
+        </xsl:attribute>
+      </xsl:if>
       <xsl:value-of select="$lang"/>
     </dc:language>
   </xsl:if>
@@ -433,6 +438,22 @@ article  toc,title,figure,table,example,equation
   <xsl:value-of select="concat(substring($date,1,19), 'Z')"/>
 </xsl:template>
 
+<!-- This cover meta element used by kindlegen, at least -->
+<xsl:template name="metadata.cover">
+  <xsl:variable name="info" select="./*[contains(local-name(.), 'info')][1]"/>
+  <xsl:variable name="cover.image" 
+                select="$info//mediaobject[@role='cover' or ancestor::cover]"/>
+
+  <xsl:if test="$cover.image">
+    <xsl:element name="meta" namespace="{$opf.namespace}">
+      <xsl:attribute name="content">
+        <xsl:value-of select="$epub.cover.image.id"/>
+      </xsl:attribute>
+      <xsl:attribute name="name">cover</xsl:attribute>
+    </xsl:element>
+  </xsl:if>
+</xsl:template>
+
 <xsl:template name="metadata.other.info">
   <!-- Take info relative to selected root element -->
   <xsl:variable name="info" select="./*[contains(local-name(.), 'info')][1]"/>