docs: html: copy images to output as part of xslt build

Until now the meson built HTML docs had non-working references to images. They
were copied in the make target. Instead of duplicating that for meson, copy
them as part of the xslt stylesheet.

Reported-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Discussion: https://postgr.es/m/3fc3bb9b-f7f8-d442-35c1-ec82280c564a@enterprisedb.com
This commit is contained in:
Andres Freund 2023-04-04 21:05:52 -07:00
parent ef07d351a1
commit 0012979d98
3 changed files with 28 additions and 1 deletions

View File

@ -144,7 +144,6 @@ html: html-stamp
html-stamp: stylesheet.xsl postgres-full.xml $(ALL_IMAGES)
$(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $(wordlist 1,2,$^)
cp $(ALL_IMAGES) html/
cp $(srcdir)/stylesheet.css html/
touch $@

View File

@ -101,4 +101,26 @@
<xsl:apply-templates select="." mode="xref"/>
</xsl:template>
<!--
Support for copying images to the output directory, so the output is self
contained.
-->
<xsl:template name="write-image">
<xsl:variable name="input_filename">
<xsl:value-of select="imagedata/@fileref"/>
</xsl:variable>
<!-- references images directly, without images/ -->
<xsl:variable name="output_filename">
<xsl:value-of select="concat($chunk.base.dir, substring-after($input_filename, '/'))"/>
</xsl:variable>
<xsl:call-template name="write.chunk">
<xsl:with-param name="filename" select="$output_filename"/>
<xsl:with-param name="content" select="document($input_filename)"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>

View File

@ -29,6 +29,12 @@
</xsl:param>
<!-- copy images to the output directory, so the output is self contained -->
<xsl:template match="imageobject">
<xsl:call-template name="write-image"/>
<xsl:apply-templates select="imagedata"/>
</xsl:template>
<!-- strip directory name from image filerefs -->
<xsl:template match="imagedata/@fileref">
<xsl:value-of select="substring-after(., '/')"/>