AXL: Another XML Library implementation (XML 1.0 standard)
0.4.6.b2820.g2825
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.
Main objectives for this library is to provide:
-
A clean implementation, that only includes, those elements defined, and only those, inside the XML 1.0 standard, as defined in the third edition.
-
To be a fast and memory efficient implementation. If you still think that XML is slow and memory inefficient, you didn't taste Axl Library. You'll find report about its performance and memory usage at: http://xml.aspl.es/doc.html
-
Ensure that the library is implemented using abstract data types, commonly known as opaque types, to avoid exposing details to the user space code that is consuming the API. This will allow us to improve the library without breaking existing code and, the most important, to not be limited by details already exposed. In fact, this design have being already used to improve the library performance greatly. See reports founds at: http://xml.aspl.es/doc.html.
-
To be small and efficient, ensuring on every stable release that the library do not leak, not only while using the library in a proper manner but also when errors were found. This point is really important for us because Af-Arch server applications needs to be working for a long time.
-
Have a modular design that allows to use only those elements required by your software. At this moment it is provided a base library (with implements XML 1.0) and an optional library that provides additional features to support XML Namespaces 1.0.
-
The other issue is that the Af-Arch client platform should be easily embedded, so, a small footprint is a requirement. Currently LibAxl (89K) and LibAxl-Ns (9K)
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://xml.aspl.es/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 <!ATTLIST>, <!ENTITY> and <!ELEMENT> 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 (axlItem) inside the document (axlDoc) root node (axlNode), and CHILDREN API: an API that allows to traverse the node using as reference only the nodes (axlNode) inside the document (axlDoc).
- XML 1.0 Namespaces full support, through the additional component (libaxl-ns), allowing to produce xml applications that are XML Namespace aware.
The library documentation is composed into two pieces. The Axl manual and the API documentation.
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.