git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chris Johnsen <chris_johnsen@pobox.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>,
	Chris Johnsen <chris_johnsen@pobox.com>
Subject: [PATCH 2/8] Documentation: use parametrized manpage-base.xsl with manpage-{1.72,normal}.xsl
Date: Tue, 24 Mar 2009 03:04:20 -0500	[thread overview]
Message-ID: <1237881866-5497-3-git-send-email-chris_johnsen@pobox.com> (raw)
In-Reply-To: <1237881866-5497-1-git-send-email-chris_johnsen@pobox.com>

Parametrize the backslash and dot characters that are used to
generate roff control sequences in manpage-base.xsl.

The code reuse is achieved through the Makefile's invocation of
xmlto, where the -base and either -normal or -1.72 "modules" are
combined to render the manpages. xmlto's module system works by
constructing a temporary XSLT stylesheet that <xsl:import>s the
main docbook-xsl file and then <xsl:includes> all the modules
specified on the command line. Because of a technical detail of
XSLT (<http://www.w3.org/TR/xslt#top-level-variables>), we need
to be sure that each param is bound only once across all the
modules that will be used in a single xmlto invocation.

The initial implementation used an explicit <xsl:import> to
achieve a layering effect that allowed default param values and
override param values. That worked fine until one of the final
features of this series needed to supply override param values
via  the --stringparam option of xmlto. It turns out that
--stringparam is broken in all but the pre-release version of
xmlto. Since xmlto is a shell script the patch to fix it is
simple enough, but I instead opted to use xmlto's "module"
functionality to achieve the XSLT stylesheet reuse.

Testing done with asciidoc 8.3.1 and docbook-xsl 1.74.0.

Signed-off-by: Chris Johnsen <chris_johnsen@pobox.com>

---

Still no change in behavior. Just refactoring here.
---
 Documentation/Makefile           |    2 +-
 Documentation/manpage-1.72.xsl   |   28 +++++++++++---------------
 Documentation/manpage-base.xsl   |   39 +++++++++++++++++++------------------
 Documentation/manpage-normal.xsl |   29 +++++++++++----------------
 4 files changed, 45 insertions(+), 53 deletions(-)

diff --git a/Documentation/Makefile b/Documentation/Makefile
index e1562e3..1b5ff36 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -165,7 +165,7 @@ $(MAN_HTML): %.html : %.txt
 
 %.1 %.5 %.7 : %.xml
 	$(RM) $@
-	xmlto -m $(MANPAGE_XSL) man $<
+	xmlto -m $(MANPAGE_XSL) -m manpage-base.xsl man $<
 
 %.xml : %.txt
 	$(RM) $@+ $@
diff --git a/Documentation/manpage-1.72.xsl b/Documentation/manpage-1.72.xsl
index 4065a3a..06d4485 100644
--- a/Documentation/manpage-1.72.xsl
+++ b/Documentation/manpage-1.72.xsl
@@ -1,21 +1,17 @@
-<!-- Based on callouts.xsl. Fixes man page callouts for DocBook 1.72 XSL -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- manpage-1.72.xsl:
+     special settings for manpages rendered from asciidoc+docbook
+     must be used with manpage-base.xsl
+     handles peculiarities in docbook-xsl 1.72.0 -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+		version="1.0">
 
+<!-- these are the special values for the roff control characters
+     needed for docbook-xsl 1.72.0 -->
+<xsl:param name="git.docbook.backslash">&#x2593;</xsl:param>
+<xsl:param name="git.docbook.dot"      >&#x2302;</xsl:param>
+
+<!-- these params silence some output from xmlto -->
 <xsl:param name="man.output.quietly" select="1"/>
 <xsl:param name="refentry.meta.get.quietly" select="1"/>
 
-<xsl:template match="co">
-	<xsl:value-of select="concat('&#x2593;fB(',substring-after(@id,'-'),')&#x2593;fR')"/>
-</xsl:template>
-<xsl:template match="calloutlist">
-	<xsl:text>&#x2302;sp&#10;</xsl:text>
-	<xsl:apply-templates/>
-	<xsl:text>&#10;</xsl:text>
-</xsl:template>
-<xsl:template match="callout">
-	<xsl:value-of select="concat('&#x2593;fB',substring-after(@arearefs,'-'),'. &#x2593;fR')"/>
-	<xsl:apply-templates/>
-	<xsl:text>&#x2302;br&#10;</xsl:text>
-</xsl:template>
-
 </xsl:stylesheet>
diff --git a/Documentation/manpage-base.xsl b/Documentation/manpage-base.xsl
index 6a361a2..6d3eb19 100644
--- a/Documentation/manpage-base.xsl
+++ b/Documentation/manpage-base.xsl
@@ -1,30 +1,31 @@
-<!-- callout.xsl: converts asciidoc callouts to man page format -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- manpage-base.xsl:
+     special formatting for manpages rendered from asciidoc+docbook -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+		version="1.0">
+
+<!-- convert asciidoc callouts to man page format;
+     git.docbook.backslash and git.docbook.dot params
+     must be supplied by another XSL file or other means -->
 <xsl:template match="co">
-	<xsl:value-of select="concat('\fB(',substring-after(@id,'-'),')\fR')"/>
+	<xsl:value-of select="concat(
+			      $git.docbook.backslash,'fB(',
+			      substring-after(@id,'-'),')',
+			      $git.docbook.backslash,'fR')"/>
 </xsl:template>
 <xsl:template match="calloutlist">
-	<xsl:text>.sp&#10;</xsl:text>
+	<xsl:value-of select="$git.docbook.dot"/>
+	<xsl:text>sp&#10;</xsl:text>
 	<xsl:apply-templates/>
 	<xsl:text>&#10;</xsl:text>
 </xsl:template>
 <xsl:template match="callout">
-	<xsl:value-of select="concat('\fB',substring-after(@arearefs,'-'),'. \fR')"/>
+	<xsl:value-of select="concat(
+			      $git.docbook.backslash,'fB',
+			      substring-after(@arearefs,'-'),
+			      '. ',$git.docbook.backslash,'fR')"/>
 	<xsl:apply-templates/>
-	<xsl:text>.br&#10;</xsl:text>
-</xsl:template>
-
-<!-- sorry, this is not about callouts, but attempts to work around
- spurious .sp at the tail of the line docbook stylesheets seem to add -->
-<xsl:template match="simpara">
-  <xsl:variable name="content">
-    <xsl:apply-templates/>
-  </xsl:variable>
-  <xsl:value-of select="normalize-space($content)"/>
-  <xsl:if test="not(ancestor::authorblurb) and
-                not(ancestor::personblurb)">
-    <xsl:text>&#10;&#10;</xsl:text>
-  </xsl:if>
+	<xsl:value-of select="$git.docbook.dot"/>
+	<xsl:text>br&#10;</xsl:text>
 </xsl:template>
 
 </xsl:stylesheet>
diff --git a/Documentation/manpage-normal.xsl b/Documentation/manpage-normal.xsl
index 6a361a2..be0afc9 100644
--- a/Documentation/manpage-normal.xsl
+++ b/Documentation/manpage-normal.xsl
@@ -1,21 +1,16 @@
-<!-- callout.xsl: converts asciidoc callouts to man page format -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-<xsl:template match="co">
-	<xsl:value-of select="concat('\fB(',substring-after(@id,'-'),')\fR')"/>
-</xsl:template>
-<xsl:template match="calloutlist">
-	<xsl:text>.sp&#10;</xsl:text>
-	<xsl:apply-templates/>
-	<xsl:text>&#10;</xsl:text>
-</xsl:template>
-<xsl:template match="callout">
-	<xsl:value-of select="concat('\fB',substring-after(@arearefs,'-'),'. \fR')"/>
-	<xsl:apply-templates/>
-	<xsl:text>.br&#10;</xsl:text>
-</xsl:template>
+<!-- manpage-normal.xsl:
+     special settings for manpages rendered from asciidoc+docbook
+     must be used with manpage-base.xsl
+     handles anything we want to keep away from docbook-xsl 1.72.0 -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+		version="1.0">
+
+<!-- these are the normal values for the roff control characters -->
+<xsl:param name="git.docbook.backslash">\</xsl:param>
+<xsl:param name="git.docbook.dot"	>.</xsl:param>
 
-<!-- sorry, this is not about callouts, but attempts to work around
- spurious .sp at the tail of the line docbook stylesheets seem to add -->
+<!-- attempt to work around spurious .sp at the tail of the line
+     that docbook stylesheets seem to add -->
 <xsl:template match="simpara">
   <xsl:variable name="content">
     <xsl:apply-templates/>
-- 
1.6.2.1.214.ge986c

  parent reply	other threads:[~2009-03-24  8:06 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-24  8:04 [PATCH 0/8] Documentation: XSLT/asciidoc.conf cleanup; tty literals Chris Johnsen
2009-03-24  8:04 ` [PATCH 1/8] Documentation: move callouts.xsl to manpage-{base,normal}.xsl Chris Johnsen
2009-03-24  8:51   ` Jeff King
2009-03-24 19:36     ` Chris Johnsen
2009-03-26  9:40       ` Jeff King
2009-03-24  8:04 ` Chris Johnsen [this message]
2009-03-24  8:57   ` [PATCH 2/8] Documentation: use parametrized manpage-base.xsl with manpage-{1.72,normal}.xsl Jeff King
2009-03-24 19:42     ` Chris Johnsen
2009-03-24  8:04 ` [PATCH 3/8] Documentation: rename docbook-xsl-172 attribute to git-asciidoc-no-roff Chris Johnsen
2009-03-24  9:04   ` Jeff King
2009-03-24 19:48     ` Chris Johnsen
2009-03-26  9:43       ` Jeff King
2009-03-26 16:47         ` Junio C Hamano
2009-03-26 18:49           ` Michael J Gruber
2009-03-24  8:04 ` [PATCH 4/8] Documentation: move quieting params into manpage-base.xsl Chris Johnsen
2009-03-24  9:18   ` Jeff King
2009-03-25  4:21     ` [PATCH 1/2] Documentation/Makefile: make most operations "quiet" Chris Johnsen
2009-03-25  4:21       ` [PATCH 2/2] Documentation/Makefile: break up texi pipeline Chris Johnsen
2009-03-25  4:28       ` [PATCH 1/2] Documentation/Makefile: make most operations "quiet" Jeff King
2009-03-25  9:55         ` Chris Johnsen
2009-03-24  8:04 ` [PATCH 5/8] Documentation: move "spurious .sp" code into manpage-base.xsl Chris Johnsen
2009-03-24  8:04 ` [PATCH 6/8] Documentation: asciidoc.conf: always use <literallayout> for [blocktext] Chris Johnsen
2009-03-24  8:04 ` [PATCH 7/8] Documentation: asciidoc.conf: fix verse block with block titles Chris Johnsen
2009-03-24  8:04 ` [PATCH 8/8] Documentation: option to render literal text as bold for manpages Chris Johnsen
2009-03-26  8:59 ` [PATCH 0/8] Documentation: XSLT/asciidoc.conf cleanup; tty literals Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1237881866-5497-3-git-send-email-chris_johnsen@pobox.com \
    --to=chris_johnsen@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).