Rationale
From wiki
This section lists some design decisions that have been made during the development of the library.
The output streams do not accept a grammar during construction for validation
- validation can only occur once the document is complete
- failed validation usually throws an exception
- the xml::xofstream uses RAII to flush the document to file in its destructor
- a destructor must not throw
- anyway it's simple enough to re-open the output stream with an input stream for validation afterwards
Document type definitions (DTD) cannot be specified with an external grammar
- see this thread for details
In an output stream the attributes of an element are sorted alphabetically and not in their serialization order
- there is no control over the order of attributes in Apache Xerces, see this thread for a (short) explanation