XML encoding styles, other than ConciseXML Encoding, suffer from both the traditional verbosity and ambiguity of XML because elements are used to both represent instances as well as fields of instances. The ConciseXML Encoding format is an alternative to the more common SOAP-encoding or Document-encoding styles. The major feature is that ConciseXML Encoding clearly distinguishes between instances and fields of instances. In addition, ConciseXML-style supports unkeyed arguments, values holding any object, and keys of any type.
<boat> name="Mr. X" color=<color> 20 10 20 </color> length=<meter> value=2.2 </meter> age=20 passengers=<vector> <person> "Mike" </person> </vector> </boat>
<boat> <name>Mr. X</name> <color> <red>20</red> <green>10</green> <blue>20</blue> </color> <length units="meter">2.2</length> <age>20</age> <passengers> <person>Mike</person> </passengers> </boat>
Most XML parsers either use a document-object model or an event model such as SAX. A program then needs to be written to translate the XML into the object model of an underlying language. Because the ConciseXML-style unambiguously maps to a precise data model, that translation step becomes unnecessary. The XML API to a ConciseXML-style becomes much "cleaner" because it has the same data model as a traditional data or knowledge representation. There is no attributes or elements -- just fields of objects. The result will be dramatic and ConciseXML will usher in an era of clean XML.