]> granicus.if.org Git - docbook-dsssl/commitdiff
Splitting head.content into smaller chunks of templates.
authorThomas Schraitle <tom_schr@web.de>
Tue, 18 Sep 2012 10:48:54 +0000 (10:48 +0000)
committerThomas Schraitle <tom_schr@web.de>
Tue, 18 Sep 2012 10:48:54 +0000 (10:48 +0000)
See https://lists.oasis-open.org/archives/docbook-apps/201209/msg00037.html

xsl/html/docbook.xsl

index 6962f4cfc8e07cc1137dd4184db26c1d5da6b2d1..20130d9533e4d6a6d6e75ac25c051f69b21b258f 100644 (file)
   </xsl:if>
 </xsl:template>
 
+<xsl:template name="head.content.base">
+  <xsl:param name="node" select="."/>
+  <base href="{$html.base}"/>
+</xsl:template>
+
+<xsl:template name="head.content.abstract">
+  <xsl:param name="node" select="."/>
+  <xsl:variable name="info" select="(articleinfo
+    |bookinfo
+    |prefaceinfo
+    |chapterinfo
+    |appendixinfo
+    |sectioninfo
+    |sect1info
+    |sect2info
+    |sect3info
+    |sect4info
+    |sect5info
+    |referenceinfo
+    |refentryinfo
+    |partinfo
+    |info
+    |docinfo)[1]"/>
+  <xsl:if test="$info and $info/abstract">
+    <meta name="description">
+      <xsl:attribute name="content">
+        <xsl:for-each select="$info/abstract[1]/*">
+          <xsl:value-of select="normalize-space(.)"/>
+          <xsl:if test="position() &lt; last()">
+            <xsl:text> </xsl:text>
+          </xsl:if>
+        </xsl:for-each>
+      </xsl:attribute>
+    </meta>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content.link.made">
+  <xsl:param name="node" select="."/>
+  
+  <link rev="made" href="{$link.mailto.url}"/>
+</xsl:template>
+
+<xsl:template name="head.content.generator">
+  <xsl:param name="node" select="."/>
+  <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+</xsl:template>
+
+<xsl:template name="head.content.style">
+  <xsl:param name="node" select="."/>
+  <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+       background-repeat: no-repeat;
+       background-position: top left;
+       /* The following properties make the watermark "fixed" on the page. */
+       /* I think that's just a bit too distracting for the reader... */
+       /* background-attachment: fixed; */
+       /* background-position: center center; */
+     }</xsl:text>
+    </style>
+</xsl:template>
+
 <xsl:template name="head.content">
   <xsl:param name="node" select="."/>
   <xsl:param name="title">
   </xsl:call-template>
 
   <xsl:if test="$html.base != ''">
-    <base href="{$html.base}"/>
+    <xsl:call-template name="head.content.base">
+      <xsl:with-param name="node" select="$node"/>
+    </xsl:call-template>
   </xsl:if>
 
   <!-- Insert links to CSS files or insert literal style elements -->
   </xsl:if>
 
   <xsl:if test="$link.mailto.url != ''">
-    <link rev="made"
-          href="{$link.mailto.url}"/>
+    <xsl:call-template name="head.content.link.made">
+      <xsl:with-param name="node" select="$node"/>
+    </xsl:call-template>
   </xsl:if>
 
-  <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+  <xsl:call-template name="head.content.generator">
+    <xsl:with-param name="node" select="$node"/>
+  </xsl:call-template>
 
   <xsl:if test="$generate.meta.abstract != 0">
-    <xsl:variable name="info" select="(articleinfo
-                                      |bookinfo
-                                      |prefaceinfo
-                                      |chapterinfo
-                                      |appendixinfo
-                                      |sectioninfo
-                                      |sect1info
-                                      |sect2info
-                                      |sect3info
-                                      |sect4info
-                                      |sect5info
-                                      |referenceinfo
-                                      |refentryinfo
-                                      |partinfo
-                                      |info
-                                      |docinfo)[1]"/>
-    <xsl:if test="$info and $info/abstract">
-      <meta name="description">
-        <xsl:attribute name="content">
-          <xsl:for-each select="$info/abstract[1]/*">
-            <xsl:value-of select="normalize-space(.)"/>
-            <xsl:if test="position() &lt; last()">
-              <xsl:text> </xsl:text>
-            </xsl:if>
-          </xsl:for-each>
-        </xsl:attribute>
-      </meta>
-    </xsl:if>
+    <xsl:call-template name="head.content.abstract">
+      <xsl:with-param name="node" select="$node"/>
+    </xsl:call-template>
   </xsl:if>
 
   <xsl:if test="($draft.mode = 'yes' or
                 ($draft.mode = 'maybe' and
                 ancestor-or-self::*[@status][1]/@status = 'draft'))
                 and $draft.watermark.image != ''">
-    <style type="text/css"><xsl:text>
-body { background-image: url('</xsl:text>
-<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
-       background-repeat: no-repeat;
-       background-position: top left;
-       /* The following properties make the watermark "fixed" on the page. */
-       /* I think that's just a bit too distracting for the reader... */
-       /* background-attachment: fixed; */
-       /* background-position: center center; */
-     }</xsl:text>
-    </style>
+    <xsl:call-template name="head.content.style">
+      <xsl:with-param name="node" select="$node"/>
+    </xsl:call-template>
   </xsl:if>
   <xsl:apply-templates select="." mode="head.keywords.content"/>
 </xsl:template>