From 044d9efb6c97d65247a1287e7676de0ee75b3cfe Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <peter_e@gmx.net> Date: Mon, 27 Feb 2017 10:44:59 -0500 Subject: [PATCH] Create INSTALL file via XSLT As before, create an INSTALL.html file for processing with lynx, but use xsltproc and a new XSLT stylesheet instead of jade and DSSSL. Replacing jade with xsltproc removes jade from the requirements for distribution building. Reviewed-by: Magnus Hagander <magnus@hagander.net> --- doc/src/sgml/.gitignore | 1 + doc/src/sgml/Makefile | 35 +++++++----- doc/src/sgml/stylesheet-text.xsl | 98 ++++++++++++++++++++++++++++++++ doc/src/sgml/stylesheet.dsl | 43 -------------- 4 files changed, 120 insertions(+), 57 deletions(-) create mode 100644 doc/src/sgml/stylesheet-text.xsl diff --git a/doc/src/sgml/.gitignore b/doc/src/sgml/.gitignore index 2f0329c15f9..cdeace2991e 100644 --- a/doc/src/sgml/.gitignore +++ b/doc/src/sgml/.gitignore @@ -7,6 +7,7 @@ /man-stamp # Other popular build targets /INSTALL +/INSTALL.xml /postgres-US.pdf /postgres-A4.pdf /postgres.html diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile index fe7ca65cd4b..774d35de20e 100644 --- a/doc/src/sgml/Makefile +++ b/doc/src/sgml/Makefile @@ -217,10 +217,9 @@ postgres.pdf: ## -## Semi-automatic generation of some text files. +## Generation of some text files. ## -JADE.text = $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -i output-text -t sgml ICONV = iconv LYNX = lynx @@ -233,10 +232,15 @@ LYNX = lynx # locale support and is very picky about locale name spelling. The # below has been finely tuned to run on FreeBSD and Linux/glibc. INSTALL: % : %.html - $(PERL) -p -e 's/<H(1|2)$$/<H\1 align=center/g' $< | LC_ALL=en_US.ISO8859-1 $(LYNX) -force_html -dump -nolist -stdin | $(ICONV) -f latin1 -t us-ascii//TRANSLIT > $@ + $(PERL) -p -e 's,<h(1|2) class="title",<h\1 align=center,g' $< | LC_ALL=en_US.ISO8859-1 $(LYNX) -force_html -dump -nolist -stdin | $(ICONV) -f latin1 -t us-ascii//TRANSLIT > $@ -INSTALL.html: standalone-install.sgml installation.sgml version.sgml - $(JADE.text) -V nochunks standalone-install.sgml installation.sgml > $@ +INSTALL.html: %.html : stylesheet-text.xsl %.xml + $(XMLLINT) --noout --valid $*.xml + $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $^ >$@ + +INSTALL.xml: standalone-install.sgml installation.sgml version.sgml + $(OSX) -D. -x lower $(filter-out version.sgml,$^) >$@.tmp + $(call mangle-xml,chapter) ## @@ -247,12 +251,15 @@ INSTALL.html: standalone-install.sgml installation.sgml version.sgml # if we try to do "make all" in a VPATH build without the explicit # $(srcdir) on the postgres.sgml dependency in this rule. GNU make bug? postgres.xml: $(srcdir)/postgres.sgml $(ALMOSTALLSGML) - $(OSX) -D. -x lower -i include-xslt-index $< >postgres.xmltmp - $(PERL) -p -e 's/\[(aacute|acirc|aelig|agrave|amp|aring|atilde|auml|bull|copy|eacute|egrave|gt|iacute|lt|mdash|nbsp|ntilde|oacute|ocirc|oslash|ouml|pi|quot|scaron|uuml) *\]/\&\1;/gi;' \ - -e '$$_ .= qq{<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">\n} if $$. == 1;' \ - <postgres.xmltmp > $@ - rm postgres.xmltmp -# ' hello Emacs + $(OSX) -D. -x lower -i include-xslt-index $< >$@.tmp + $(call mangle-xml,book) + +define mangle-xml +$(PERL) -p -e 's/\[(aacute|acirc|aelig|agrave|amp|aring|atilde|auml|bull|copy|eacute|egrave|gt|iacute|lt|mdash|nbsp|ntilde|oacute|ocirc|oslash|ouml|pi|quot|scaron|uuml) *\]/\&\1;/gi;' \ + -e '$$_ .= qq{<!DOCTYPE $(1) PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">\n} if $$. == 1;' \ + <$@.tmp > $@ +rm $@.tmp +endef ifeq ($(STYLE),website) XSLTPROC_HTML_FLAGS += --param website.stylesheet 1 @@ -386,13 +393,13 @@ check-tabs: # This allows removing some files from the distribution tarballs while # keeping the dependencies satisfied. .SECONDARY: postgres.xml $(GENERATED_SGML) HTML.index -.SECONDARY: INSTALL.html +.SECONDARY: INSTALL.html INSTALL.xml .SECONDARY: %-A4.tex-ps %-US.tex-ps %-A4.tex-pdf %-US.tex-pdf clean: # text --- these are shipped, but not in this directory rm -f INSTALL - rm -f INSTALL.html + rm -f INSTALL.html INSTALL.xml # single-page output rm -f postgres.html postgres.txt # print @@ -400,7 +407,7 @@ clean: # index rm -f HTML.index $(GENERATED_SGML) # XSLT - rm -f postgres.xml postgres.xmltmp htmlhelp.hhp toc.hhc index.hhk *.fo + rm -f postgres.xml *.tmp htmlhelp.hhp toc.hhc index.hhk *.fo # EPUB rm -f postgres.epub # Texinfo diff --git a/doc/src/sgml/stylesheet-text.xsl b/doc/src/sgml/stylesheet-text.xsl new file mode 100644 index 00000000000..476b871870d --- /dev/null +++ b/doc/src/sgml/stylesheet-text.xsl @@ -0,0 +1,98 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0' + xmlns="http://www.w3.org/TR/xhtml1/transitional" + exclude-result-prefixes="#default"> + +<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"/> +<xsl:import href="stylesheet-common.xsl" /> + +<!-- The customizations here are somewhat random in order to make the text + output look good. --> + +<!-- no section numbers or ToC --> +<xsl:param name="chapter.autolabel" select="0"/> +<xsl:param name="section.autolabel" select="0"/> +<xsl:param name="generate.toc"></xsl:param> + +<!-- don't need them, and they mess up formatting --> +<xsl:template match="indexterm"> +</xsl:template> + +<xsl:template match="step"> + <li> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> +<!-- messes up formatting + <xsl:call-template name="anchor"/> +--> + <xsl:apply-templates/> + </li> +</xsl:template> + +<!-- produce "ASCII markup" for emphasis and such --> + +<xsl:template match="emphasis"> + <xsl:text>*</xsl:text> + <xsl:apply-templates/> + <xsl:text>*</xsl:text> +</xsl:template> + +<xsl:template match="para/command|para/filename|para/option|para/replaceable"> + <xsl:call-template name="gentext.startquote"/> + <xsl:apply-templates/> + <xsl:call-template name="gentext.endquote"/> +</xsl:template> + +<xsl:template match="filename/replaceable|firstterm"> + <xsl:apply-templates/> +</xsl:template> + +<!-- tweak formatting for note, warning, etc. --> +<xsl:template name="nongraphical.admonition"> + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:call-template name="id.attribute"/> + + <xsl:if test="$admon.textlabel != 0 or title or info/title"> + <p> + <b> + <xsl:call-template name="anchor"/> + <xsl:apply-templates select="." mode="object.title.markup"/>: + </b> + </p> + </xsl:if> + + <xsl:apply-templates/> + </div> +</xsl:template> + +<!-- horizontal rules before titles (matches old DSSSL style) --> + +<xsl:template match="sect1/title + |sect1/info/title + |sect1info/title" + mode="titlepage.mode" priority="2"> + <hr/> + <xsl:call-template name="section.title"/> +</xsl:template> + +<xsl:template match="sect2/title + |sect2/info/title + |sect2info/title" + mode="titlepage.mode" priority="2"> + <hr/> + <xsl:call-template name="section.title"/> +</xsl:template> + +<xsl:template match="sect3/title + |sect3/info/title + |sect3info/title" + mode="titlepage.mode" priority="2"> + <hr/> + <xsl:call-template name="section.title"/> +</xsl:template> + +</xsl:stylesheet> diff --git a/doc/src/sgml/stylesheet.dsl b/doc/src/sgml/stylesheet.dsl index 61d2963b17c..05cab9a5f3d 100644 --- a/doc/src/sgml/stylesheet.dsl +++ b/doc/src/sgml/stylesheet.dsl @@ -4,7 +4,6 @@ <!-- must turn on one of these with -i on the jade command line --> <!ENTITY % output-html "IGNORE"> <!ENTITY % output-print "IGNORE"> -<!ENTITY % output-text "IGNORE"> <![ %output-html; [ <!ENTITY dbstyle PUBLIC "-//Norman Walsh//DOCUMENT DocBook HTML Stylesheet//EN" CDATA DSSSL> @@ -14,10 +13,6 @@ <!ENTITY dbstyle PUBLIC "-//Norman Walsh//DOCUMENT DocBook Print Stylesheet//EN" CDATA DSSSL> ]]> -<![ %output-text; [ -<!ENTITY dbstyle PUBLIC "-//Norman Walsh//DOCUMENT DocBook HTML Stylesheet//EN" CDATA DSSSL> -]]> - ]> <style-sheet> @@ -796,44 +791,6 @@ ]]> <!-- %output-print --> - -<!-- Plain text output customization ............................... --> - -<!-- -This is used for making the INSTALL file and others. We customize the -HTML stylesheets to be suitable for dumping plain text (via Netscape, -Lynx, or similar). ---> - -<![ %output-text; [ - -(define %section-autolabel% #f) -(define %chapter-autolabel% #f) -(define $generate-chapter-toc$ (lambda () #f)) - -;; For text output, produce "ASCII markup" for emphasis and such. - -(define ($asterix-seq$ #!optional (sosofo (process-children))) - (make sequence - (literal "*") - sosofo - (literal "*"))) - -(define ($dquote-seq$ #!optional (sosofo (process-children))) - (make sequence - (literal (gentext-start-quote)) - sosofo - (literal (gentext-end-quote)))) - -(element (para command) ($dquote-seq$)) -(element (para emphasis) ($asterix-seq$)) -(element (para filename) ($dquote-seq$)) -(element (para option) ($dquote-seq$)) -(element (para replaceable) ($dquote-seq$)) -(element (para userinput) ($dquote-seq$)) - -]]> <!-- %output-text --> - </style-specification-body> </style-specification> -- GitLab