Introduction to ConciseXMLConciseXML is an open, language-independent markup syntax compatible with XML 1.0. Concise XML is designed to handle different types of data which includes non-hierarchial data, program logic, document markup, and binary data. As ConciseXML is both concise and precise, it eliminates the two major limitations of XML and extending the use of XML. Most of the developers avoid XML in many circumstances due to its verbosity. Even those who usually need help with capstone project can easily overcome the difficulties and learn something new from it.
ConciseXML is as concise at representing logic as the semi-colon delimited syntax of C, C++, Java, and C#. In addition, ConciseXML is as concise as the Comma Separated Value (CSV) syntax for data. ConciseXML has no ambiguity of meaning. There is only one way to represent parts/fields of an object. Whereas in XML, there can be many syntactic forms for the identical meaning or semantics.
ConciseXML is compatible with XML, but does not conform to XML or SGML. ConciseXML is a superset of XML. This means that the only extensions are the ones that remove the XML constraints and does not change the fundamental features of XML. ConciseXML is capable enough of maintaining both forward-compatibility as well as backward-compatibility with XML. Any XML document is also a valid ConciseXML document. You can represent any ConciseXML document in XML without any loss of information. There is a corresponding form in XML for each ConciseXML extension to XML. A ConciseXML expression or document can mix and match ConciseXML and XML syntax at all levels. ConciseXML is mistaken to be not compatible with XML, as ConciseXML uses a different syntax and not the XML syntax. The syntax of ConciseXML eliminates many constraints from SGML's document-centric perspective. However, ConciseXML is compatible with XML, as any XML document is also a valid ConciseXML expression.
ConciseXML makes XML more flexible by eliminating many of the unnecessary constraints of XML. Some of the extensions of ConciseXML include attribute values can be any expression, attribute keys can be any object, tagname of an element can be any expression, attribute keys are optional, closing tagname is optional, and top-level can be any expression, not just an element. Additional extensions of ConciseXML include multiple top-level expressions, attribute type, and paths. Now let us see each of the extensions of ConciseXML briefly in the following sections.
XML requires that all the values assigned to the attributes be quoted. As a result, all values are only of type string. Elements are often used to work around this limitation, but that presents another set of problems. In XML, an attribute key cannot start with a digit and cannot contain angle-brackets. As a result, the attribute keys are only of type string. ConciseXML makes use of a call syntax to easily represent array-like fields with integer keys as well as any object. ConciseXML allows you to have any expression as the tagname of an element. The tagname may be a path or a call/tag.
In the Comma Separated Value (CSV) syntax and in all the other major programming languages, field or argument values are given by position and not by keyword. ConciseXML allows closing tagname to be optional, which removes the unnecessary clutter. But when ConciseXML is used as the syntax for dynamic languages, the tagname may not be known until runtime, and therefore the closing tagname must be optional. Concise XML allows top-level to be any expression and not just an element, as it is extremely difficult to create a document whose value is a simple type such as a string, number, or boolean value in XML 1.0.
The CSV file format and most of the common programming languages allow multiple top level expressions. XML 1.0 only allows a single root element in a file, while ConciseXML permits any number of expressions at the top level. ConciseXML allows the attributes to have an optional type that is delimited by an equal sign, in addition to a key and a value. You can join two expressions using dots. Paths are frequently used in programming language for expressing the traversal of a data structure or control flow between processing stages. These are some of the extensions of ConciseXML.
A ConciseXML expression can be a simple value such as a number, a string, true, false, and null, a complex value, a path which is a sequence of other expressions separated by dots, a name that references another expression. The standard file extension for the ConciseXML syntax is .cxs. A lowercase file extension is preferred over uppercase. The mime-type for ConciseXML is text/cxs. Programs that store file data in ConciseXML format prefer to use a file extension that relates to the application.
ConciseXML Reduced is a minimal subset of ConciseXML that is very simple to use. The ConciseXML Reduced loses full forward compatibility with XML. ConciseXML Reduced enables you to develop very small and simple parsers. A complete ConciseXML Reduced parser can be 1000 times smaller than an XML parser. The syntactic forms that are supported in XML 1.0, but not supported in ConciseXML Reduced include Namespaces: <foo:bar .../>, XML tag: <? ... ?>, Processing instructions: <! ... >, in-line DTD, processing instructions (PI), special comment tag: <!-- ... -->, binary data, non-character XML entities, and quotes in the content area of an element.
ConciseXML encoding is a concise and precise way to represent data using the XML 1.0 syntax. The common XML encoding styles suffer from both the traditional verbosity and ambiguity of XML, as the elements are used to represent both 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 main advantage of ConciseXML encoding is that it clearly distinguishes between the instances and the fields of instances. Another advantage of ConciseXML encoding is that it supports unkeyed arguments, values holding any object, and keys of any type.
Most of the common XML parsers either use a document-object model (DOM) or an event model such as Simple API for XML (SAX). A program then needs to be written to translate the XML into the object model of an underlying language. The translation step is avoided totally, as the ConciseXML-style unambiguously maps to a precise data model. 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 are just fields of objects and no attributes or elements.