| <html> |
| <head> |
| <title>Mini-XML Programmers Manual, Version 2.8</title> |
| <meta name="copyright" content="Copyright 2003-2014"> |
| <meta name="author" content="Michael R. Sweet"> |
| <meta name="keywords" content="XML, C, C++, library"> |
| </head> |
| <body> |
| |
| <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.8, 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> |
| |
| <blockquote><em>It's bad enough that we require libxml2, but rolling |
| our own XML parser is a bit more than we can handle.</em></blockquote> |
| |
| <p>I then replied with:</p> |
| |
| <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 |
| code: 696. Robert promptly integrated Mini-XML into Gutenprint |
| and removed libxml2.</p> |
| |
| <p>Thanks to lots of feedback and support from various |
| developers, Mini-XML has evolved since then to provide a more |
| complete XML implementation and now stands at a whopping 3,792 |
| lines of code, compared to 140,410 lines of code for libxml2 |
| version 2.9.1.</p> |
| |
| <p>Aside from Gutenprint, Mini-XML is used for the |
| following projects/software applications:</p> |
| |
| <ul> |
| |
| <li><a href="https://www.cups.org/">CUPS</a></li> |
| |
| <li><a |
| href="http://zynaddsubfx.sourceforge.net">ZynAddSubFX</a></li> |
| |
| </ul> |
| |
| <p>Please file a bug on msweet.org if you would like your 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 1in --> |
| <h2>Organization of This Document</h2> |
| |
| <p>This manual is organized into the following chapters and |
| appendices:</p> |
| |
| <ul> |
| |
| <li>Chapter 1, "<a href="#INSTALL">Building, |
| Installing, and Packaging Mini-XML</a>", provides |
| compilation, installation, and packaging instructions for |
| Mini-XML.</li> |
| |
| <li>Chapter 2, "<a href="#BASICS">Getting |
| Started with Mini-XML</a>", shows how to use the |
| Mini-XML library in your programs.</li> |
| |
| <li>Chapter 3, "<a href="#ADVANCED">More |
| Mini-XML Programming Techniques</a>", shows additional |
| ways to use the Mini-XML library.</li> |
| |
| <li>Chapter 4, "<a href="#MXMLDOC">Using the |
| mxmldoc Utility</a>", describes how to use the |
| <tt>mxmldoc(1)</tt> program to generate software |
| documentation.</li> |
| |
| <li>Appendix A, "<a href="#LICENSE">Mini-XML License</a>", |
| provides the terms and conditions for using and distributing |
| Mini-XML.</li> |
| |
| <li>Appendix B, "<a href="#RELNOTES">Release Notes</a>", |
| lists the changes in each release of Mini-XML.</li> |
| |
| <li>Appendix C, "<a href="#REFERENCE">Library |
| 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 --> |
| <h2>Notation Conventions</h2> |
| |
| <p>Various font and syntax conventions are used in this guide. |
| Examples and their meanings and uses are explained below:</p> |
| |
| <dl> |
| |
| <dt><code>mxmldoc</code><br> |
| <code>mxmldoc(1)</code></dt> |
| |
| <dd>The names of commands; the first mention of a command |
| or function in a chapter is followed by a manual page |
| section number.<br><br></dd> |
| |
| <dt><var>/var</var><br> |
| <var>/etc/hosts</var></dt> |
| |
| <dd>File and directory names.<br><br></dd> |
| |
| <dt><tt>Request ID is Printer-123</tt></dt> |
| |
| <dd>Screen output.<br><br></dd> |
| |
| <dt><kbd>lp -d printer filename ENTER</kbd></dt> |
| |
| <dd>Literal user input; special keys like |
| <kbd>ENTER</kbd> are in ALL CAPS.<br><br></dd> |
| |
| <dt>12.3</dt> |
| |
| <dd>Numbers in the text are written using the period (.) |
| to indicate the decimal point.<br><br></dd> |
| |
| </dl> |
| |
| <!-- NEED 10 --> |
| <h2>Abbreviations</h2> |
| |
| <p>The following abbreviations are used throughout this |
| manual:</p> |
| |
| <dl> |
| |
| <dt>Gb</dt> |
| <dd>Gigabytes, or 1073741824 bytes<br><br></dd> |
| |
| <dt>kb</dt> |
| <dd>Kilobytes, or 1024 bytes<br><br></dd> |
| |
| <dt>Mb</dt> |
| <dd>Megabytes, or 1048576 bytes<br><br></dd> |
| |
| <dt>UTF-8, UTF-16</dt> |
| <dd>Unicode Transformation Format, 8-bit or 16-bit<br><br></dd> |
| |
| <dt>W3C</dt> |
| <dd>World Wide Web Consortium<br><br></dd> |
| |
| <dt>XML</dt> |
| <dd>Extensible Markup Language<br><br></dd> |
| |
| </dl> |
| |
| <!-- NEED 12 --> |
| <h2>Other References</h2> |
| |
| <dl> |
| |
| <dt>The Unicode Standard, Version 4.0, Addison-Wesley, |
| ISBN 0-321-18578-1</dt> |
| |
| <dd>The definition of the Unicode character set which is |
| used for XML.<br><br></dd> |
| |
| <dt><a |
| href="http://www.w3.org/TR/2004/REC-xml-20040204/">Extensible |
| Markup Language (XML) 1.0 (Third Edition)</a></dt> |
| |
| <dd>The XML specification from the World Wide Web |
| Consortium (W3C)<br><br></dd> |
| |
| </dl> |
| |
| <!-- NEED 6 --> |
| <h2>Legal Stuff</h2> |
| |
| <p>The Mini-XML library is copyright 2003-2014 by Michael R Sweet. License terms |
| are described in <a href="#LICENSE">Appendix A - Mini-XML License</a>.</p> |
| |
| </body> |
| </html> |