/* * @internal * * LibAxl: Another XML library * Copyright (C) 2013 Advanced Software Production Line, S.L. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This program 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, write to the Free * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA * * You may find a copy of the license under this software is released * at COPYING file. This is LGPL software: you are welcome to * develop proprietary applications using this library without any * royalty or fee but returning back any change, improvement or * addition in the form of source code, project image, documentation * patches, etc. * * For commercial support on build XML enabled solutions contact us: * * Postal address: * Advanced Software Production Line, S.L. * Edificio Alius A, Oficina 102, * C/ Antonio Suarez Nº 10, * Alcalá de Henares 28802 Madrid * Spain * * Email address: * info@aspl.es - http://www.aspl.es/xml */ #include /** * \mainpage AXL: Another XML Library implementation (XML 1.0 standard) * * \section intro Introduction * * AXL is a library which aims to implement the XML 1.0 standard, as * defined at the XML 1.0 third edition * recommendation found at: http://www.w3.org/TR/REC-xml/. * * It was implemented to support XML requirements inside projects * developed by Advanced Software * Production Line, S.L., especially Af-Arch and Vortex Library, which are already * using the library successfully in production environments. * * Some features this library has are: * * * * \section features_and_status What is the status of the library * * Currently the library is stable and it is known to work under * GNU/Linux and Windows with a really good performance. See reports found at http://www.aspl.es/xml/doc.html to know more about this. * * The library already covers the 95% of common requires that XML * development needs. Among others, it support: * * - XML tree parsing, from memory and files, allowing a great level * of detail while accessing to the data (comments, process * instructions, xml nodes, and content). * * - Mostly completed DTD validation support, including , * and elements. Remains to implement NOTATION declarations * and full entity replacement. * * - Two modes to inspect the xml documents at the same time, * MIXED API: an API to traverse the document allowing access * to all items found (\ref axlItem) inside the document (\ref * axlDoc) root node (\ref axlNode), and CHILDREN API: an API * that allows to traverse the node using as reference only the nodes * (\ref axlNode) inside the document (\ref axlDoc). * * - XML 1.0 * Namespaces full support, through the additional component * (libaxl-ns), allowing to produce xml applications that are * XML Namespace aware. * * - Support for extended encodings (libaxl-babel), beyond default encoding utf-8. * * \section documentation Library Documentation * * The library documentation is composed into two pieces. The Axl * manual and the API documentation. * * - \ref axl_install * - \ref axl_manual * - \ref axl_api * - \ref axl_knife_manual * * \section contact_us Contact us * * If you find something not properly documented, or some question is * not answered on this documentation, check the mailing list. * * You can also contact us if you have patches, improvements or * suggestions at the mailing list. */ /** * \page axl_manual XML development with Axl Library * * \section Manual Index * * On this manual you'll find the following section: * * Section 1: Basic elements to understand XML and Axl
* * - \ref intro * - \ref concepts * - \ref two_apis * * Section 2: Manipulating and producing XML documents
* * - \ref parsing * - \ref iterating * - \ref modifying * - \ref dumping_functions * * Section 3: Doing validation on your documents
* * - \ref validation * - \ref xml_namespace * - \ref using_axl_babel * * Section 4: Advanced topics
* * - \ref reducing_foot_print * * Apendix
* * - \ref futher * * * \section intro Introduction: XML development * * XML 1.0 definition allows to build documents that could be used to * represents textual information, remote procedure invocations or * dynamic user interfaces. Its definition is based on very simple * principles, that allows to developers to compose them to create * bigger abstractions that are roughly on every place in modern * computer software design. * * It is a "quite" human readable format, so you will find that is not * the best format if you are looking for space efficiency. What XML * 1.0 provides you on the other hand is the ability to quickly * prototype and produce working formats that encapsulate your data, * and, as your system evolves, XML 1.0 will do it with you. * * Among other things, XML 1.0 provides you ways to validate your * documents to ensure your code will read XML documents in the format * expected, reducing the time and development cost due to additional * checkings required. * * Before continuing, we will explain some concepts that are required * to understand XML 1.0 and why the Axl API was built this way. * * \section concepts Some concepts before starting to use Axl Library * * Here is a simple example of a XML 1.0 document: *
* \code * * * * * 10 * * * * \endcode *
* * Previous XML document represents an structure with a top level * node, called complex, that has one single child called * data which in turn have two childs. The first one is the * child called simple that have content and other one, called * empty, which is a node usually called an empty xml node. * * The XML representation for previous document is the following: * \image html image01.png "Document representation" * * Several issues must be considered while interpreting previous * diagram and how Axl library parse and expose those elements through * the API to the client application: *