[PATCH v2 3/3] compose specs: generate chunked html

Gaetan Nadon memsize at videotron.ca
Thu Jul 28 18:39:33 PDT 2011


For large 600 page documents such as this one, chunked html
provide faster browser load time and better navigation.

Simply click on the locale of your choice in the toc and
the browser loads just that one file. Being a DocBook,
it benefits from all of the usual features and can be
integrated with the rest of the documentation.

Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
---
 docbook-gen-chunk.am           |  102 ++++++++++++++++++++++++++++++++++++++++
 specs/i18n/compose/Makefile.am |    2 +-
 2 files changed, 103 insertions(+), 1 deletions(-)
 create mode 100644 docbook-gen-chunk.am

diff --git a/docbook-gen-chunk.am b/docbook-gen-chunk.am
new file mode 100644
index 0000000..46d485f
--- /dev/null
+++ b/docbook-gen-chunk.am
@@ -0,0 +1,102 @@
+#
+# Generate output formats for a single DocBook/XML with/without chapters
+# This version of docbook.am handles cases where XML source is generated
+# and the html to be produced must be in chunks, one per chapter.
+# The generated source must be cleaned, installed but not distributed
+#
+# Variables set by the calling Makefile:
+# shelfdir: the location where the docs/specs are installed. Typically $(docdir)
+# docbook:  the main DocBook/XML file, no chapters, appendix or image files
+# chapters: all files pulled in by an XInclude statement and images.
+#
+
+#
+# This makefile is intended for Users Documentation and Functional Specifications.
+# Do not use for Developer Documentation which is not installed and does not require olink.
+# Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393
+# for an explanation on documents classification.
+#
+
+# DocBook/XML generated output formats to be installed
+shelf_DATA = $(chapters) $(docbook)
+
+if HAVE_XMLTO
+#
+# Generate DocBook/XML output formats with or without stylesheets
+#
+
+# Stylesheets are available if the package xorg-sgml-doctools is installed
+if HAVE_STYLESHEETS
+
+# The location where all cross reference databases are installed
+sgmldbsdir = $(XORG_SGML_PATH)/X11/dbs
+masterdb = "$(sgmldbsdir)/masterdb$(suffix $@).xml"
+XMLTO_FLAGS =							\
+	--searchpath "$(XORG_SGML_PATH)/X11"			\
+	--stringparam target.database.document=$(masterdb)	\
+	--stringparam current.docid="$(<:.xml=)"		\
+	--stringparam collect.xref.targets="no"
+
+XMLTO_XHTML_FLAGS = \
+	-x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl \
+	--stringparam html.stylesheet=$(STYLESHEET_SRCDIR)/xorg.css
+
+XMLTO_CHUNK_FLAGS = \
+	-x $(STYLESHEET_SRCDIR)/xorg-chunk.xsl \
+	--stringparam root.filename="$(<:.xml=)" \
+	--stringparam html.stylesheet=$(STYLESHEET_SRCDIR)/xorg.css
+
+XMLTO_FO_FLAGS = \
+	-x $(STYLESHEET_SRCDIR)/xorg-fo.xsl
+endif HAVE_STYLESHEETS
+
+shelf_DATA += $(docbook:.xml=.html) $(chapters:.xml=.html)
+%.html: %.xml  $(chapters)
+	$(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_CHUNK_FLAGS) xhtml $<
+
+if HAVE_FOP
+shelf_DATA += $(docbook:.xml=.pdf) $(docbook:.xml=.ps)
+%.pdf: %.xml $(chapters)
+	$(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_FO_FLAGS) --with-fop pdf $<
+%.ps: %.xml $(chapters)
+	$(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_FO_FLAGS) --with-fop ps $<
+endif HAVE_FOP
+
+if HAVE_XMLTO_TEXT
+shelf_DATA += $(docbook:.xml=.txt)
+%.txt: %.xml $(chapters)
+	$(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_XHTML_FLAGS) txt $<
+endif HAVE_XMLTO_TEXT
+
+#
+# Generate documents cross-reference target databases
+#
+
+# This is only possible if the xorg-sgml-doctools package is installed
+if HAVE_STYLESHEETS
+if HAVE_XSLTPROC
+
+# DocBook/XML generated document cross-reference database
+shelf_DATA += $(docbook:.xml=.html.db) $(docbook:.xml=.fo.db)
+
+# Generate DocBook/XML document cross-reference database
+# Flags for the XSL Transformation processor generating xref target databases
+XSLTPROC_FLAGS =					\
+	--path "$(XORG_SGML_PATH)/X11"			\
+	--stringparam targets.filename "$@"		\
+	--stringparam collect.xref.targets "only"	\
+	--nonet --xinclude
+
+%.html.db: %.xml  $(chapters)
+	$(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_FLAGS) \
+	http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl $<
+
+%.fo.db: %.xml $(chapters)
+	$(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_FLAGS) \
+	http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl $<
+
+endif HAVE_XSLTPROC
+endif HAVE_STYLESHEETS
+endif HAVE_XMLTO
+
+CLEANFILES = $(shelf_DATA)
diff --git a/specs/i18n/compose/Makefile.am b/specs/i18n/compose/Makefile.am
index 5d167bb..5cfbca8 100644
--- a/specs/i18n/compose/Makefile.am
+++ b/specs/i18n/compose/Makefile.am
@@ -12,7 +12,7 @@ shelfdir = $(docdir)/i18n/compose
 
 # Generate DocBook/XML output formats with or without stylesheets
 # The XML source is generated and cleaned but not distributed
-include $(top_srcdir)/docbook-gen.am
+include $(top_srcdir)/docbook-gen-chunk.am
 
 # Generated DocBook/XML source files using a perl script
 %.xml: $(top_builddir)/nls/%/Compose
-- 
1.7.4.1



More information about the xorg-devel mailing list