diff options
Diffstat (limited to 'doc/src/sgml/stylesheet-html-common.xsl')
-rw-r--r-- | doc/src/sgml/stylesheet-html-common.xsl | 304 |
1 files changed, 304 insertions, 0 deletions
diff --git a/doc/src/sgml/stylesheet-html-common.xsl b/doc/src/sgml/stylesheet-html-common.xsl new file mode 100644 index 0000000..9df2782 --- /dev/null +++ b/doc/src/sgml/stylesheet-html-common.xsl @@ -0,0 +1,304 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY % common.entities SYSTEM "http://docbook.sourceforge.net/release/xsl/current/common/entities.ent"> +%common.entities; +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0" + xmlns="http://www.w3.org/1999/xhtml"> + +<!-- + This file contains XSLT stylesheet customizations that are common to + all HTML output variants (chunked and single-page). + --> + +<!-- Parameters --> +<xsl:param name="make.valid.html" select="1"></xsl:param> +<xsl:param name="generate.id.attributes" select="1"></xsl:param> +<xsl:param name="make.graphic.viewport" select="0"/> +<xsl:param name="link.mailto.url">pgsql-docs@lists.postgresql.org</xsl:param> +<xsl:param name="toc.max.depth">2</xsl:param> + +<!-- + The below allows the stylesheets provided by the website to be applied fully + to the generated HTML. + --> +<xsl:template name="body.attributes"> + <xsl:attribute name="id">docContent</xsl:attribute> + <xsl:attribute name="class">container-fluid col-10</xsl:attribute> +</xsl:template> + +<!-- Change display of some elements --> + +<xsl:template match="command"> + <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="confgroup" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates select="conftitle/text()" mode="bibliography.mode"/> + <xsl:text>, </xsl:text> + <xsl:apply-templates select="confdates/text()" mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="isbn" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:text>ISBN </xsl:text> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + + +<!-- table of contents configuration --> + +<xsl:param name="generate.toc"> +appendix toc,title +article/appendix nop +article toc,title +book toc,title +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title +</xsl:param> + +<xsl:param name="generate.section.toc.level" select="1"></xsl:param> + +<!-- include refentry under sect1 in tocs --> +<xsl:template match="sect1" mode="toc"> + <xsl:param name="toc-context" select="."/> + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="nodes" select="sect2|refentry + |bridgehead[$bridgehead.in.toc != 0]"/> + </xsl:call-template> +</xsl:template> + + +<!-- Put index "quicklinks" (A | B | C | ...) at the top of the bookindex page. --> + +<!-- from html/autoidx.xsl --> + +<xsl:template name="generate-basic-index"> + <xsl:param name="scope" select="NOTANODE"/> + + <xsl:variable name="role"> + <xsl:if test="$index.on.role != 0"> + <xsl:value-of select="@role"/> + </xsl:if> + </xsl:variable> + + <xsl:variable name="type"> + <xsl:if test="$index.on.type != 0"> + <xsl:value-of select="@type"/> + </xsl:if> + </xsl:variable> + + <xsl:variable name="terms" + select="//indexterm + [count(.|key('letter', + translate(substring(&primary;, 1, 1), + &lowercase;, + &uppercase;)) + [&scope;][1]) = 1 + and not(@class = 'endofrange')]"/> + + <xsl:variable name="alphabetical" + select="$terms[contains(concat(&lowercase;, &uppercase;), + substring(&primary;, 1, 1))]"/> + + <xsl:variable name="others" select="$terms[not(contains(concat(&lowercase;, + &uppercase;), + substring(&primary;, 1, 1)))]"/> + + <!-- pgsql-docs: added xmlns:xlink, autoidx.xsl doesn't include xlink in + exclude-result-prefixes. Without our customization that just leads to a + single xmlns:xlink in this div, but because we emit it it otherwise + gets pushed down to the elements output by autoidx.xsl --> + <div class="index" xmlns:xlink="http://www.w3.org/1999/xlink"> + <p class="indexdiv-quicklinks"> + <a href="#indexdiv-Symbols"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'index symbols'"/> + </xsl:call-template> + </a> + <xsl:apply-templates select="$alphabetical[count(.|key('letter', + translate(substring(&primary;, 1, 1), + &lowercase;,&uppercase;))[&scope;][1]) = 1]" + mode="index-div-quicklinks"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </p> + <!-- pgsql-docs: end added stuff --> + + <xsl:if test="$others"> + <xsl:choose> + <xsl:when test="normalize-space($type) != '' and + $others[@type = $type][count(.|key('primary', &primary;)[&scope;][1]) = 1]"> + <!-- pgsql-docs: added id attribute here for linking to it --> + <div class="indexdiv" id="indexdiv-Symbols"> + <h3> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'index symbols'"/> + </xsl:call-template> + </h3> + <dl> + <xsl:apply-templates select="$others[count(.|key('primary', &primary;)[&scope;][1]) = 1]" + mode="index-symbol-div"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </dl> + </div> + </xsl:when> + <xsl:when test="normalize-space($type) != ''"> + <!-- Output nothing, as there isn't a match for $other using this $type --> + </xsl:when> + <xsl:otherwise> + <!-- pgsql-docs: added id attribute here for linking to it --> + <div class="indexdiv" id="indexdiv-Symbols"> + <h3> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'index symbols'"/> + </xsl:call-template> + </h3> + <dl> + <xsl:apply-templates select="$others[count(.|key('primary', + &primary;)[&scope;][1]) = 1]" + mode="index-symbol-div"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </dl> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <xsl:apply-templates select="$alphabetical[count(.|key('letter', + translate(substring(&primary;, 1, 1), + &lowercase;,&uppercase;))[&scope;][1]) = 1]" + mode="index-div-basic"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </div> +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-basic"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:variable name="key" + select="translate(substring(&primary;, 1, 1), + &lowercase;,&uppercase;)"/> + + <xsl:if test="key('letter', $key)[&scope;] + [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> + <div class="indexdiv"> + <!-- pgsql-docs: added id attribute here for linking to it --> + <xsl:attribute name="id"> + <xsl:value-of select="concat('indexdiv-', $key)"/> + </xsl:attribute> + + <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)"> + <h3> + <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/> + </h3> + </xsl:if> + <dl> + <xsl:apply-templates select="key('letter', $key)[&scope;] + [count(.|key('primary', &primary;) + [&scope;][1])=1]" + mode="index-primary"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </dl> + </div> + </xsl:if> +</xsl:template> + +<!-- pgsql-docs --> +<xsl:template match="indexterm" mode="index-div-quicklinks"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:variable name="key" + select="translate(substring(&primary;, 1, 1), + &lowercase;,&uppercase;)"/> + + <xsl:if test="key('letter', $key)[&scope;] + [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> + <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)"> + | + <a> + <xsl:attribute name="href"> + <xsl:value-of select="concat('#indexdiv-', $key)"/> + </xsl:attribute> + <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/> + </a> + </xsl:if> + </xsl:if> +</xsl:template> + + +<!-- upper case HTML anchors for backward compatibility --> + +<xsl:template name="object.id"> + <xsl:param name="object" select="."/> + <xsl:choose> + <xsl:when test="$object/@id"> + <xsl:value-of select="translate($object/@id, &lowercase;, &uppercase;)"/> + </xsl:when> + <xsl:when test="$object/@xml:id"> + <xsl:value-of select="$object/@xml:id"/> + </xsl:when> + <xsl:when test="$generate.consistent.ids != 0"> + <!-- Make $object the current node --> + <xsl:for-each select="$object"> + <xsl:text>id-</xsl:text> + <xsl:number level="multiple" count="*"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="generate-id($object)"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> |