Fix documentation build with older docbook-xsl
authorPeter Eisentraut <peter@eisentraut.org>
Thu, 8 Feb 2024 10:37:11 +0000 (11:37 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Thu, 8 Feb 2024 10:38:46 +0000 (11:38 +0100)
Commit b0f0a9432d0 backpatched some code from upstream DocBook XSL to
our customization layer.  It turned out that this failed to work with
anything but the latest DocBook XSL upstream version (1.79.*), because
the backpatched code references an XSLT parameter (autolink.index.see)
that is not defined in earlier versions (because the feature it is
used for did not exist yet).

There is no way in XSLT to test whether a parameter is declared before
the stylesheet processor tries and fails to access it.  So the
possibilities to fix this would be to either remove the code that uses
the parameter (and thus give up on the feature it is used for) or
declare the parameter in our customization layer.  The latter seems
easier, and with a few more lines of code we can backport the entire
autolink.index.see feature, so let's do that.  (If we didn't, then
with older stylesheets the parameter will appear as on, but it won't
actually do anything, because of the way the stylesheets are laid out,
so it's less confusing to just make it work.)

With this, the documentation build should work again with docbook-xsl
versions 1.77.*, 1.78.*, and 1.79.* (which already worked before).
Version 1.76.1 already didn't work before all this, so was not
considered here.

Reported-by: Peter Smith <smithpb2250@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/9077b779-a9f8-09c8-6e85-da1ebfba15af@eisentraut.org

doc/src/sgml/stylesheet-common.xsl
doc/src/sgml/stylesheet-fo.xsl
doc/src/sgml/stylesheet-html-common.xsl

index 5db44a846f37baff6e0a2797d7bfc8ee62d9cba7..a2e3db67a329fff6703253512c4a862e87f51374 100644 (file)
 <xsl:param name="variablelist.term.separator"></xsl:param>
 <xsl:param name="xref.with.number.and.title" select="0"></xsl:param>
 
+<!--
+  This is the default setting, but putting it here makes sure the variable
+  exists even with older (<1.79) stylesheet versions, because it is used in
+  our customization layer.
+-->
+<xsl:param name="autolink.index.see" select="1"/>
+
 
 <!-- Change display of some elements -->
 
index aff717ddbc78b7e339d8da576a6e47a3c540129a..3a4a88a728853cc09a33e5dbdcf07f571df45d93 100644 (file)
 
 <!-- from fo/autoidx.xsl -->
 
+<xsl:key name="primaryonly"
+         match="indexterm"
+         use="normalize-space(primary)"/>
+
 <xsl:template match="indexterm" mode="index-primary">
   <xsl:param name="scope" select="."/>
   <xsl:param name="role" select="''"/>
index 7f541c09885e5cc4a2f07f1ee886bd5cb37bec74..9dcf96c02e51888917257285b5cfdc9156e10e1e 100644 (file)
@@ -441,6 +441,10 @@ set       toc,title
 
 <!-- from html/autoidx.xsl -->
 
+<xsl:key name="primaryonly"
+         match="indexterm"
+         use="normalize-space(primary)"/>
+
 <xsl:template match="indexterm" mode="index-primary">
   <xsl:param name="scope" select="."/>
   <xsl:param name="role" select="''"/>