On 05/10/2013 01:24 AM, Roger Martin wrote:
This is a fun topic. How should c++ play 'catchup' to other languages on xml handling.
I agree that the use cases and requirements could be more clear.
What applications will develop from such an XML API? Xml editors and xml creators/modifiers? Data flow and communications between apps, web services? What can be leveraged in c++ to do something new/faster with xml? If
I believe Stefan's ultimate goal is the C++ standardization of XML APIs. This is similiar to how std::thread provides a threading API that can be implemented with, say, pthreads (ok, maybe threading is a bad example because it did require substantial changes to the C++ standard.) You can think of Boost.Xml as providing the primitives needed to parse (and generate) an XML document. The more advanced features such as XML Schema validation, XSLT transforms, and XQuery are currently out of scope, but they should be easier to build on top of the primitives.
Binding is an important area for me. xmlbeanscxx which is based on
It seems to me that there are three levels of bindings: 1. Schema-less binding where the structure of the XML document is handcoded into the application. This can be handled by Boost.Serialization. 2. Compile-time schema binding where a schema is used to generate the binding code. The xmlbeanscxx and xplus-xsd2cpp project that you refer to are examples if this kind of binding. 3. Run-time schema binding where new schemas can be loaded on-the-fly. Something like Microsoft InfoPath springs to mind.
Haven't tried http://vtd-xml.sourceforge.net/ for a while because its license doesn't work for my company. With custom code I've been doing something similar for simply reading data from xml documents.
With the right parsing primitive (an XML lexer), non-extracting parsing would be quite simple.