--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+
+<section id="implementing-media-engines">
+
+<para>
+This library may be used to create Rygel media engines by
+implementing the <link linkend="RygelMediaEngine">RygelMediaEngine</link> class.
+</para>
+
+</section>
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+
+<section id="implementing-server-plugins">
+
+<para>
+This library may be used to create Rygel server plugins by
+implementing the <link linkend="RygelMediaServerPlugin">RygelMediaServerPlugin</link> class.
+</para>
+
+</section>
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+
+<section id="implementing-servers">
+
+<para>
+This library may be used to create UPnP or DLNA servers via its
+The <link linkend="RygelMediaServer">RygelMediaServer</link>.
+</para>
+
+<!-- TODO: Find a way to mention this C example code in the RygelMediaServer valadoc comments instead. -->
+<para>
+This example program shows how to fill a container with media items and then instantiate a server to serve
+them.
+</para>
+
+<!-- Do not indent the xi:include node. That puts spaces at the start of the code. -->
+<programlisting role="C">
+<xi:include href="../../../../examples/standalone-server.c"
+ parse="text"
+ xmlns:xi="http://www.w3.org/2001/XInclude"/>
+</programlisting>
+
+<para>
+librygel-server is licensed under the GNU Lesser General Public License (LGPL).
+</para>
+
+</section>
<xi:include href="overview.xml"/>
</preface>
+ <chapter>
+ <title>Implementing Rygel Server Plugins</title>
+ <xi:include href="implementing-server-plugins.xml"/>
+ </chapter>
+
+ <chapter>
+ <title>Implementing Rygel Media Engines</title>
+ <xi:include href="implementing-media-engines.xml"/>
+ </chapter>
+
+ <chapter>
+ <title>Implementing Servers</title>
+ <xi:include href="implementing-servers.xml"/>
+ </chapter>
+
<!-- These are generated: -->
<chapter>
<title>librygel-server API Reference</title>
</para>
<para>
-This library may be used to create UPnP or DLNA servers via its
-The <link linkend="RygelMediaServer">RygelMediaServer</link>.
-</para>
-
-<!-- TODO: Find a way to mention this C example code in the RygelMediaServer valadoc comments instead. -->
-<para>
-This example program shows how to fill a container with media items and then instantiate a server to serve
-them.
-</para>
-
-<!-- Do not indent the xi:include node. That puts spaces at the start of the code. -->
-<programlisting role="C">
-<xi:include href="../../../../examples/standalone-server.c"
- parse="text"
- xmlns:xi="http://www.w3.org/2001/XInclude"/>
-</programlisting>
-
-<para>
librygel-server is licensed under the GNU Lesser General Public License (LGPL).
</para>