Convert the wayland.xml protocol description to a docbook-compatible format and hook it up to the publican sources.
Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> --- doc/Wayland/.gitignore | 1 + doc/Wayland/Makefile.am | 9 ++- doc/Wayland/en-US/Wayland.xml | 1 + doc/Wayland/protocol-to-docbook.xsl | 113 +++++++++++++++++++++++++++++++++++ 4 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 doc/Wayland/protocol-to-docbook.xsl diff --git a/doc/Wayland/.gitignore b/doc/Wayland/.gitignore index 33b78ca..cf78754 100644 --- a/doc/Wayland/.gitignore +++ b/doc/Wayland/.gitignore @@ -1 +1,2 @@ Wayland +en-US/Protocol.xml diff --git a/doc/Wayland/Makefile.am b/doc/Wayland/Makefile.am index 854da79..099efb2 100644 --- a/doc/Wayland/Makefile.am +++ b/doc/Wayland/Makefile.am @@ -17,9 +17,13 @@ publican_sources = \ $(srcdir)/en-US/images/x-architecture.png -Wayland: publican.cfg $(publican_sources) +Wayland: docbook-xsl publican.cfg $(publican_sources) publican build --lang en-US --format html,pdf +# This must be run befor the publican run +docbook-xsl: $(top_srcdir)/protocol/wayland.xml protocol-to-docbook.xsl + $(AM_V_GEN)$(XSLTPROC) protocol-to-docbook.xsl $(top_srcdir)/protocol/wayland.xml > $(srcdir)/en-US/Protocol.xml + clean-local: -rm -rf Wayland @@ -31,5 +35,6 @@ uninstall-local: -rm -rf $(DESTDIR)$(docdir)/Wayland/* -rmdir $(DESTDIR)$(docdir)/Wayland -EXTRA_DIST = $(publican_sources) publican.cfg +EXTRA_DIST = $(publican_sources) publican.cfg protocol-to-docbook.xsl + endif diff --git a/doc/Wayland/en-US/Wayland.xml b/doc/Wayland/en-US/Wayland.xml index acec682..829d362 100644 --- a/doc/Wayland/en-US/Wayland.xml +++ b/doc/Wayland/en-US/Wayland.xml @@ -10,6 +10,7 @@ <xi:include href="Chapter.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> --> <xi:include href="Architecture.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> + <xi:include href="Protocol.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> <!-- <xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> --> diff --git a/doc/Wayland/protocol-to-docbook.xsl b/doc/Wayland/protocol-to-docbook.xsl new file mode 100644 index 0000000..e50d80d --- /dev/null +++ b/doc/Wayland/protocol-to-docbook.xsl @@ -0,0 +1,113 @@ +<?xml version="1.0" ?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:output method="xml" indent="yes" encoding="UTF-8"/> +<xsl:output method="xml" encoding="UTF-8" indent="yes" /> + +<xsl:template match="/"> + <!-- insert docbook's DOCTYPE blurb --> + <xsl:text disable-output-escaping = "yes"><![CDATA[ +<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ + <!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent"> +%BOOK_ENTITIES; +]> +]]></xsl:text> + + <appendix id="appe-Wayland-Protocol"> + <title>Wayland Protocol Specification</title> + <xsl:apply-templates select="protocol/copyright" /> + + <xsl:apply-templates select="protocol/interface" /> + </appendix> +</xsl:template> + +<!-- Copyright blurb --> +<xsl:template match="copyright"> + <para> + <literallayout> + <xsl:value-of select="." disable-output-escaping="yes"/> + </literallayout> + </para> +</xsl:template> + +<!-- Interface descriptions --> +<xsl:template match="interface" > + <section> + <xsl:attribute name="id">protocol-<xsl:value-of select="name()"/>-<xsl:value-of select="@name" /> + </xsl:attribute> + <title> + <xsl:value-of select="@name" /> + <!-- only show summary if it exists --> + <xsl:if test="description/@summary"> + - <xsl:value-of select="description/@summary" /> + </xsl:if> + </title> + <para> + <xsl:value-of select="description"/> + </para> + <xsl:if test="request"> + <section> + <title>Requests provided by <xsl:value-of select="@name" /></title> + <xsl:apply-templates select="request" /> + </section> + </xsl:if> + <xsl:if test="event"> + <section> + <title>Events provided by <xsl:value-of select="@name" /> events</title> + <xsl:apply-templates select="event" /> + </section> + </xsl:if> + <xsl:if test="enum"> + <section> + <title>Enums provided by <xsl:value-of select="@name" /> enums</title> + <xsl:apply-templates select="enum" /> + </section> + </xsl:if> + </section> +</xsl:template> + +<!-- table contents for request/event arguments or enum values --> +<xsl:template match="arg|entry"> + <varlistentry> + <term><xsl:value-of select="@name"/></term> + <listitem> + <xsl:if test="name() = 'arg'" > + <para>Type: <xsl:value-of select="@type"/></para> + </xsl:if> + <xsl:if test="name() = 'entry'" > + <para>Value: <xsl:value-of select="@value"/></para> + </xsl:if> + <para> + <xsl:value-of select="@summary"/> + </para> + </listitem> + </varlistentry> +</xsl:template> + +<!-- Request/event list --> +<xsl:template match="request|event|enum"> + <section> + <xsl:attribute name="id">protocol-interface-<xsl:value-of select="../@name"/>-<xsl:value-of select="name()"/>-<xsl:value-of select="@name"/></xsl:attribute> + <title> + <xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> + <xsl:if test="description/@summary"> + - <xsl:value-of select="description/@summary" /> + </xsl:if> + </title> + <para><xsl:value-of select="description"/></para> + <xsl:if test="arg"> + <variablelist> + <title><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> arguments</title> + <xsl:apply-templates select="arg"/> + </variablelist> + </xsl:if> + <xsl:if test="entry"> + <variablelist> + <title><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> values</title> + <xsl:apply-templates select="entry"/> + </variablelist> + </xsl:if> + </section> +</xsl:template> +</xsl:stylesheet> + +<!-- vim: set expandtab shiftwidth=2: --> -- 1.7.7.6 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel