| <?xml version="1.0" ?> |
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
| <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> |
| |
| <!-- Break text blocks separated by two new lines into paragraphs --> |
| <xsl:template name="break"> |
| <xsl:param name="text" /> |
| <xsl:param name="linebreak" select="' '" /> |
| <xsl:choose> |
| <xsl:when test="contains($text,$linebreak)"> |
| <para> |
| <xsl:value-of select="substring-before($text,$linebreak)" /> |
| </para> |
| <xsl:call-template name="break"> |
| <xsl:with-param name="text" select="substring-after($text,$linebreak)" /> |
| </xsl:call-template> |
| </xsl:when> |
| <xsl:otherwise> |
| <para><xsl:value-of select="$text" /></para> |
| </xsl:otherwise> |
| </xsl:choose> |
| </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 id="protocol-spec-{@name}"> |
| <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> |
| <xsl:call-template name="break"> |
| <xsl:with-param name="text" select="description" /> |
| </xsl:call-template> |
| <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" /></title> |
| <xsl:apply-templates select="event" /> |
| </section> |
| </xsl:if> |
| <xsl:if test="enum"> |
| <section> |
| <title>Enums provided by <xsl:value-of select="@name" /></title> |
| <xsl:apply-templates select="enum" /> |
| </section> |
| </xsl:if> |
| </section> |
| </xsl:template> |
| |
| <!-- table contents for enum values --> |
| <xsl:template match="entry"> |
| <varlistentry> |
| <term><xsl:value-of select="@name"/></term> |
| <listitem> |
| <simpara> |
| <xsl:value-of select="@value"/> |
| <xsl:if test="@summary" > |
| - <xsl:value-of select="@summary"/> |
| </xsl:if> |
| </simpara> |
| </listitem> |
| </varlistentry> |
| </xsl:template> |
| |
| <!-- table contents for request/event arguments --> |
| <xsl:template match="arg"> |
| <varlistentry> |
| <term><xsl:value-of select="@name"/></term> |
| <listitem> |
| <simpara> |
| <xsl:value-of select="@type"/> |
| <xsl:if test="@summary" > |
| - <xsl:value-of select="@summary"/> |
| </xsl:if> |
| </simpara> |
| </listitem> |
| </varlistentry> |
| </xsl:template> |
| |
| <!-- id arguments --> |
| <xsl:template match="arg[@type='object' and @interface]"> |
| <varlistentry> |
| <term><xsl:value-of select="@name"/></term> |
| <listitem> |
| <simpara> |
| <link linkend="protocol-spec-{@interface}"> |
| <xsl:value-of select="@interface"/> |
| </link> |
| <xsl:if test="@summary" > |
| - <xsl:value-of select="@summary"/> |
| </xsl:if> |
| </simpara> |
| </listitem> |
| </varlistentry> |
| </xsl:template> |
| |
| <!-- new_id arguments --> |
| <xsl:template match="arg[@type='new_id' and @interface]"> |
| <varlistentry> |
| <term><xsl:value-of select="@name"/></term> |
| <listitem> |
| <simpara> |
| id for the new |
| <link linkend="protocol-spec-{@interface}"> |
| <xsl:value-of select="@interface"/> |
| </link> |
| <xsl:if test="@summary" > |
| - <xsl:value-of select="@summary"/> |
| </xsl:if> |
| </simpara> |
| </listitem> |
| </varlistentry> |
| </xsl:template> |
| |
| <!-- enum and bitfield arguemnts --> |
| <xsl:template match="arg[@enum]"> |
| <varlistentry> |
| <term><xsl:value-of select="@name"/></term> |
| <listitem> |
| <simpara> |
| <xsl:choose> |
| <xsl:when test="contains(@enum, '.')"> |
| <link linkend="protocol-spec-{substring-before(@enum, '.')}-enum-{substring-after(@enum, '.')}"> |
| <xsl:value-of select="substring-before(@enum, '.')"/> |
| <xsl:text>::</xsl:text> |
| <xsl:value-of select="substring-after(@enum, '.')"/> |
| </link> |
| </xsl:when> |
| <xsl:otherwise> |
| <link linkend="protocol-spec-{../../@name}-enum-{@enum}"> |
| <xsl:value-of select="../../@name"/> |
| <xsl:text>::</xsl:text> |
| <xsl:value-of select="@enum"/> |
| </link> |
| </xsl:otherwise> |
| </xsl:choose> |
| (<xsl:value-of select="@type"/>) |
| <xsl:if test="@summary" > |
| - <xsl:value-of select="@summary"/> |
| </xsl:if> |
| </simpara> |
| </listitem> |
| </varlistentry> |
| </xsl:template> |
| |
| <!-- Request/event list --> |
| <xsl:template match="request|event"> |
| <section id="protocol-spec-{../@name}-{name()}-{@name}"> |
| <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> |
| <variablelist> |
| <xsl:apply-templates select="arg"/> |
| </variablelist> |
| </para> |
| <xsl:call-template name="break"> |
| <xsl:with-param name="text" select="description" /> |
| </xsl:call-template> |
| </section> |
| </xsl:template> |
| |
| <!-- Enumeration --> |
| <xsl:template match="enum"> |
| <section id="protocol-spec-{../@name}-enum-{@name}"> |
| <title> |
| <xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> |
| <xsl:if test="@bitfield"> |
| - bitfield |
| </xsl:if> |
| <xsl:if test="description/@summary"> |
| - <xsl:value-of select="description/@summary" /> |
| </xsl:if> |
| </title> |
| <xsl:call-template name="break"> |
| <xsl:with-param name="text" select="description" /> |
| </xsl:call-template> |
| <variablelist> |
| <xsl:apply-templates select="entry"/> |
| </variablelist> |
| </section> |
| </xsl:template> |
| |
| </xsl:stylesheet> |
| |
| <!-- vim: set expandtab shiftwidth=2: --> |