Don't install or create formatted man pages.

New logo.

Documentation updates.
pull/193/head
Michael R Sweet 17 years ago
parent 0a79a46ac3
commit 463a190a55
  1. 33
      Makefile.in
  2. 32
      configure.in
  3. BIN
      doc/0.gif
  4. BIN
      doc/1.gif
  5. BIN
      doc/2.gif
  6. BIN
      doc/3.gif
  7. BIN
      doc/4.gif
  8. BIN
      doc/5.gif
  9. BIN
      doc/6.gif
  10. BIN
      doc/7.gif
  11. BIN
      doc/8.gif
  12. BIN
      doc/9.gif
  13. BIN
      doc/A.gif
  14. BIN
      doc/B.gif
  15. BIN
      doc/C.gif
  16. BIN
      doc/D.gif
  17. BIN
      doc/E.gif
  18. BIN
      doc/F.gif
  19. 7
      doc/advanced.html
  20. 138
      doc/basics.html
  21. BIN
      doc/chapters.xcf.gz
  22. BIN
      doc/hires/0.gif
  23. BIN
      doc/hires/1.gif
  24. BIN
      doc/hires/2.gif
  25. BIN
      doc/hires/3.gif
  26. BIN
      doc/hires/4.gif
  27. BIN
      doc/hires/5.gif
  28. BIN
      doc/hires/6.gif
  29. BIN
      doc/hires/7.gif
  30. BIN
      doc/hires/8.gif
  31. BIN
      doc/hires/9.gif
  32. BIN
      doc/hires/A.gif
  33. BIN
      doc/hires/B.gif
  34. BIN
      doc/hires/C.gif
  35. BIN
      doc/hires/D.gif
  36. BIN
      doc/hires/E.gif
  37. BIN
      doc/hires/F.gif
  38. BIN
      doc/hires/logo.gif
  39. 5
      doc/install.html
  40. 110
      doc/intro.html
  41. 4
      doc/license.html
  42. BIN
      doc/logo.gif
  43. BIN
      doc/logo.png
  44. BIN
      doc/logo.xcf.gz
  45. 12
      doc/makedocs.sh
  46. 10
      doc/mxml-pocket.book
  47. 5
      doc/mxml.book
  48. 2595
      doc/mxml.html
  49. 193
      doc/mxmldoc.html
  50. 6
      doc/refapp.html
  51. 3
      doc/relnotes.html
  52. 201
      doc/schema.html
  53. 42
      www/documentation.php
  54. BIN
      www/favicon.ico
  55. BIN
      www/images/logo.jpg
  56. BIN
      www/images/logo.png
  57. BIN
      www/images/logo.xcf.gz
  58. 27
      www/index.php
  59. 62
      www/phplib/html.php

@ -32,7 +32,6 @@ INSTALL = @INSTALL@
LIBMXML = @LIBMXML@
LN = @LN@ -s
MKDIR = @MKDIR@
NROFF = @NROFF@
OPTIM = @OPTIM@
RANLIB = @RANLIB@
RM = @RM@ -f
@ -53,16 +52,6 @@ docdir = @docdir@
BUILDROOT = $(DSTROOT)
#
# Manpage extensions...
#
CAT1EXT = @CAT1EXT@
CAT3EXT = @CAT3EXT@
MAN1EXT = @MAN1EXT@
MAN3EXT = @MAN3EXT@
#
# Install commands...
#
@ -79,12 +68,9 @@ INSTALL_SCRIPT = $(INSTALL) -m 755
# Rules...
#
.SUFFIXES: .0 .1 .3 .c .man .o
.SUFFIXES: .c .man .o
.c.o:
$(CC) $(CFLAGS) -c $<
.man.0 .man.1 .man.3:
$(RM) $@
$(NROFF) -man $< >$@
#
@ -97,8 +83,7 @@ PUBLIBOBJS = mxml-attr.o mxml-entity.o mxml-file.o mxml-index.o \
mxml-node.o mxml-search.o mxml-set.o
LIBOBJS = $(PUBLIBOBJS) mxml-private.o mxml-string.o
OBJS = mxmldoc.o testmxml.o $(LIBOBJS)
TARGETS = $(LIBMXML) mxmldoc doc/mxml.$(CAT3EXT) \
doc/mxmldoc.$(CAT1EXT) testmxml mxml.xml
TARGETS = $(LIBMXML) mxmldoc testmxml mxml.xml doc/mxml.man
#
@ -143,14 +128,10 @@ install: $(TARGETS) install-$(LIBMXML) install-libmxml.a
$(INSTALL_DATA) mxml.h $(BUILDROOT)$(includedir)
$(INSTALL_DIR) $(BUILDROOT)$(libdir)/pkgconfig
$(INSTALL_DATA) mxml.pc $(BUILDROOT)$(libdir)/pkgconfig
$(INSTALL_DIR) $(BUILDROOT)$(mandir)/cat1
$(INSTALL_MAN) doc/mxmldoc.$(CAT1EXT) $(BUILDROOT)$(mandir)/cat1/mxmldoc.$(CAT1EXT)
$(INSTALL_DIR) $(BUILDROOT)$(mandir)/cat3
$(INSTALL_MAN) doc/mxml.$(CAT3EXT) $(BUILDROOT)$(mandir)/cat3/mxml.$(CAT3EXT)
$(INSTALL_DIR) $(BUILDROOT)$(mandir)/man1
$(INSTALL_MAN) doc/mxmldoc.man $(BUILDROOT)$(mandir)/man1/mxmldoc.$(MAN1EXT)
$(INSTALL_MAN) doc/mxmldoc.man $(BUILDROOT)$(mandir)/man1/mxmldoc.1
$(INSTALL_DIR) $(BUILDROOT)$(mandir)/man3
$(INSTALL_MAN) doc/mxml.man $(BUILDROOT)$(mandir)/man3/mxml.$(MAN3EXT)
$(INSTALL_MAN) doc/mxml.man $(BUILDROOT)$(mandir)/man3/mxml.3
install-libmxml.a:
$(INSTALL_DIR) $(BUILDROOT)$(libdir)
@ -187,10 +168,8 @@ uninstall: uninstall-$(LIBMXML) uninstall-libmxml.a
$(RM) -r $(BUILDROOT)$(docdir)
$(RM) $(BUILDROOT)$(includedir)/mxml.h
$(RM) $(BUILDROOT)$(libdir)/pkgconfig/mxml.pc
$(RM) $(BUILDROOT)$(mandir)/cat1/mxmldoc.$(CAT1EXT)
$(RM) $(BUILDROOT)$(mandir)/cat3/mxml.$(CAT3EXT)
$(RM) $(BUILDROOT)$(mandir)/man1/mxmldoc.$(MAN1EXT)
$(RM) $(BUILDROOT)$(mandir)/man3/mxml.$(MAN3EXT)
$(RM) $(BUILDROOT)$(mandir)/man1/mxmldoc.1
$(RM) $(BUILDROOT)$(mandir)/man3/mxml.3
uninstall-libmxml.a:
$(RM) $(BUILDROOT)$(libdir)/libmxml.a

@ -75,15 +75,6 @@ AC_PATH_PROG(AR,ar)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(LN,ln)
AC_PATH_PROG(MKDIR,mkdir)
AC_PATH_PROG(NROFF,nroff)
if test x$NROFF = x; then
AC_PATH_PROG(GROFF,groff)
if test x$GROFF = x; then
NROFF="echo"
else
NROFF="$GROFF -T ascii"
fi
fi
AC_PATH_PROG(RM,rm)
dnl Flags for "ar" command...
@ -263,29 +254,6 @@ if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then
esac
fi
dnl More manpage stuff...
case "$uname" in
*BSD* | Darwin*)
# *BSD
CAT1EXT="0"
MAN1EXT="1"
CAT3EXT="0"
MAN3EXT="3"
;;
*)
# All others
CAT1EXT="1"
MAN1EXT="1"
CAT3EXT="3"
MAN3EXT="3"
;;
esac
AC_SUBST(CAT1EXT)
AC_SUBST(CAT3EXT)
AC_SUBST(MAN1EXT)
AC_SUBST(MAN3EXT)
dnl pkg-config stuff...
if test "$includedir" != /usr/include; then
PC_CFLAGS="-I$includedir"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

@ -1,8 +1,9 @@
<html>
<body>
<h1 align='right'><a name='ADVANCED'>3 - More Mini-XML
Programming Techniques</a></h1>
<h1 align='right'><a name='ADVANCED'><img src="3.gif" align="right"
hspace="10" width="100" height="100" alt="3"></a>More Mini-XML
Programming Techniques</h1>
<p>This chapter shows additional ways to use the Mini-XML
library in your programs.</p>
@ -567,7 +568,7 @@ directives like <tt>&lt;?xml ... ?&gt;</tt> and <tt>&lt;!DOCTYPE ... &gt;</tt>
* Retain headings and titles...
*/
const char *name = node->value.element.name;
char *name = node->value.element.name;
if (!strcmp(name, "html") ||
!strcmp(name, "head") ||

@ -1,11 +1,41 @@
<html>
<body>
<h1 align='right'><a name='BASICS'>2 - Getting Started with
Mini-XML</a></h1>
<h1 align='right'><a name='BASICS'><img src="2.gif" align="right"
hspace="10" width="100" height="100" alt="2"></a>Getting Started
with Mini-XML</h1>
<p>This chapter describes how to write programs that use Mini-XML to
access data in an XML file. Mini-XML provides the following
functionality:</p>
<ul>
<li>Functions for creating and managing XML documents
in memory.</li>
<li>Reading of UTF-8 and UTF-16 encoded XML files and
strings.</li>
<li>Writing of UTF-8 encoded XML files and strings.</li>
<li>Support for arbitrary element names, attributes, and
attribute values with no preset limits, just available
memory.</li>
<li>Support for integer, real, opaque ("cdata"), and text
data types in "leaf" nodes.</li>
<li>"Find", "index", and "walk" functions for easily
accessing data in an XML document.</li>
</ul>
<p>Mini-XML doesn't do validation or other types of processing
on the data based upon schema files or other sources of
definition information, nor does it support character entities
other than those required by the XML specification.</p>
<p>This chapter describes how to write programs that use
Mini-XML to access data in an XML file.</p>
<h2>The Basics</h2>
@ -43,24 +73,64 @@ defines the node type (element, integer, opaque, real, or text)
which determines which value you want to look at in the <a
href='#mxml_value_t'><tt>value</tt></a> union.</p>
<p>New nodes can be created using the <a
href='#mxmlNewElement'><tt>mxmlNewElement()</tt></a>, <a
href='#mxmlNewInteger'><tt>mxmlNewInteger()</tt></a>, <a
href='#mxmlNewOpaque'><tt>mxmlNewOpaque()</tt></a>, <a
href='#mxmlNewReal'><tt>mxmlNewReal()</tt></a>, <a
href='#mxmlNewText'><tt>mxmlNewText()</tt></a> <a
href='#mxmlNewTextf'><tt>mxmlNewTextf()</tt></a> <a
href='#mxmlNewXML'><tt>mxmlNewXML()</tt></a> functions. Only
elements can have child nodes, and the top node must be an
element, usually <tt>&lt;?xml version="1.0"?&gt;</tt>.</p>
<p>Each node has a <tt>user_data</tt> member which allows you to
associate application-specific data with each node as needed.</p>
<p>Node also have pointers for the node above (<tt>parent</tt>),
below (<tt>child</tt>), to the left (<tt>prev</tt>), and to the
right (<tt>next</tt>) of the current node. If you have an XML
file like the following:</p>
<!-- NEED 10 -->
<center><table width="80%" border="1" cellpadding="5" cellspacing="0" summary="Mini-XML Node Value Members">
<caption align="bottom"><i>Table 2-1: Mini-XML Node Value Members</i></caption>
<tr bgcolor="#cccccc">
<th>Value</th>
<th>Type</th>
<th>Node member</th>
</tr>
<tr>
<td>Custom</td>
<td><tt>void *</tt></td>
<td><tt>node-&gt;value.custom.data</tt></td>
</tr>
<tr>
<td>Element</td>
<td><tt>char *</tt></td>
<td><tt>node-&gt;value.element.name</tt></td>
</tr>
<tr>
<td>Integer</td>
<td><tt>int</tt></td>
<td><tt>node-&gt;value.integer</tt></td>
</tr>
<tr>
<td>Opaque (string)</td>
<td><tt>char *</tt></td>
<td><tt>node-&gt;value.opaque</tt></td>
</tr>
<tr>
<td>Real</td>
<td><tt>double</tt></td>
<td><tt>node-&gt;value.real</tt></td>
</tr>
<tr>
<td>Text</td>
<td><tt>char *</tt></td>
<td><tt>node-&gt;value.text.string</tt></td>
</tr>
</table></center>
<p>Each node also has a <tt>user_data</tt> member which allows you
to associate application-specific data with each node as needed.</p>
<p>New nodes are created using the <a
href='#mxmlNewElement'><tt>mxmlNewElement</tt></a>, <a
href='#mxmlNewInteger'><tt>mxmlNewInteger</tt></a>, <a
href='#mxmlNewOpaque'><tt>mxmlNewOpaque</tt></a>, <a
href='#mxmlNewReal'><tt>mxmlNewReal</tt></a>, <a
href='#mxmlNewText'><tt>mxmlNewText</tt></a> <a
href='#mxmlNewTextf'><tt>mxmlNewTextf</tt></a> <a
href='#mxmlNewXML'><tt>mxmlNewXML</tt></a> functions. Only
elements can have child nodes, and the top node must be an element,
usually the <tt>&lt;?xml version="1.0"?&gt;</tt> node created by
<tt>mxmlNewXML()</tt>.</p>
<p>Nodes have pointers to the node above (<tt>parent</tt>), below
(<tt>child</tt>), left (<tt>prev</tt>), and right (<tt>next</tt>)
of the current node. If you have an XML file like the following:</p>
<pre>
&lt;?xml version="1.0"?&gt;
@ -99,9 +169,9 @@ memory:</p>
to the first child node.</p>
<p>Once you are done with the XML data, use the <a
href='#mxmlDelete'><tt>mxmlDelete()</tt></a>
function to recursively free the memory that is used for a
particular node or the entire tree:</p>
href='#mxmlDelete'><tt>mxmlDelete</tt></a> function to recursively
free the memory that is used for a particular node or the entire
tree:</p>
<pre>
mxmlDelete(tree);
@ -184,7 +254,7 @@ processed just like one loaded from disk or a string.</p>
<h2>Loading XML</h2>
<p>You load an XML file using the <a
href='#mxmlLoadFile'><tt>mxmlLoadFile()</tt></a>
href='#mxmlLoadFile'><tt>mxmlLoadFile</tt></a>
function:</p>
<pre>
@ -221,7 +291,7 @@ values. Other standard callbacks include
<tt>MXML_OPAQUE_CALLBACK</tt>, and
<tt>MXML_REAL_CALLBACK</tt>.</p>
<p>The <a href='#mxmlLoadString'><tt>mxmlLoadString()</tt></a>
<p>The <a href='#mxmlLoadString'><tt>mxmlLoadString</tt></a>
function loads XML node trees from a string:</p>
<!-- NEED 10 -->
@ -245,7 +315,7 @@ is <tt>NULL</tt>.</p>
<h2>Saving XML</h2>
<p>You save an XML file using the <a
href='#mxmlSaveFile'><tt>mxmlSaveFile()</tt></a> function:</p>
href='#mxmlSaveFile'><tt>mxmlSaveFile</tt></a> function:</p>
<pre>
FILE *fp;
@ -272,8 +342,8 @@ uses the <tt>MXML_NO_CALLBACK</tt> constant to specify that no
special whitespace handling is required.</p>
<p>The <a
href='#mxmlSaveAllocString'><tt>mxmlSaveAllocString()</tt></a>,
and <a href='#mxmlSaveString'><tt>mxmlSaveString()</tt></a>
href='#mxmlSaveAllocString'><tt>mxmlSaveAllocString</tt></a>,
and <a href='#mxmlSaveString'><tt>mxmlSaveString</tt></a>
functions save XML node trees to strings:</p>
<pre>
@ -290,7 +360,7 @@ functions save XML node trees to strings:</p>
</pre>
<p>The first and last arguments are the same as used for
<tt>mxmlSaveFile()</tt>. The <tt>mxmlSaveString()</tt> function
<tt>mxmlSaveFile()</tt>. The <tt>mxmlSaveString</tt> function
takes pointer and size arguments for saving the XML document to
a fixed-size buffer, while <tt>mxmlSaveAllocString()</tt>
returns a string buffer that was allocated using
@ -317,9 +387,9 @@ overrides the default wrap margin:</p>
<h2>Finding and Iterating Nodes</h2>
<p>The <a
href='#mxmlWalkPrev'><tt>mxmlWalkPrev()</tt></a>
href='#mxmlWalkPrev'><tt>mxmlWalkPrev</tt></a>
and <a
href='#mxmlWalkNext'><tt>mxmlWalkNext()</tt></a>functions
href='#mxmlWalkNext'><tt>mxmlWalkNext</tt></a>functions
can be used to iterate through the XML node tree:</p>
<pre>
@ -333,7 +403,7 @@ can be used to iterate through the XML node tree:</p>
</pre>
<p>In addition, you can find a named element/node using the <a
href='#mxmlFindElement'><tt>mxmlFindElement()</tt></a>
href='#mxmlFindElement'><tt>mxmlFindElement</tt></a>
function:</p>
<pre>

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@ -1,8 +1,9 @@
<html>
<body>
<h1 align='right'><a name='INSTALL'>1 - Building, Installing,
and Packaging Mini-XML</a></h1>
<h1 align='right'><a name='INSTALL'><img src="1.gif" align="right"
hspace="10" width="100" height="100" alt="1"></a>Building,
Installing, and Packaging Mini-XML</h1>
<p>This chapter describes how to build, install, and package
Mini-XML on your system from the source archive. You will need an

@ -7,85 +7,29 @@
</head>
<body>
<h1 align='right'><a name='INTRO'>Introduction</a></h1>
<h1 align='right'><a name='INTRO'><img src="0.gif" align="right"
hspace="10" width="100" height="100" alt="0"></a>Introduction</h1>
<p>This programmers manual describes Mini-XML version 2.3, a
small XML parsing library that you can use to read and write XML
and XML-like data files in your application without requiring
large non-standard libraries. Mini-XML only requires an ANSI C
compatible compiler (GCC works, as do most vendors' ANSI C
compilers) and a "make" program.</p>
<p>Mini-XML provides the following functionality:</p>
<ul>
<li>Reading of UTF-8 and UTF-16 encoded XML files and
strings.</li>
<li>Writing of UTF-8 encoded XML files and strings.</li>
<li>Data is stored in a linked-list tree structure,
preserving the XML data hierarchy.</li>
<li>Supports arbitrary element names, attributes, and
attribute values with no preset limits, just available
memory.</li>
<li>Supports integer, real, opaque ("cdata"), and text
data types in "leaf" nodes.</li>
<li>Functions for creating and managing trees of
data.</li>
<li>"Find" and "walk" functions for easily locating and
navigating trees of data.</li>
</ul>
<p>Mini-XML doesn't do validation or other types of processing
on the data based upon schema files or other sources of
definition information, nor does it support character entities
other than those required by the XML specification.</p>
<!-- NEED 6 -->
<h2>Legal Stuff</h2>
<p>The Mini-XML library is copyright 2003-2007 by Michael
Sweet.</p>
<p>This library is free software; you can redistribute it and/or
modify it under the terms of the <a
href='#LICENSE'>GNU Library General Public
License</a> as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later
version.</p>
<p>This library is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU Library General Public License for
more details.</p>
<!-- NEED 4in -->
<h2>History</h2>
<p>This programmers manual describes Mini-XML version 2.3, a small
XML parsing library that you can use to read and write XML data
files in your C and C++ applications.</p>
<p>Mini-XML was initially developed for the <a
href='http://gutenprint.sf.net/'>Gutenprint</a> project to
replace the rather large and unwieldy <tt>libxml2</tt> library
with something substantially smaller and easier-to-use. It all
began one morning in June of 2003 when Robert posted the
following sentence to the developer's list:</p>
href='http://gutenprint.sf.net/'>Gutenprint</a> project to replace
the rather large and unwieldy <tt>libxml2</tt> library with
something substantially smaller and easier-to-use. It all began one
morning in June of 2003 when Robert posted the following sentence to
the developer's list:</p>
<blockquote>It's bad enough that we require libxml2, but rolling
<blockquote><em>It's bad enough that we require libxml2, but rolling
our own XML parser is a bit more than we can
handle.</blockquote>
handle.</em></blockquote>
<p>I then replied with:</p>
<blockquote>Given the limited scope of what you use in XML, it
should be trivial to code a mini-XML API in a few hundred lines
of code.</blockquote>
<blockquote><em>Given the limited scope of what you use in XML, it
should be trivial to code a mini-XML API in a few hundred lines of
code.</em></blockquote>
<p>I took my own challenge and coded furiously for two days to
produced the initial public release of Mini-XML, total lines of
@ -122,7 +66,6 @@ project added or removed from this list, or if you have any
comments/quotes you would like me to publish about your
experiences with Mini-XML.</p>
<!-- NEED 3in -->
<h2>Organization of This Document</h2>
<p>This manual is organized into the following chapters and
@ -159,6 +102,10 @@ appendices:</p>
Reference</a>", contains a complete reference for
Mini-XML, generated by <tt>mxmldoc</tt>.</li>
<li>Appendix D, "<a href='#SCHEMA'>XML Schema</a>", shows
the XML schema used for the XML files produced by
<tt>mxmldoc</tt>.</li>
</ul>
<!-- NEED 10 -->
@ -245,5 +192,24 @@ manual:</p>
</dl>
<!-- NEED 6 -->
<h2>Legal Stuff</h2>
<p>The Mini-XML library is copyright 2003-2007 by Michael
Sweet.</p>
<p>This library is free software; you can redistribute it and/or
modify it under the terms of the <a
href='#LICENSE'>GNU Library General Public
License</a> as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later
version.</p>
<p>This library is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU Library General Public License for
more details.</p>
</body>
</html>

@ -1,7 +1,9 @@
<html>
<body>
<h1 align='right'><a name='LICENSE'>A - Mini-XML License</a></h1>
<h1 align='right'><a name='LICENSE'><img src="A.gif" align="right"
hspace="10" width="100" height="100" alt="A"></a>Mini-XML
License</h1>
<p>The Mini-XML library and included programs are provided under
the terms of the GNU Library General Public License (LGPL) with

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

@ -4,7 +4,7 @@
#
# Script to make documentation...
#
# Copyright 2003-2005 by Michael Sweet.
# Copyright 2003-2007 by Michael Sweet.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@ -17,17 +17,13 @@
# GNU General Public License for more details.
#
htmldoc --verbose --batch mxml.book --no-embedfonts -f mxml.pdf
htmldoc --verbose --path hires:. --batch mxml.book -f mxml.pdf
htmldoc --verbose --batch mxml.book -f mxml.html
htmldoc --verbose --batch mxml.book --gray --no-embedfonts -f mxml.ps
rm -f mxml.ps.gz
gzip -v9 mxml.ps
htmldoc --verbose --batch mxml.book --no-title -f mxml.html
rm -rf mxml.d
mkdir mxml.d
htmldoc --verbose --batch mxml.book -t htmlsep -d mxml.d
htmldoc --verbose --batch mxml.book --no-title -t htmlsep -d mxml.d
#
# End of "$Id$".

@ -1,10 +0,0 @@
#HTMLDOC 1.8.27.1
-t pdf14 -f "mxml-pocket.pdf" --book --toclevels 3 --no-numbered --toctitle "Table of Contents" --title --titleimage "title.html" --linkstyle plain --size 4.25x6.875in --left 0.750in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer h.1 --nup 1 --tocheader .t. --tocfooter ..i --duplex --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=95 --fontsize 9.0 --fontspacing 1.2 --headingfont Helvetica --bodyfont Helvetica --headfootsize 8.0 --headfootfont Helvetica-Oblique --charset iso-8859-1 --links --no-embedfonts --pagemode outline --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password "" --user-password "" --browserwidth 680 --no-strict --no-overflow
intro.html
install.html
basics.html
advanced.html
mxmldoc.html
license.html
relnotes.html
refapp.html

@ -1,5 +1,5 @@
#HTMLDOC 1.8.25 Commercial
-t pdf12 -f mxml.pdf --book --toclevels 3 --no-numbered --toctitle "Table of Contents" --title --titleimage logo.png --linkstyle underline --size Universal --left 1.00in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer h.1 --nup 1 --tocheader .t. --tocfooter ..i --duplex --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=95 --fontsize 11.0 --fontspacing 1.2 --headingfont Helvetica --bodyfont Times --headfootsize 11.0 --headfootfont Helvetica --charset iso-8859-1 --links --no-embedfonts --pagemode outline --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password "" --user-password "" --browserwidth 680 --no-strict --no-overflow
#HTMLDOC 1.8.27.1
-t pdf14 -f "mxml.pdf" --book --toclevels 3 --no-numbered --toctitle "Table of Contents" --title --titleimage "title.html" --linkstyle plain --size 4.25x6.875in --left 0.750in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer h.1 --nup 1 --tocheader .t. --tocfooter ..i --duplex --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=95 --fontsize 9.0 --fontspacing 1.2 --headingfont Helvetica --bodyfont Helvetica --headfootsize 8.0 --headfootfont Helvetica-Oblique --charset iso-8859-1 --links --embedfonts --pagemode outline --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password "" --user-password "" --browserwidth 300 --no-strict --no-overflow
intro.html
install.html
basics.html
@ -8,3 +8,4 @@ mxmldoc.html
license.html
relnotes.html
refapp.html
schema.html

File diff suppressed because it is too large Load Diff

@ -1,43 +1,192 @@
<html>
<body>
<h1 align='right'><a name='MXMLDOC'>4 - Using the mxmldoc
Utility</a></h1>
<h1 align='right'><a name='MXMLDOC'><img src="4.gif" align="right"
hspace="10" width="100" height="100" alt="4"></a>Using the mxmldoc
Utility</h1>
<p>This chapter describes how to use <tt>mxmldoc(1)</tt> program to
automatically generate documentation from C and C++ source
files.</p>
<h2>The Basics</h2>
<p>Originally developed to generate the Mini-XML and CUPS API
documentation, the <tt>mxmldoc(1)</tt> program converts C and C++
source files into an intermediate XML format and uses in-line
comments rather than comment headers to annotate functions, types,
and constants.</p>
documentation, <tt>mxmldoc</tt> is now a general-purpose utility
which scans C and C++ source files to produce HTML and man page
documentation along with an XML file representing the functions,
types, and definitions in those source files. Unlike popular
documentation generators like Doxygen or Javadoc, <tt>mxmldoc</tt>
uses in-line comments rather than comment headers, allowing for more
"natural" code documentation.</p>
<p>By default, <tt>mxmldoc</tt> produces HTML documentation. For
example, the following command will scan all of the C source and
header files in the current directory and produce a HTML
documentation file called <var>filename.html</var>:</p>
<pre>
<kbd>mxmldoc *.h *.c &gt;filename.html ENTER</kbd>
</pre>
<p>You can also specify an XML file to create which contains all of
the information from the source files. For example, the following
command creates an XML file called <var>filename.xml</var> in
addition to the HTML file:</p>
<pre>
<kbd>mxmldoc filename.xml *.h *.c &gt;filename.html ENTER</kbd>
</pre>
<p>The <tt>--no-output</tt> option disables the normal HTML
output:</p>
<pre>
<kbd>mxmldoc --no-output filename.xml *.h *.c ENTER</kbd>
</pre>
<p>You can then run <tt>mxmldoc</tt> again with the XML file alone
to generate the HTML documentation:</p>
<p></p>
<pre>
<kbd>mxmldoc filename.xml &gt;filename.html ENTER</kbd>
</pre>
<p>The <tt>--man filename</tt> option tells <tt>mxmldoc</tt> to
create a man page instead of HTML documentation, for example:</p>
<pre>
<kbd>mxmldoc --man filename filename.xml \
&gt;filename.man ENTER</kbd>
<kbd>mxmldoc --man filename *.h *.c \
&gt;filename.man ENTER</kbd>
<kbd>mxmldoc --man filename filename.xml *.h *.c \
&gt;filename.man ENTER</kbd>
</pre>
<h2>Commenting Your Code</h2>
<h2>Creating HTML Documentation</h2>
<p>As noted previously, <tt>mxmldoc</tt> looks for in-line comments
to describe the functions, types, and constants in your code.
<tt>Mxmldoc</tt> will document all public names it finds in your
source files - any names starting with the underscore character (_)
or names that are documented with the <A
HREF="#ATDIRECTIVES">@private@</A> directive are treated as private
and are undocumented.</p>
<p>Comments appearing directly before a function or type definition
are used to document that function or type. Comments appearing after
argument, definition, return type, or variable declarations are used
to document that argument, definition, return type, or variable. For
example, the following code excerpt defines a key/value structure
and a function that creates a new instance of that structure:</p>
<pre>
/* A key/value pair. This is used with the
dictionary structure. */
struct keyval
{
char *key; /* Key string */
char *val; /* Value string */
};
/* Create a new key/value pair. */
struct keyval * /* New key/value pair */
new_keyval(
const char *key, /* Key string */
const char *val) /* Value string */
{
...
}
</pre>
<p><tt>Mxmldoc</tt> also knows to remove extra asterisks (*) from
the comment string, so the comment string:</p>
<pre>
/*
* Compute the value of PI.
*
* The function connects to an Internet server
* that streams audio of mathematical monks
* chanting the first 100 digits of PI.
*/
</pre>
<p>will be shown as:</p>
<pre>
Compute the value of PI.
The function connects to an Internet server
that streams audio of mathematical monks
chanting the first 100 digits of PI.
</pre>
<p><a name="ATDIRECTIVES">Comments</a> can also include the
following special <tt>@name ...@</tt> directive strings:</p>
<ul>
<li><tt>@deprecated@</tt> - flags the item as deprecated to
discourage its use</li>
<li><tt>@private@</tt> - flags the item as private so it
will not be included in the documentation</li>
<li><tt>@since ...@</tt> - flags the item as new since a
particular release. The text following the <tt>@since</tt>
up to the closing <tt>@</tt> is highlighted in the generated
documentation, e.g. <tt>@since CUPS 1.3@</tt>.</li>
</ul>
<!-- NEED 10 -->
<h2>Titles, Sections, and Introductions</h2>
<p><tt>Mxmldoc</tt> also provides options to set the title, section,
and introduction text for the generated documentation. The
<tt>--title text</tt> option specifies the title for the
documentation. The title string is usually put in quotes:</p>
<pre>
<kbd>mxmldoc filename.xml \
--title "My Famous Documentation" \
&gt;filename.html ENTER</kbd>
</pre>
<p>The <tt>--section name</tt> option specifies the section for
the documentation. For HTML documentation, the name is placed in
a HTML comment such as:</p>
<pre>
&lt;!-- SECTION: name -->
</pre>
<h2>Creating Man Pages</h2>
<p>For man pages, the section name is usually just a number ("3"),
or a number followed by a vendor name ("3acme"). The section name is
used in the <tt>.TH</tt> directive in the man page:</p>
<h2>The XML Schema</h2>
<pre>
.TH mylibrary 3acme "My Title" ...
</pre>
<p><i>mxmldoc</i> scans the specified C and C++ source files to
produce an XML representation of globally accessible classes,
constants, enumerations, functions, structures, typedefs,
unions, and variables. The XML file is updated as necessary and
a HTML representation of the XML file is written to the standard
output. If no source files are specified then the current XML
file is converted to HTML on the standard output.
<p>In general, any C or C++ source code is handled by
<i>mxmldoc</i>, however it was specifically written to handle
code with documentation that is formatted according to the CUPS
Configuration Management Plan which is available at
"http://www.cups.org/documentation.php".
<p>The default section name for man page output is "3". There is no
default section name for HTML output.</p>
<p>Finally, the <tt>--intro filename</tt> option specifies a file to
embed after the title and section but before the generated
documentation. For HTML documentation, the file must consist of
valid HTML without the usual <tt>DOCTYPE</tt>, <tt>html</tt>, and
<tt>body</tt> elements. For man page documentation, the file must
consist of valid <tt>nroff(1)</tt> text.</p>
</body>
</html>

@ -1,9 +1,11 @@
<html>
<body>
<h1 align='right'><a name='REFERENCE'>C - Library Reference</a></h1>
<h1 align='right'><a name='REFERENCE'><img src="C.gif" align="right"
hspace="10" width="100" height="100" alt="C"></a>Library
Reference</h1>
<embed src='reference.html'/>
<embed src='reference.html'>
</body>
</html>

@ -1,7 +1,8 @@
<html>
<body>
<h1 align='right'><a name='RELNOTES'>B - Release Notes</a></h1>
<h1 align='right'><a name='RELNOTES'><img src="B.gif" align="right"
hspace="10" width="100" height="100" alt="B"></a>Release Notes</h1>
<h2 _hd_omit_toc>Changes in Mini-XML 2.3</h2>

@ -0,0 +1,201 @@
<html>
<body>
<h1 align='right'><a name='SCHEMA'><img src="D.gif" align="right"
hspace="10" width="100" height="100" alt="D"></a>XML Schema</h1>
<p>This appendix provides the XML schema that is used for the XML
files produced by <tt>mxmldoc</tt>. This schema is available on-line
at:</p>
<pre>
http://www.easysw.com/~mike/mxmldoc.xsd
</pre>
<h2 _hd_omit_toc>mxmldoc.xsd</h2>
<pre><small>
&lt;?xml version="1.0"?>
&lt;xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
&lt;xsd:annotation>
&lt;xsd:documentation xml:lang="en">
Mini-XML 2.3 documentation schema for mxmldoc output.
Copyright 2003-2007 by Michael Sweet.
&lt;/xsd:documentation>
&lt;/xsd:annotation>
&lt;!-- basic element definitions -->
&lt;xsd:element name="argument" type="argumentType"/>
&lt;xsd:element name="class" type="classType"/>
&lt;xsd:element name="constant" type="constantType"/>
&lt;xsd:element name="description" type="xsd:string"/>
&lt;xsd:element name="enumeration" type="enumerationType"/>
&lt;xsd:element name="function" type="functionType"/>
&lt;xsd:element name="mxmldoc" type="mxmldocType"/>
&lt;xsd:element name="namespace" type="namespaceType"/>
&lt;xsd:element name="returnvalue" type="returnvalueType"/>
&lt;xsd:element name="seealso" type="identifierList"/>
&lt;xsd:element name="struct" type="structType"/>
&lt;xsd:element name="typedef" type="typedefType"/>
&lt;xsd:element name="type" type="xsd:string"/>
&lt;xsd:element name="union" type="unionType"/>
&lt;xsd:element name="variable" type="variableType"/>
&lt;!-- descriptions of complex elements -->
&lt;xsd:complexType name="argumentType">
&lt;xsd:sequence>
&lt;xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;/xsd:sequence>
&lt;xsd:attribute name="default" type="xsd:string" use="optional"/>
&lt;xsd:attribute name="name" type="identifier" use="required"/>
&lt;xsd:attribute name="direction" type="direction" use="optional"
default="I"/>
&lt;/xsd:complexType>
&lt;xsd:complexType name="classType">
&lt;xsd:sequence>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;xsd:choice minOccurs="0" maxOccurs="unbounded">
&lt;xsd:element ref="class"/>
&lt;xsd:element ref="enumeration"/>
&lt;xsd:element ref="function"/>
&lt;xsd:element ref="struct"/>
&lt;xsd:element ref="typedef"/>
&lt;xsd:element ref="union"/>
&lt;xsd:element ref="variable"/>
&lt;/xsd:choice>
&lt;/xsd:sequence>
&lt;xsd:attribute name="name" type="identifier" use="required"/>
&lt;xsd:attribute name="parent" type="xsd:string" use="optional"/>
&lt;/xsd:complexType>
&lt;xsd:complexType name="constantType">
&lt;xsd:sequence>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;/xsd:sequence>
&lt;xsd:attribute name="name" type="identifier" use="required"/>
&lt;/xsd:complexType>
&lt;xsd:complexType name="enumerationType">
&lt;xsd:sequence>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;xsd:element ref="constant" minOccurs="1" maxOccurs="unbounded"/>
&lt;/xsd:sequence>
&lt;xsd:attribute name="name" type="identifier" use="required"/>
&lt;/xsd:complexType>
&lt;xsd:complexType name="functionType">
&lt;xsd:sequence>
&lt;xsd:element ref="returnvalue" minOccurs="0" maxOccurs="1"/>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;xsd:element ref="argument" minOccurs="1" maxOccurs="unbounded"/>
&lt;xsd:element ref="seealso" minOccurs="0" maxOccurs="1"/>
&lt;/xsd:sequence>
&lt;xsd:attribute name="name" type="identifier" use="required"/>
&lt;xsd:attribute name="scope" type="scope" use="optional"/>
&lt;/xsd:complexType>
&lt;xsd:complexType name="mxmldocType">
&lt;xsd:choice minOccurs="0" maxOccurs="unbounded">
&lt;xsd:element ref="class"/>
&lt;xsd:element ref="enumeration"/>
&lt;xsd:element ref="function"/>
&lt;xsd:element ref="namespace"/>
&lt;xsd:element ref="struct"/>
&lt;xsd:element ref="typedef"/>
&lt;xsd:element ref="union"/>
&lt;xsd:element ref="variable"/>
&lt;/xsd:choice>
&lt;/xsd:complexType>
&lt;xsd:complexType name="namespaceType">
&lt;xsd:sequence>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;xsd:choice minOccurs="0" maxOccurs="unbounded">
&lt;xsd:element ref="class"/>
&lt;xsd:element ref="enumeration"/>
&lt;xsd:element ref="function"/>
&lt;xsd:element ref="struct"/>
&lt;xsd:element ref="typedef"/>
&lt;xsd:element ref="union"/>
&lt;xsd:element ref="variable"/>
&lt;/xsd:choice>
&lt;/xsd:sequence>
&lt;xsd:attribute name="name" type="identifier" use="required"/>
&lt;/xsd:complexType>
&lt;xsd:complexType name="returnvalueType">
&lt;xsd:sequence>
&lt;xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;/xsd:sequence>
&lt;/xsd:complexType>
&lt;xsd:complexType name="structType">
&lt;xsd:sequence>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;xsd:choice minOccurs="0" maxOccurs="unbounded">
&lt;xsd:element ref="variable"/>
&lt;xsd:element ref="function"/>
&lt;/xsd:choice>
&lt;/xsd:sequence>
&lt;xsd:attribute name="name" type="identifier" use="required"/>
&lt;/xsd:complexType>
&lt;xsd:complexType name="typedefType">
&lt;xsd:sequence>
&lt;xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;/xsd:sequence>
&lt;xsd:attribute name="name" type="identifier" use="required"/>
&lt;/xsd:complexType>
&lt;xsd:complexType name="unionType">
&lt;xsd:sequence>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;xsd:element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
&lt;/xsd:sequence>
&lt;xsd:attribute name="name" type="identifier" use="required"/>
&lt;/xsd:complexType>
&lt;xsd:complexType name="variableType">
&lt;xsd:sequence>
&lt;xsd:element ref="type" minOccurs="1" maxOccurs="1"/>
&lt;xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
&lt;/xsd:sequence>
&lt;xsd:attribute name="name" type="identifier" use="required"/>
&lt;/xsd:complexType>
&lt;!-- data types -->
&lt;xsd:simpleType name="direction">
&lt;xsd:restriction base="xsd:string">
&lt;xsd:enumeration value="I"/>
&lt;xsd:enumeration value="O"/>
&lt;xsd:enumeration value="IO"/>
&lt;/xsd:restriction>
&lt;/xsd:simpleType>
&lt;xsd:simpleType name="identifier">
&lt;xsd:restriction base="xsd:string">
&lt;xsd:pattern value="[a-zA-Z_(.]([a-zA-Z_(.,)* 0-9])*"/>
&lt;/xsd:restriction>
&lt;/xsd:simpleType>
&lt;xsd:simpleType name="identifierList">
&lt;xsd:list itemType="identifier"/>
&lt;/xsd:simpleType>
&lt;xsd:simpleType name="scope">
&lt;xsd:restriction base="xsd:string">
&lt;xsd:enumeration value=""/>
&lt;xsd:enumeration value="private"/>
&lt;xsd:enumeration value="protected"/>
&lt;xsd:enumeration value="public"/>
&lt;/xsd:restriction>
&lt;/xsd:simpleType>
&lt;/xsd:schema>
</small></pre>
</body>
</html>

@ -136,11 +136,13 @@ else
<h1>Documentation</h1>
<p>You can view the Mini-XML documentation in a number of
formats on-line:</p>
<p>You can view the Mini-XML documentation in a single HTML file or in
multiple files with comments on-line:</p>
<ul>
<li><a href='mxml.html'>HTML in one file (140k)</a></li>
<li><a href='documentation.php/toc.html'>HTML in
separate files with Comments</a>
@ -150,43 +152,35 @@ formats on-line:</p>
href='documentation.php/Introduction.html'>Introduction</a></li>
<li><a
href='documentation.php/1BuildingInstallingandPackagingMiniXML.html'>1
- Building, Installing, and Packaging
Mini-XML</a></li>
href='documentation.php/BuildingInstallingandPackagingMiniXML.html'>Building,
Installing, and Packaging Mini-XML</a></li>
<li><a
href='documentation.php/2GettingStartedwithMiniXML.html'>2
- Getting Started with Mini-XML</a></li>
href='documentation.php/GettingStartedwithMiniXML.html'>Getting
Started with Mini-XML</a></li>
<li><a
href='documentation.php/3MoreMiniXMLProgrammingTechniques.html'>3
- More Mini-XML Programming Techniques</a></li>
href='documentation.php/MoreMiniXMLProgrammingTechniques.html'>More
Mini-XML Programming Techniques</a></li>
<li><a
href='documentation.php/4UsingthemxmldocUtility.html'>4
- Using the mxmldoc Utility</a></li>
href='documentation.php/UsingthemxmldocUtility.html'>Using
the mxmldoc Utility</a></li>
<li><a
href='documentation.php/AGNULibraryGeneralPublicLicense.html'>A
- GNU Library General Public License</a></li>
href='documentation.php/MiniXMLLicense.html'>Mini-XML
License</a></li>
<li><a
href='documentation.php/BReleaseNotes.html'>B -
Release Notes</a></li>
href='documentation.php/ReleaseNotes.html'>Release
Notes</a></li>
<li><a
href='documentation.php/CLibraryReference.html'>C
- Library Reference</a></li>
href='documentation.php/LibraryReference.html'>Library
Reference</a></li>
</ul></li>
<li><a href='mxml.html'>HTML in one file (140k)</a></li>
<li><a href='mxml.pdf'>PDF (108 pages, 202k)</a></li>
<li><a href='mxml.ps.gz'>PostScript (108 pages, gzip'd,
61k)</a></li>
</ul>
<?php

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

@ -13,16 +13,16 @@ html_header();
print("<h1 align='center'>Mini-XML Home Page</h1>");
print("<p><table width='100%' height='100%' border='0' cellpadding='0' "
."cellspacing='0'>\n"
print("<table width='100%' style='height: 100%' border='0' cellpadding='0' "
."cellspacing='0' summary=''>\n"
."<tr><td valign='top' width='30%'>");
html_start_table(array("Quick Info"), "100%", "100%");
html_start_table(array("Quick Info"), "100%");
html_start_row();
print("<td>"
."<p align='center'>"
."Stable Release: <a href='software.php?2.2.2'>v2.2.2</a></p>"
."<small><p>Mini-XML is a small XML parsing library that you can use to "
."Stable Release: <a href='software.php?2.3'>v2.3</a></p>"
."<p>Mini-XML is a small XML parsing library that you can use to "
."read XML and XML-like data files in your application without "
."requiring large non-standard libraries. Mini-XML only requires "
."an ANSI C compatible compiler (GCC works, as do most vendors' "
@ -41,24 +41,11 @@ print("<td>"
."<li>Functions for creating, indexing, and managing trees of data.</li>\n"
."<li>\"Find\" and \"walk\" functions for easily locating and "
."navigating trees of data.</li>\n"
."</ul></small>\n"
."</ul>\n"
."</td>");
html_end_row();
html_end_table();
$poll = get_recent_poll();
if ($poll > 0)
{
html_start_table(array("Current Poll [&nbsp;<a href='poll.php'>"
."Show&nbsp;All</a>&nbsp;]"));
html_start_row();
print("<td>");
show_poll($poll);
print("</td>");
html_end_row();
html_end_table();
}
print("</td><td>&nbsp;&nbsp;&nbsp;&nbsp;</td>"
."<td valign='top' width='70%'>"
."<h2>Recent Articles [&nbsp;<a href='articles.php'>Show&nbsp;All</a>"
@ -95,7 +82,7 @@ else
db_free($result);
print("</td></tr>\n"
."</table></p>\n");
."</table>\n");
html_footer();

@ -87,16 +87,16 @@ html_header($title = "", // I - Additional document title
$html_title = "";
print(" <title>$html_title Mini-XML</title>\n"
." <meta http-equiv='Pragma' content='no-cache'/>\n"
." <meta http-equiv='Pragma' content='no-cache'>\n"
." <meta http-equiv='Content-Type' content='text/html; "
."charset=iso-8859-1'/>\n"
." <link rel='stylesheet' type='text/css' href='${path}style.css'/>\n"
."charset=iso-8859-1'>\n"
." <link rel='stylesheet' type='text/css' href='${path}style.css'>\n"
." <link rel='shortcut icon' href='${path}favicon.ico' "
."type='image/x-icon'/>\n");
."type='image/x-icon'>\n");
// If refresh URL is specified, add the META tag...
if ($refresh != "")
print(" <meta http-equiv='refresh' content='3; $refresh'/>\n");
print(" <meta http-equiv='refresh' content='3; $refresh'>\n");
// Search engine keywords...
reset($html_keywords);
@ -107,19 +107,19 @@ html_header($title = "", // I - Additional document title
while (list($key, $val) = each($html_keywords))
print(",$val");
print("'/>\n");
print("'>\n");
print("</head>\n"
."<body>\n");
// Standard navigation stuff...
print("<p><table width='100%' height='100%' border='0' cellspacing='0' "
."cellpadding='0'>\n"
."<tr class='header' height='40'>"
print("<table width='100%' style='height: 100%' border='0' cellspacing='0' "
."cellpadding='0' summary=''>\n"
."<tr class='header' style='height: 40'>"
."<td valign='top'><img src='${path}images/top-left.gif' width='15' "
."height='15' alt=''/></td>"
."<td><img src='${path}images/logo.jpg' width='32' height='32' "
."alt='Mini-XML' align='middle'/>&nbsp;&nbsp;&nbsp;</td>"
."height='15' alt=''></td>"
."<td><img src='${path}images/logo.gif' width='32' height='32' "
."alt='Mini-XML' align='middle'>&nbsp;&nbsp;&nbsp;</td>"
."<td width='100%'>[&nbsp;<a href='${path}index.php'>Home</a> | "
."<a href='${path}articles.php'>Articles</a> | "
."<a href='${path}str.php'>Bugs &amp; Features</a> | "
@ -136,13 +136,13 @@ html_header($title = "", // I - Additional document title
print("&nbsp;]</td>"
."<td valign='top'><img src='${path}images/top-right.gif' width='15' "
."height='15' alt=''/></td>"
."height='15' alt=''></td>"
."</tr>\n");
print("<tr class='page' height='100%'><td></td>"
print("<tr class='page' style='height: 100%'><td></td>"
."<td colspan='3' valign='top'>"
."<table width='100%' height='100%' border='0' cellpadding='5' "
."cellspacing='0'><tr><td valign='top'>");
."<table width='100%' style='height: 100%' border='0' cellpadding='5' "
."cellspacing='0' summary=''><tr><td valign='top'>");
}
@ -157,18 +157,18 @@ html_footer($path = "") // I - Relative path to root
print("<tr class='page'><td colspan='5'>&nbsp;</td></tr>\n");
print("<tr class='header'>"
."<td valign='bottom'><img src='${path}images/bottom-left.gif' "
."width='15' height='15' alt=''/></td>"
."<td colspan='3'><small> <br />"
."Copyright 2003-2005 by Michael Sweet. This library is free "
."width='15' height='15' alt=''></td>"
."<td colspan='3'><small> <br>"
."Copyright 2003-2007 by Michael Sweet. This library is free "
."software; you can redistribute it and/or modify it "
."under the terms of the GNU Library General Public "
."License as published by the Free Software Foundation; "
."either version 2 of the License, or (at your option) "
."any later version.<br />&nbsp;</small></td>"
."any later version.<br>&nbsp;</small></td>"
."<td valign='bottom'><img src='${path}images/bottom-right.gif' "
."width='15' height='15' alt=''/></td>"
."width='15' height='15' alt=''></td>"
."</tr>\n");
print("</table></p>\n");
print("</table>\n");
print("</body>\n"
."</html>\n");
}
@ -249,15 +249,15 @@ html_start_table($headings, // I - Array of heading strings
global $html_row, $html_cols;
print("<p><table");
print("<br><table");
if ($width != "")
print(" width='$width'");
if ($height != "")
print(" height='$height'");
print(" border='0' cellpadding='0' cellspacing='0'>"
print(" style='height: $height'");
print(" border='0' cellpadding='0' cellspacing='0' summary=''>"
."<tr class='header'><th align='left' valign='top'>"
."<img src='images/hdr-top-left.gif' width='16' height='16' "
."alt=''/></th>");
."alt=''></th>");
$html_row = 0;
$html_cols = count($headings);
@ -315,7 +315,7 @@ html_start_table($headings, // I - Array of heading strings
print("<th align='right' valign='top'>"
."<img src='images/hdr-top-right.gif' "
."width='16' height='16' alt=''/></th></tr>\n");
."width='16' height='16' alt=''></th></tr>\n");
}
@ -330,11 +330,11 @@ html_end_table()
print("<tr class='header'><th align='left' valign='bottom'>"
."<img src='images/hdr-bottom-left.gif' width='16' height='16' "
."alt=''/></th>"
."alt=''></th>"
."<th colspan='$html_cols'>&nbsp;</th>"
."<th align='right' valign='bottom'><img src='images/hdr-bottom-right.gif' "
."width='16' height='16' alt=''/></th></tr>\n"
."</table></p>\n");
."width='16' height='16' alt=''></th></tr>\n"
."</table>\n");
}
@ -365,7 +365,7 @@ html_end_row()
$html_row = 1 - $html_row;
print("</td><td>&nbsp;</td></tr>\n");
print("<td>&nbsp;</td></tr>\n");
}

Loading…
Cancel
Save