How Compliant is CMarkup with XML?
CMarkup processes parses and creates well-formed XML quickly, reliably, and with a small footprint. The parts of XML that it does not support are the parts that are not needed for datainterchange via elements. Many XML interchanges are undertaken in situations where the producer and consumer of the XML documents are well-known (often with the same developer at both ends of the conversation). In those cases where the developer might have used a delimited format instead, CMarkup allows him/her to use XML painlessly. So CMarkup is bringing XML to software that might not otherwise have used XML.
CMarkup does not implement the entire XML specification, and is not put through XML conformance testing. It does not perform validation or verify that an XML document is well-formed. These capabilities add complexity and overhead not desired in CMarkup.
This is a good observation. CMarkup does no verification or processing of the tag name, so you can create an ill-formed document if you pass a bad tag name. This requires the developer to discover bad tag names during development. Obviously, if a tag name is entered by a user, process it to remove illegal characters before creating an element with it.
If your XML file is created by hand, you can use Internet Explorer by hand or MSXML programmatically to make sure it is valid. CMarkup does not validate against DTD or Schema when it loads a file. It ignores the DTD node. See also The Versatile Way to Program XML.
In our projects we check elements and values as necessary during processing of the XML, and have found that validation is not a necessary part of XML applications. Our approach to XML is much less onerous than anything else you will find out there. CMarkup coding examples in C++ are on several pages of the online documentation and even more in the test routine of the test dialog source available in the evaluation download.