git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 5/7] Documentation: add XSLT to fix DocBook for Texinfo

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Jan 22, 2017, 02:41 UTC
Message-ID
<20170122024156.284180-6-sandals@crustytoothpaste.net>
In-Reply-To
<20170122024156.284180-1-sandals@crustytoothpaste.net>

There are two ways to create a section in a reference document (i.e., manpage) in DocBook 4: refsection elements and refsect, refsect2, and refsect3 elements. Either form is acceptable as of DocBook 4.2, but they cannot be mixed. Prior to DocBook 4.2, only the numbered forms were acceptable.

docbook2texi only accepts the numbered forms, and this has not generally been a problem, since AsciiDoc produces the numbered forms. Asciidoctor, on the other hand, uses a shared backend for DocBook 4 and 5, and uses the unnumbered refsection elements instead.

If we don't convert the unnumbered form to the numbered form, docbook2texi omits section headings, which is undesirable. Add an XSLT stylesheet to transform the unnumbered forms to the numbered forms automatically, and preprocess the DocBook XML as part of the transformation to Texinfo format.

Note that this transformation is only necessary for Texinfo, since docbook2texi provides its own stylesheets. The DocBook stylesheets, which we use for other formats, provide the full range of DocBook 4 and 5 compatibility, and don't have this issue.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 Documentation/Makefile |  7 ++++---
 Documentation/texi.xsl | 26 ++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/texi.xsl
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 6e6c82409..76be7017c 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -371,10 +371,11 @@ user-manual.pdf: user-manual.xml
 	$(DBLATEX) -o $@+ -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty $< && \
 	mv $@+ $@
 
-gitman.texi: $(MAN_XML) cat-texi.perl
+gitman.texi: $(MAN_XML) cat-texi.perl texi.xsl
 	$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
-	($(foreach xml,$(sort $(MAN_XML)),$(DOCBOOK2X_TEXI) --encoding=UTF-8 \
-		--to-stdout $(xml) &&) true) > $@++ && \
+	($(foreach xml,$(sort $(MAN_XML)),xsltproc -o $(xml)+ texi.xsl $(xml) && \
+		$(DOCBOOK2X_TEXI) --encoding=UTF-8 --to-stdout $(xml)+ && \
+		rm $(xml)+ &&) true) > $@++ && \
 	$(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \
 	rm $@++ && \
 	mv $@+ $@
diff --git a/Documentation/texi.xsl b/Documentation/texi.xsl
new file mode 100644
index 000000000..0f8ff07ec
--- /dev/null
+++ b/Documentation/texi.xsl
@@ -0,0 +1,26 @@
+<!-- texi.xsl:
+     convert refsection elements into refsect elements that docbook2texi can
+     understand -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+		version="1.0">
+
+<xsl:output method="xml"
+	    encoding="UTF-8"
+	    doctype-public="-//OASIS//DTD DocBook XML V4.5//EN"
+	    doctype-system="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" />
+
+<xsl:template match="//refsection">
+	<xsl:variable name="element">refsect<xsl:value-of select="count(ancestor-or-self::refsection)" /></xsl:variable>
+	<xsl:element name="{$element}">
+		<xsl:apply-templates select="@*|node()" />
+	</xsl:element>
+</xsl:template>
+
+<!-- Copy all other nodes through. -->
+<xsl:template match="node()|@*">
+	<xsl:copy>
+		<xsl:apply-templates select="@*|node()" />
+	</xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>
Previous: Øyvind A. HolmNext: Junio C Hamano
Message 11 of 24 in “Macros for Asciidoctor support”
  1. 0/7 Macros for Asciidoctor supportbrian m. carlson, Jan 22, 2017
  2. 1/7 Documentation: fix warning in cat-texi.perlbrian m. carlson, Jan 22, 2017
  3. 4/7 Documentation: sort sources for gitman.texibrian m. carlson, Jan 22, 2017
  4. 3/7 Documentation: remove unneeded argument in cat-texi.perlbrian m. carlson, Jan 22, 2017
  5. 2/7 Documentation: modernize cat-texi.perlbrian m. carlson, Jan 22, 2017
  6. 6/7 Documentation: move dblatex arguments into variablebrian m. carlson, Jan 22, 2017
  7. 7/7 Makefile: add a knob to enable the use of Asciidoctorbrian m. carlson, Jan 22, 2017
  8. Øyvind A. HolmJan 23, 2017
  9. brian m. carlsonJan 23, 2017
  10. Øyvind A. HolmJan 25, 2017
  11. 5/7 Documentation: add XSLT to fix DocBook for Texinfobrian m. carlson, Jan 22, 2017
  12. Junio C HamanoJan 23, 2017
  13. Johannes SchindelinJan 25, 2017
  14. Jeff KingJan 25, 2017
  15. brian m. carlsonJan 25, 2017
  16. Jeff KingJan 25, 2017
  17. brian m. carlsonJan 25, 2017
  18. Documentation: implement linkgit macro for Asciidoctorbrian m. carlson, Jan 26, 2017
  19. Jeff KingJan 26, 2017
  20. Eric WongJan 26, 2017
  21. Johannes SchindelinJan 26, 2017
  22. Eric WongJan 26, 2017
  23. brian m. carlsonJan 27, 2017
  24. Junio C HamanoJan 31, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.