[libxml++] Use mm-common for reference documentation generation



commit 80f1307e0ee0a27d54adb6a4c786ae73745f442a
Author: David King <amigadave amigadave com>
Date:   Sun Mar 28 17:20:26 2010 +0200

    Use mm-common for reference documentation generation
    
    * .gitignore: Update.
    
    * Makefile.am: Remove SUBDIRS. Make examples build and documentation
    build conditional. Build reference documentation with doc-reference.am
    from mm-common. Add docs/manual/libxml++.pdf target, but do not enable
    it by default. Add autogen.sh and docs/manual/insert_example_code.pl to
    dist_noinst_SCRIPTS. Add docs/manual/html/*.html to
    MAINTAINERCLEANFILES.
    
    * autogen.sh: Add --enable-maintainer-mode to arguments passed to
    configure.
    
    * configure.ac: Add AM_MAINTAINER_MODE. Add a configure argument to
    enable the build of the examples. Use mm-common macros to add a
    configure argument to enable documentation, and use the glibmm
    tagfile. Check for xmllint and db2latex for DTD validation of the
    DocBook manual and building the PDF documentation, repectively. Remove
    the last non-toplevel Makefiles from AC_CONFIG_FILES.
    
    * docs/Makefile.am:
    * docs/Makefile_web.am_fragment:
    * docs/manual/Makefile.am:
    * docs/reference/Makefile.am: Remove from repository, and move content
    to Makefile.am.
    
    * docs/manual/docbook-customisation.xsl: Add DocBook customisation
    parameters.
    
    * docs/manual/libxml++_without_code.xml: Make validate.
    
    * docs/reference/Doxyfile.in: Update from mm-common.
    
    * docs/reference/README: Remove empty file.
    
    * examples/README: Mention the --enable-examples configure argument.

 .gitignore                            |    5 +-
 ChangeLog                             |   38 +++++
 Makefile.am                           |   55 +++++++-
 autogen.sh                            |    2 +-
 configure.ac                          |   36 +++--
 docs/Makefile.am                      |   12 --
 docs/Makefile_web.am_fragment         |    5 -
 docs/manual/Makefile.am               |   71 ----------
 docs/manual/docbook-customisation.xsl |   18 +++
 docs/manual/libxml++_without_code.xml |   78 ++++++------
 docs/reference/Doxyfile.in            |  244 +++++++++++++++++++++------------
 docs/reference/Makefile.am            |   63 ---------
 examples/README                       |    2 +-
 13 files changed, 331 insertions(+), 298 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 2dd0d19..5b9caa8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,9 +33,10 @@ stamp-h?
 /docs/manual/html/
 /docs/manual/libxml++.xml
 /docs/reference/Doxyfile
+/docs/reference/doxygen.log
 /docs/reference/html/
-/docs/reference/libxml++_doxygen_tags
-/docs/reference/xml/
+/docs/reference/libxml++-2.6.devhelp2
+/docs/reference/libxml++-2.6.tag
 
 # examples
 /examples/dom_build/dom_build
diff --git a/ChangeLog b/ChangeLog
index 107f763..2784c2a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,41 @@
+2010-03-29  David King  <davidk openismus com>
+
+	Use mm-common for reference documentation generation
+
+	* .gitignore: Update.
+
+	* Makefile.am: Remove SUBDIRS. Make examples build and documentation
+	build conditional. Build reference documentation with doc-reference.am
+	from mm-common. Add docs/manual/libxml++.pdf target, but do not enable
+	it by default. Add autogen.sh and docs/manual/insert_example_code.pl to
+	dist_noinst_SCRIPTS. Add docs/manual/html/*.html to
+	MAINTAINERCLEANFILES.
+
+	* autogen.sh: Add --enable-maintainer-mode to arguments passed to
+	configure.
+
+	* configure.ac: Add AM_MAINTAINER_MODE. Add a configure argument to
+	enable the build of the examples. Use mm-common macros to add a
+	configure argument to enable documentation, and use the glibmm
+	tagfile. Check for xmllint and db2latex for DTD validation of the
+	DocBook manual and building the PDF documentation, repectively. Remove
+	the last non-toplevel Makefiles from AC_CONFIG_FILES.
+
+	* docs/Makefile.am:
+	* docs/Makefile_web.am_fragment:
+	* docs/manual/Makefile.am:
+	* docs/reference/Makefile.am: Remove from repository, and move content
+	to Makefile.am.
+
+	* docs/manual/docbook-customisation.xsl: Add DocBook customisation
+	parameters.
+
+	* docs/manual/libxml++_without_code.xml: Make validate.
+
+	* docs/reference/Doxyfile.in: Update from mm-common.
+
+	* docs/reference/README: Remove empty file.
+
 2010-03-27  David King  <amigadave amigadave com>
 
 	Fix several compiler warnings
diff --git a/Makefile.am b/Makefile.am
index 8b59a83..d72f1b1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,8 +1,6 @@
 ACLOCAL_AMFLAGS = -I macros ${ACLOCAL_FLAGS}
 DISTCHECK_CONFIGURE_FLAGS = --enable-warnings=fatal
 
-SUBDIRS = docs
-
 library_configdir = $(libdir)/libxml++- LIBXMLXX_API_VERSION@/include
 library_config_DATA = libxml++config.h
 
@@ -15,6 +13,7 @@ libxml___libxml___ LIBXMLXX_API_VERSION@_la_LDFLAGS = \
 libxml___libxml___ LIBXMLXX_API_VERSION@_la_LIBADD = $(LIBXMLXX_LIBS)
 libxml___libxml___ LIBXMLXX_API_VERSION@_la_SOURCES = $(cc_sources) $(h_sources_public)
 
+if ENABLE_EXAMPLES
 noinst_PROGRAMS = examples/dom_build/dom_build \
 	examples/dom_parse_entities/dom_parse_entities \
 	examples/dom_parser/dom_parser \
@@ -29,6 +28,7 @@ noinst_PROGRAMS = examples/dom_build/dom_build \
 	examples/sax_parser_entities/sax_parser_entities \
 	examples/schemavalidation/schemavalidation \
 	examples/textreader/textreader
+endif
 
 AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -I. $(LIBXMLXX_CFLAGS)
 AM_CXXFLAGS = $(LIBXMLXX_WXXFLAGS)
@@ -115,6 +115,7 @@ library_nodes_include_HEADERS = $(h_nodes_sources_public)
 library_parsers_include_HEADERS = $(h_parsers_sources_public)
 library_validators_include_HEADERS = $(h_validators_sources_public)
 
+if ENABLE_EXAMPLES
 examples_dom_build_dom_build_SOURCES = examples/dom_build/main.cc
 examples_dom_parse_entities_dom_parse_entities_SOURCES = \
 	examples/dom_parse_entities/main.cc
@@ -176,10 +177,51 @@ examples_schemavalidation_schemavalidation_LDADD = \
 	libxml++/libxml++-$(LIBXMLXX_API_VERSION).la
 examples_textreader_textreader_LDADD = \
 	libxml++/libxml++-$(LIBXMLXX_API_VERSION).la
+endif # ENABLE_EXAMPLES
+
+if ENABLE_DOCUMENTATION
+book_name = $(LIBXMLXX_MODULE_NAME)
+doc_input = $(h_sources_public)
+doc_outdir = docs/reference
+# Sets dist_noinst_DATA, DISTCLEANFILES and MAINTAINERCLEANFILES
+include $(top_srcdir)/macros/doc-reference.am
+
+manualdir = $(docdir)/manual
+manual_htmldir = $(manualdir)/html
+manual_html_files = $(wildcard docs/manual/html/*.html)
+
+docs/manual/libxml++.xml: docs/manual/libxml++_without_code.xml docs/manual/insert_example_code.pl
+	$(AM_V_GEN)$(PERL) -- docs/manual/insert_example_code.pl examples $< >$@
+
+docs/manual/html/index.html: docs/manual/libxml++.xml docs/manual/docbook-customisation.xsl
+	$(AM_V_at)rm -fr doc/manual/html
+	$(AM_V_at)$(MKDIR_P) docs/manual/html
+	$(AM_V_GEN)$(XSLTPROC) -o docs/manual/html/ --xinclude --catalogs \
+		docs/manual/docbook-customisation.xsl $<
+
+docs/manual/libxml++.pdf: docs/manual/libxml++.xml
+	$(AM_V_GEN)$(DB2LATEX) -o $@ -O docs/manual -tpdf $<
 
-dist_noinst_DATA = libxml++config.h.in \
+validate_original_manual: docs/manual/libxml++_without_code.xml
+	$(XMLLINT) --xinclude --postvalid --noout $<
+
+validate_manual: docs/manual/libxml++.xml
+	$(XMLLINT) --xinclude --postvalid --noout $<
+
+all-local: docs/manual/html/index.html
+else # !ENABLE_DOCUMENTATION
+dist_noinst_DATA =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+endif # ENABLE_DOCUMENTATION
+
+dist_noinst_DATA += libxml++config.h.in \
 	libxml++-$(LIBXMLXX_API_VERSION).pc.in \
 	MAINTAINERS \
+	docs/manual/docbook-customisation.xsl \
+	$(manual_html_files) \
+	docs/manual/libxml++.xml \
+	docs/manual/libxml++_without_code.xml \
 	examples/README \
 	examples/dom_parser/example.xml \
 	examples/dom_parser/example_with_namespace.xml \
@@ -249,5 +291,10 @@ dist_noinst_DATA = libxml++config.h.in \
 	MSVC_Net2008/examples/schemavalidation/schemavalidation.vcproj \
 	MSVC_Net2008/examples/textreader/textreader.vcproj
 
-DISTCLEANFILES = MSVC_Net2005/libxml++/libxml++config.h \
+dist_noinst_SCRIPTS = autogen.sh \
+	docs/manual/insert_example_code.pl
+
+DISTCLEANFILES += MSVC_Net2005/libxml++/libxml++config.h \
 	MSVC_Net2008/libxml++/libxml++config.h
+
+MAINTAINERCLEANFILES += docs/manual/html/*.html
diff --git a/autogen.sh b/autogen.sh
index 06b774d..6686611 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -4,4 +4,4 @@ test -n "$srcdir" || srcdir=.
 
 mm-common-prepare --copy --force "$srcdir"
 autoreconf --force --install --verbose "$srcdir"
-test -n "$NOCONFIGURE" || "$srcdir/configure" "$@"
+test -n "$NOCONFIGURE" || "$srcdir/configure" --enable-maintainer-mode "$@"
diff --git a/configure.ac b/configure.ac
index cdec70d..2fdfbf4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,6 +10,7 @@ AC_CONFIG_HEADERS([config.h libxml++config.h])
 
 AM_INIT_AUTOMAKE([1.9 -Wno-portability dist-bzip2 no-define nostdinc subdir-objects])
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
+AM_MAINTAINER_MODE([enable])
 AC_ARG_VAR([ACLOCAL_FLAGS], [aclocal flags, e.g. -I <macro dir>])
 
 MM_PREREQ([0.8])
@@ -27,28 +28,35 @@ PKG_CHECK_MODULES([LIBXMLXX], [libxml-2.0 >= 2.6.1 glibmm-2.4 >= 2.4.0])
 AC_LANG([C++])
 AC_CHECK_HEADERS([string list map], [], [AC_MSG_ERROR([required headers not found])])
 
+AC_ARG_ENABLE([examples],
+        [AS_HELP_STRING([--enable-examples],
+                [build the examples])],
+        [enable_examples=$enableval],
+        [enable_examples=no])
+
+AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" = xyes])
+
 # Offer the ability to omit some API from the library, to reduce the code size:
-LIBXMLCPP_ARG_ENABLE_API_EXCEPTIONS()
+LIBXMLCPP_ARG_ENABLE_API_EXCEPTIONS
+
+MM_ARG_ENABLE_DOCUMENTATION
+MM_ARG_WITH_TAGFILE_DOC([glibmm-2.4.tag], [glibmm-2.4])
 
 MM_ARG_ENABLE_WARNINGS([LIBXMLXX_WXXFLAGS],
         [-Wall],
         [-pedantic -Wall -Wextra])
 
+AC_PATH_PROG([XMLLINT], [xmllint], [xmllint])
+AC_ARG_VAR([XMLLINT], [path to xmllint utility])
+AC_PATH_PROGS([DB2LATEX], [db2latex docbook2latex], [db2latex])
+AC_ARG_VAR([DB2LATEX], [path to db2latex utility])
 MM_CHECK_PERL()
 
-AC_CONFIG_FILES([
-  Makefile
-
-  docs/Makefile
-    docs/reference/Makefile
-    docs/reference/Doxyfile
-    docs/manual/Makefile
-
-  MSVC_Net2005/libxml++/libxml++.rc
-  MSVC_Net2008/libxml++/libxml++.rc
-
-  libxml++-2.6.pc
-])
+AC_CONFIG_FILES([Makefile
+        docs/reference/Doxyfile
+        MSVC_Net2005/libxml++/libxml++.rc
+        MSVC_Net2008/libxml++/libxml++.rc
+        libxml++-2.6.pc])
 
 AC_CONFIG_COMMANDS([MSVC_Net2005/libxml++/libxml++config.h],
         [cp -f libxml++config.h MSVC_Net2005/libxml++/libxml++config.h])
diff --git a/docs/manual/docbook-customisation.xsl b/docs/manual/docbook-customisation.xsl
new file mode 100644
index 0000000..879938a
--- /dev/null
+++ b/docs/manual/docbook-customisation.xsl
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+
+<!-- Customisation of DocBook processing for libxml++. -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
+
+<xsl:param name="toc.section.depth" select="1"/>
+<xsl:param name="chunker.output.indent" select="'yes'"/>
+<xsl:param name="chunker.output.encoding" select="'UTF-8'"/>
+<xsl:param name="toc.list.type" select="'ul'"/>
+<!-- Set the use.id.as.filename param so that the chapter / section number is
+     not used as the filename, otherwise the URL will change every time
+     anything is re-ordered or inserted in the documentation. -->
+<xsl:param name="use.id.as.filename" select="1"/>
+
+</xsl:stylesheet>
diff --git a/docs/manual/libxml++_without_code.xml b/docs/manual/libxml++_without_code.xml
index 5cfd48a..3803275 100644
--- a/docs/manual/libxml++_without_code.xml
+++ b/docs/manual/libxml++_without_code.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0"?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
   "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"; [
   <!ENTITY date "February 2002">
   <!ENTITY path_examples_base "../../examples/">
   <!ENTITY url_examples_base "../&path_examples_base;">
 ]>
 
-<article id="libxmlplusplus" lang="en">
-  <artheader>
+<book id="index" lang="en">
+  <bookinfo>
     <title>libxml++ - An XML Parser for C++</title>
     <author>
       <firstname>Murray</firstname>
@@ -20,8 +20,8 @@
     <abstract>
       <para>This is an introduction to libxml's C++ binding, with simple examples.</para>
     </abstract>
-  </artheader>
-  <sect1 id="section-introduction">
+  </bookinfo>
+  <chapter id="chapter-introduction">
     <title>libxml++</title>
     <para>
       libxml++ is a C++ API for the popular libxml XML parser, written in C. libxml is famous for its high performance and compliance to standard specifications, but its C API is quite difficult even for common tasks. 
@@ -34,7 +34,7 @@
     <para>But libxml++ was created mainly to fill the need for an API-stable and ABI-stable C++ XML parser which could be used as a shared library dependency by C++ applications that are distributed widely in binary form. That means that installed applications will not break when new versions of libxml++ are installed on a user's computer. Gradual improvement of the libxml++ API is still possible via non-breaking API additions, and new independent versions of the ABI that can be installed in parallel with older versions. These are the general techniques and principles followed by the <ulink
 url="http://www.gnome.org";>GNOME</ulink> project, of which libxml++ is a part.</para>
 
-    <sect2>
+    <sect1>
     <title>Installation</title>
     <para>libxml++ is packaged by major Linux and *BSD distributions and can be installed from source on Linux and Windows, using any modern compiler, such as g++, SUN Forte, or MSVC++.</para>
     <para>For instance, to install libxml++ and its documentation on debian, use apt-get or synaptic like so:
@@ -46,17 +46,17 @@ url="http://www.gnome.org";>GNOME</ulink> project, of which libxml++ is a part.</
     <para>The source code may be downloaded from <ulink
 url="http://libxmlplusplus.sourceforge.net";>libxmlplusplus.sourceforge.net</ulink>
 . libxml++ is licensed under the LGPL, which allows its use via dynamic linking in both open source and closed-source software. The underlying libxml library uses the even more generous MIT licence.</para>
-    </sect2>
+    </sect1>
 
-    <sect2>
+    <sect1>
     <title>UTF-8 and Glib::ustring</title>
     <para>The libxml++ API takes, and gives, strings in the UTF-8 Unicode encoding, which can support all known languages and locales. This choice was made because, of the encodings that have this capability, UTF-8 is the most commonly accepted choice. UTF-8 is a multi-byte encoding, meaning that some characters use more than 1 byte. But for compatibility, old-fashioned 7-bit ASCII strings are unchanged when encoded as UTF-8, and UTF-8 strings do not contain null bytes which would cause old code to misjudge the number of bytes. For these reasons, you can store a UTF-8 string in a std::string object. However, the std::string API will operate on that string in terms of bytes, instead of characters.</para>
     <para>Because Standard C++ has no string class that can fully handle UTF-8, libxml++ uses the Glib::ustring class from the glibmm library. Glib::ustring has almost exactly the same API as std::string, but methods such as length() and operator[] deal with whole UTF-8 characters rather than raw bytes.</para>
     <para>There are implicit conversions between std::string and Glib::ustring, so you can use std::string wherever you see a Glib::ustring in the API, if you really don't care about any locale other than English. However, that is unlikely in today's connected world.</para>
     <para>glibmm also provides useful API to convert between encodings and locales.</para>
-    </sect2>
+    </sect1>
 
-    <sect2>
+    <sect1>
     <title>Compilation and Linking</title>
     <para>To use libxml++ in your application, you must tell the compiler where to find the include headers and where to find the libxml++ library. libxml++ provides a pkg-config .pc file to make this easy. For instance, the following command will provide the necessary compiler options:
     <command>pkg-config libxml++-2.6 --cflags --libs</command>
@@ -68,38 +68,38 @@ url="http://libxmlplusplus.sourceforge.net";>libxmlplusplus.sourceforge.net</ulin
     AC_SUBST(SOMEAPP_LIBS)
     </programlisting>
     </para>
-    </sect2>
- 
     </sect1>
-    
-  <sect1 id="parsers">
+
+    </chapter>
+
+  <chapter id="chapter-parsers">
     <title>Parsers</title>
     <para>Like the underlying libxml library, libxml++ allows the use of 3 parsers, depending on your needs - the DOM, SAX, and TextReader parsers. The relative advantages and behaviour of these parsers will be explained here.</para>
     <para>All of the parsers may parse XML documents directly from disk, a string, or a C++ std::istream. Although the libxml++ API uses only Glib::ustring, and therefore the UTF-8 encoding, libxml++ can parse documents in any encoding, converting to UTF-8 automatically. This conversion will not lose any information because UTF-8 can represent any locale.</para>
     <para>Remember that white space is usually significant in XML documents, so the parsers might provide unexpected text nodes that contain only spaces and new lines. The parser does not know whether you care about these text nodes, but your application may choose to ignore them.</para> 
   
-    <sect2>
+    <sect1>
       <title>DOM Parser</title>
       <para>The DOM parser parses the whole document at once and stores the structure in memory, available via <literal>Parser::get_document()</literal>. With methods such as <literal>Document::get_root_node()</literal> and <literal>Node::get_children()</literal>, you may then navigate into the heirarchy of XML nodes without restriction, jumping forwards or backwards in the document based on the information that you encounter. Therefore the DOM parser uses a relatively large amount of memory.</para>
       <para>You should use C++ RTTI (via <literal>dynamic_cast&lt;&gt;</literal>) to identify the specific node type and to perform actions which are not possible with all node types. For instance, only <literal>Element</literal>s have attributes. Here is the inheritance hierarchy of node types:</para>
 
       <para>
       <itemizedlist>
-      <listitem>xmlpp::Node:
+      <listitem><para>xmlpp::Node:
         <itemizedlist>
-          <listitem>xmlpp::Attribute</listitem>
-          <listitem>xmlpp::ContentNode
+          <listitem><para>xmlpp::Attribute</para></listitem>
+          <listitem><para>xmlpp::ContentNode
           <itemizedlist>
-            <listitem>xmlpp::CdataNode</listitem>
-            <listitem>xmlpp::CommentNode</listitem>
-            <listitem>xmlpp::ProcessingInstructionNode</listitem>
-            <listitem>xmlpp::TextNode</listitem>
+            <listitem><para>xmlpp::CdataNode</para></listitem>
+            <listitem><para>xmlpp::CommentNode</para></listitem>
+            <listitem><para>xmlpp::ProcessingInstructionNode</para></listitem>
+            <listitem><para>xmlpp::TextNode</para></listitem>
           </itemizedlist>
-          </listitem>
-          <listitem>xmlpp::Element</listitem>
-          <listitem>xmlpp::EntityReference</listitem>
+          </para></listitem>
+          <listitem><para>xmlpp::Element</para></listitem>
+          <listitem><para>xmlpp::EntityReference</para></listitem>
         </itemizedlist>
-        </listitem>
+        </para></listitem>
  
       </itemizedlist>
     </para>
@@ -108,17 +108,17 @@ url="http://libxmlplusplus.sourceforge.net";>libxmlplusplus.sourceforge.net</ulin
       <para>There are also several methods which can create new child <literal>Node</literal>s. By using these, and one of the <literal>Document::write_*()</literal> methods, you can use libxml++ to build a new XML document.</para>
 
 
-<sect3>
+<sect2>
 <title>Example</title>
 <para>This example looks in the document for expected elements and then examines them. All these examples are included in the libxml++ source distribution.</para>
 <para><ulink url="&url_examples_base;dom_parser">Source Code</ulink></para>
-</sect3>
+</sect2>
 
 
-    </sect2>
+    </sect1>
 
 
-    <sect2>
+    <sect1>
       <title>SAX Parser</title>
       <para>The SAX parser presents each node of the XML document in sequence. So when you process one node, you must have already stored information about any relevant previous nodes, and you have no information at that time about subsequent nodes. The SAX parser uses less memory than the DOM parser and it is a suitable abstraction for documents that can be processed sequentially rather than as a whole.</para>   
 
@@ -126,30 +126,30 @@ url="http://libxmlplusplus.sourceforge.net";>libxmlplusplus.sourceforge.net</ulin
 
       <para>As shown in the example, you should derive your own class from SaxParser and override some of the virtual methods. These &quot;handler&quot; methods will be called while the document is parsed.</para>
  
-<sect3>
+<sect2>
 <title>Example</title>
 <para>This example shows how the handler methods are called during parsing.</para>
 <para><ulink url="&url_examples_base;sax_parser">Source Code</ulink></para>
-</sect3>
+</sect2>
 
-    </sect2>
+    </sect1>
 
-    <sect2>
+    <sect1>
       <title>TextReader Parser</title>
       <para>Like the SAX parser, the TextReader parser is suitable for sequential parsing, but instead of implementing handlers for specific parts of the document, it allows you to detect the current node type, process the node accordingly, and skip forward in the document as much as necessary. Unlike the DOM parser, you may not move backwards in the XML document. And unlike the SAX parser, you must not waste time processing nodes that do not interest you. </para>
       <para>All methods are on the single parser instance, but their result depends on the current context. For instance, use <literal>read()</literal> to move to the next node, and <literal>move_to_element()</literal> to navigate to child nodes. These methods will return false when no more nodes are available. Then use methods such as <literal>get_name()</literal> and <literal>get_value()</literal> to examine the elements and their attributes.</para> 
 
-<sect3>
+<sect2>
 <title>Example</title>
 <para>This example examines each node in turn, then moves to the next node.</para>
 <para><ulink url="&url_examples_base;textreader">Source Code</ulink></para>
-</sect3>
+</sect2>
 
 
-    </sect2>
+    </sect1>
 
   
-  </sect1>
+  </chapter>
 
 
-</article>
+</book>
diff --git a/docs/reference/Doxyfile.in b/docs/reference/Doxyfile.in
index 4906242..4ff0931 100644
--- a/docs/reference/Doxyfile.in
+++ b/docs/reference/Doxyfile.in
@@ -1,64 +1,83 @@
-# Doxyfile 1.3.9.1
+# Doxyfile 1.6.1
+# @configure_input@
 
 #---------------------------------------------------------------------------
 # Project related configuration options
 #---------------------------------------------------------------------------
+DOXYFILE_ENCODING      = UTF-8
 PROJECT_NAME           = @PACKAGE_NAME@
 PROJECT_NUMBER         = @PACKAGE_VERSION@
-OUTPUT_DIRECTORY       = 
+OUTPUT_DIRECTORY       = docs/reference
 CREATE_SUBDIRS         = NO
 OUTPUT_LANGUAGE        = English
-USE_WINDOWS_ENCODING   = NO
 BRIEF_MEMBER_DESC      = YES
 REPEAT_BRIEF           = YES
-ABBREVIATE_BRIEF       = 
+ABBREVIATE_BRIEF       =
 ALWAYS_DETAILED_SEC    = NO
 INLINE_INHERITED_MEMB  = NO
-FULL_PATH_NAMES        = NO
-STRIP_FROM_PATH        = 
-STRIP_FROM_INC_PATH    = 
+FULL_PATH_NAMES        = YES
+STRIP_FROM_PATH        = "@abs_top_builddir@/libxml++/" \
+                         "@abs_top_srcdir@/libxml++/" \
+                         "@abs_top_builddir@/" \
+                         "@abs_top_srcdir@/"
+STRIP_FROM_INC_PATH    = "@abs_top_builddir@/" \
+                         "@abs_top_srcdir@/"
 SHORT_NAMES            = NO
 JAVADOC_AUTOBRIEF      = YES
+QT_AUTOBRIEF           = NO
 MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP         = NO
 INHERIT_DOCS           = YES
-DISTRIBUTE_GROUP_DOC   = NO
+SEPARATE_MEMBER_PAGES  = NO
 TAB_SIZE               = 8
-ALIASES                = "newin2p18=\xrefitem newin2p18s \"Since libxml++ 2.18\" \"New API in libxml++ 2.18\" \n" \
-                         "newin2p20=\xrefitem newin2p20s \"Since libxml++ 2.20\" \"New API in libxml++ 2.20\" \n" \
-                         "newin2p22=\xrefitem newin2p22s \"Since libxml++ 2.22\" \"New API in libxml++ 2.22\" \n" \
-                         "newin2p24=\xrefitem newin2p24s \"Since libxml++ 2.24\" \"New API in libxml++ 2.24\" \n"
+ALIASES                = "newin{2}=\xrefitem since_\1_\2 \"Since @PACKAGE_NAME@ \1.\2\" \"New API in @PACKAGE_NAME@ \1.\2\""
 OPTIMIZE_OUTPUT_FOR_C  = NO
 OPTIMIZE_OUTPUT_JAVA   = NO
+OPTIMIZE_FOR_FORTRAN   = NO
+OPTIMIZE_OUTPUT_VHDL   = NO
+EXTENSION_MAPPING      =
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+SIP_SUPPORT            = NO
+IDL_PROPERTY_SUPPORT   = YES
+DISTRIBUTE_GROUP_DOC   = NO
 SUBGROUPING            = YES
+TYPEDEF_HIDES_STRUCT   = NO
+SYMBOL_CACHE_SIZE      = 0
 #---------------------------------------------------------------------------
 # Build related configuration options
 #---------------------------------------------------------------------------
-EXTRACT_ALL            = YES
-EXTRACT_PRIVATE        = NO
-EXTRACT_STATIC         = YES
-EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_ALL            = NO
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = NO
 EXTRACT_LOCAL_METHODS  = NO
-HIDE_UNDOC_MEMBERS     = NO
-HIDE_UNDOC_CLASSES     = NO
-HIDE_FRIEND_COMPOUNDS  = NO
-HIDE_IN_BODY_DOCS      = NO
+EXTRACT_ANON_NSPACES   = NO
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_FRIEND_COMPOUNDS  = YES
+HIDE_IN_BODY_DOCS      = YES
 INTERNAL_DOCS          = NO
 CASE_SENSE_NAMES       = YES
 HIDE_SCOPE_NAMES       = NO
-SHOW_INCLUDE_FILES     = NO
+SHOW_INCLUDE_FILES     = YES
 INLINE_INFO            = YES
 SORT_MEMBER_DOCS       = YES
 SORT_BRIEF_DOCS        = NO
-SORT_BY_SCOPE_NAME     = NO
-GENERATE_TODOLIST      = YES
-GENERATE_TESTLIST      = YES
-GENERATE_BUGLIST       = YES
+SORT_MEMBERS_CTORS_1ST = YES
+SORT_GROUP_NAMES       = YES
+SORT_BY_SCOPE_NAME     = YES
+GENERATE_TODOLIST      = NO
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
 GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS       = 
-MAX_INITIALIZER_LINES  = 30
-SHOW_USED_FILES        = YES
-SHOW_DIRECTORIES       = YES
+ENABLED_SECTIONS       =
+MAX_INITIALIZER_LINES  = 2
+SHOW_USED_FILES        = NO
+SHOW_DIRECTORIES       = NO
+SHOW_FILES             = NO
+SHOW_NAMESPACES        = YES
+FILE_VERSION_FILTER    =
+LAYOUT_FILE            =
 #---------------------------------------------------------------------------
 # configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
@@ -66,60 +85,89 @@ QUIET                  = NO
 WARNINGS               = YES
 WARN_IF_UNDOCUMENTED   = YES
 WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = YES
 WARN_FORMAT            = "$file:$line: $text"
-WARN_LOGFILE           = 
+WARN_LOGFILE           = docs/reference/doxygen.log
 #---------------------------------------------------------------------------
 # configuration options related to the input files
 #---------------------------------------------------------------------------
-INPUT                  = @top_srcdir@/libxml++
-FILE_PATTERNS          = *.h
-RECURSIVE              = YES
-EXCLUDE                = 
+INPUT                  =
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          =
+RECURSIVE              = NO
+EXCLUDE                =
 EXCLUDE_SYMLINKS       = NO
-EXCLUDE_PATTERNS       = */wrap_init.h
-EXAMPLE_PATH           = @top_srcdir@/examples
-EXAMPLE_PATTERNS       = *.h \
-                         *.cc
+EXCLUDE_PATTERNS       =
+EXCLUDE_SYMBOLS        = _* \
+                         adaptor_trait \
+                         basic_filebuf \
+                         basic_streambuf \
+                         binary_function \
+                         char_traits \
+                         internal \
+                         pair \
+                         unary_function
+EXAMPLE_PATH           = "@abs_top_srcdir@/examples"
+EXAMPLE_PATTERNS       = *.cc \
+                         *.h
 EXAMPLE_RECURSIVE      = YES
-IMAGE_PATH             = $(DOXYGEN_IMAGE_PATH)
-INPUT_FILTER           = 
-FILTER_PATTERNS        = 
+IMAGE_PATH             =
+INPUT_FILTER           =
+FILTER_PATTERNS        =
 FILTER_SOURCE_FILES    = NO
 #---------------------------------------------------------------------------
 # configuration options related to source browsing
 #---------------------------------------------------------------------------
 SOURCE_BROWSER         = NO
 INLINE_SOURCES         = NO
-STRIP_CODE_COMMENTS    = NO
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION    = YES
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION    = NO
+REFERENCES_LINK_SOURCE = YES
+USE_HTAGS              = NO
 VERBATIM_HEADERS       = NO
 #---------------------------------------------------------------------------
 # configuration options related to the alphabetical class index
 #---------------------------------------------------------------------------
-ALPHABETICAL_INDEX     = YES
+ALPHABETICAL_INDEX     = NO
 COLS_IN_ALPHA_INDEX    = 5
-IGNORE_PREFIX          = 
+IGNORE_PREFIX          =
 #---------------------------------------------------------------------------
 # configuration options related to the HTML output
 #---------------------------------------------------------------------------
 GENERATE_HTML          = YES
 HTML_OUTPUT            = html
 HTML_FILE_EXTENSION    = .html
-HTML_HEADER            = 
-HTML_FOOTER            = 
-HTML_STYLESHEET        = 
+HTML_HEADER            =
+HTML_FOOTER            =
+HTML_STYLESHEET        = "@MMDOCTOOLDIR@/doxygen.css"
 HTML_ALIGN_MEMBERS     = YES
+HTML_DYNAMIC_SECTIONS  = NO
+GENERATE_DOCSET        = NO
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+DOCSET_BUNDLE_ID       = org.doxygen.Project
 GENERATE_HTMLHELP      = NO
-CHM_FILE               = 
-HHC_LOCATION           = 
+CHM_FILE               =
+HHC_LOCATION           =
 GENERATE_CHI           = NO
+CHM_INDEX_ENCODING     =
 BINARY_TOC             = NO
 TOC_EXPAND             = NO
+GENERATE_QHP           = NO
+QCH_FILE               =
+QHP_NAMESPACE          =
+QHP_VIRTUAL_FOLDER     = doc
+QHP_CUST_FILTER_NAME   =
+QHP_CUST_FILTER_ATTRS  =
+QHP_SECT_FILTER_ATTRS  =
+QHG_LOCATION           =
 DISABLE_INDEX          = NO
 ENUM_VALUES_PER_LINE   = 1
-GENERATE_TREEVIEW      = NO
+GENERATE_TREEVIEW      = NONE
+USE_INLINE_TREES       = NO
 TREEVIEW_WIDTH         = 250
+FORMULA_FONTSIZE       = 10
+SEARCHENGINE           = NO
 #---------------------------------------------------------------------------
 # configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
@@ -129,12 +177,13 @@ LATEX_CMD_NAME         = latex
 MAKEINDEX_CMD_NAME     = makeindex
 COMPACT_LATEX          = NO
 PAPER_TYPE             = a4wide
-EXTRA_PACKAGES         = 
-LATEX_HEADER           = 
-PDF_HYPERLINKS         = NO
-USE_PDFLATEX           = NO
+EXTRA_PACKAGES         =
+LATEX_HEADER           =
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = YES
 LATEX_BATCHMODE        = NO
 LATEX_HIDE_INDICES     = NO
+LATEX_SOURCE_CODE      = NO
 #---------------------------------------------------------------------------
 # configuration options related to the RTF output
 #---------------------------------------------------------------------------
@@ -142,8 +191,8 @@ GENERATE_RTF           = NO
 RTF_OUTPUT             = rtf
 COMPACT_RTF            = NO
 RTF_HYPERLINKS         = NO
-RTF_STYLESHEET_FILE    = 
-RTF_EXTENSIONS_FILE    = 
+RTF_STYLESHEET_FILE    =
+RTF_EXTENSIONS_FILE    =
 #---------------------------------------------------------------------------
 # configuration options related to the man page output
 #---------------------------------------------------------------------------
@@ -154,11 +203,11 @@ MAN_LINKS              = NO
 #---------------------------------------------------------------------------
 # configuration options related to the XML output
 #---------------------------------------------------------------------------
-GENERATE_XML           = YES
+GENERATE_XML           = NO
 XML_OUTPUT             = xml
-XML_SCHEMA             = 
-XML_DTD                = 
-XML_PROGRAMLISTING     = YES
+XML_SCHEMA             =
+XML_DTD                =
+XML_PROGRAMLISTING     = NO
 #---------------------------------------------------------------------------
 # configuration options for the AutoGen Definitions output
 #---------------------------------------------------------------------------
@@ -169,51 +218,74 @@ GENERATE_AUTOGEN_DEF   = NO
 GENERATE_PERLMOD       = NO
 PERLMOD_LATEX          = NO
 PERLMOD_PRETTY         = YES
-PERLMOD_MAKEVAR_PREFIX = 
+PERLMOD_MAKEVAR_PREFIX =
 #---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
+# Configuration options related to the preprocessor
 #---------------------------------------------------------------------------
 ENABLE_PREPROCESSING   = YES
 MACRO_EXPANSION        = YES
 EXPAND_ONLY_PREDEF     = YES
-SEARCH_INCLUDES        = NO
-INCLUDE_PATH           = 
-INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = DOXYGEN_SHOULD_SKIP_THIS
-EXPAND_AS_DEFINED      = 
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = "@abs_top_builddir@/libxml++" \
+                         "@abs_top_srcdir@/libxml++"
+INCLUDE_FILE_PATTERNS  = *.h
+PREDEFINED             = __cplusplus \
+                         DOXYGEN_SHOULD_SKIP_THIS \
+                         "G_GNUC_CONST=" \
+                         "G_GNUC_DEPRECATED=" \
+                         "G_GNUC_EXTENSION=" \
+                         "G_GNUC_INTERNAL=" \
+                         "G_GNUC_MALLOC=" \
+                         "G_GNUC_NORETURN=" \
+                         "G_GNUC_NO_INSTRUMENT=" \
+                         "G_GNUC_NULL_TERMINATED=" \
+                         "G_GNUC_PURE=" \
+                         "G_GNUC_WARN_UNUSED_RESULT=" \
+                         "G_MODULE_EXPORT=" \
+                         GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED \
+                         GLIBMM_EXCEPTIONS_ENABLED \
+                         GLIBMM_PROPERTIES_ENABLED \
+                         GLIBMM_VFUNCS_ENABLED \
+                         "LIBXMLXX_API="
+EXPAND_AS_DEFINED      = LIBXMLXX_MAJOR_VERSION \
+                         LIBXMLXX_MINOR_VERSION \
+                         LIBXMLXX_MICRO_VERSION
 SKIP_FUNCTION_MACROS   = YES
 #---------------------------------------------------------------------------
-# Configuration::additions related to external references   
+# Configuration::additions related to external references
 #---------------------------------------------------------------------------
-TAGFILES               = "libstdc++.tag.xml = http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen"; \
-                         "../../../glibmm/docs/reference/glibmm_doxygen_tags = http://www.gtkmm.org/docs/glibmm-2.4/docs/reference/html";
-GENERATE_TAGFILE       = libxml++_doxygen_tags
+TAGFILES               = @DOXYGEN_TAGFILES@
+GENERATE_TAGFILE       = "docs/reference/@LIBXMLXX_MODULE_NAME  tag"
 ALLEXTERNALS           = NO
-EXTERNAL_GROUPS        = YES
-PERL_PATH              = /usr/bin/perl
+EXTERNAL_GROUPS        = NO
+PERL_PATH              = @PERL@
 #---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
+# Configuration options related to the dot tool
 #---------------------------------------------------------------------------
 CLASS_DIAGRAMS         = YES
+MSCGEN_PATH            =
 HIDE_UNDOC_RELATIONS   = NO
 HAVE_DOT               = YES
+DOT_FONTNAME           = Sans
+DOT_FONTSIZE           = 10
+DOT_FONTPATH           =
 CLASS_GRAPH            = YES
 COLLABORATION_GRAPH    = NO
+GROUP_GRAPHS           = NO
 UML_LOOK               = NO
 TEMPLATE_RELATIONS     = NO
 INCLUDE_GRAPH          = NO
 INCLUDED_BY_GRAPH      = NO
 CALL_GRAPH             = NO
+CALLER_GRAPH           = NO
 GRAPHICAL_HIERARCHY    = YES
-DOT_IMAGE_FORMAT       = jpg
-DOT_PATH               = 
-DOTFILE_DIRS           = 
-MAX_DOT_GRAPH_WIDTH    = 1024
-MAX_DOT_GRAPH_HEIGHT   = 1024
+DIRECTORY_GRAPH        = NO
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               =
+DOTFILE_DIRS           =
+DOT_GRAPH_MAX_NODES    = 50
 MAX_DOT_GRAPH_DEPTH    = 0
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = YES
 GENERATE_LEGEND        = YES
 DOT_CLEANUP            = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-SEARCHENGINE           = NO
diff --git a/examples/README b/examples/README
index bb6f596..c72a324 100644
--- a/examples/README
+++ b/examples/README
@@ -1,4 +1,4 @@
-Examples:
+Examples: Enable building with the --enable-examples argument to configure
 
 Simple parsing examples:
   dom_parser - Shows how to parse an XML Document with the DOM parser.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]