mirror of
https://github.com/postgres/postgres.git
synced 2025-05-11 05:41:32 +03:00
The stylesheets used for the HTML documentation rendered on postgresql.org have shifted, and no longer matched what was expected by "make STYLE=website html" builds performed locally. Local doc builds did not reflect other aspects of the website, including font and margins. This patch updates the references to use the current set of stylesheets that are used by the documentation on postgresql.org. This also wraps the documentation preview in a HTML container so it can keep the content within similar margins to those found on the website. The documentation on building the docs is updated to reflect this change, and to let the documentation builder know that an external network connection is required to properly preview documentation built with "make STYLE=website html" (which was true prior to this patch too, but not mentioned). Author: Jonathan Katz Reported-By: Tom Lane Discussion: https://postgr.es/m/1375.1581446233@sss.pgh.pa.us
301 lines
11 KiB
XML
301 lines
11 KiB
XML
<?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">
|
|
|
|
<!--
|
|
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)))]"/>
|
|
|
|
<div class="index">
|
|
<!-- pgsql-docs: begin added stuff -->
|
|
<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>
|