o:XML is a markup language, but it is also a fully featured object-oriented programming language. Its programs as well as output consists of pure XML. It fills the gap of providing business logic in the data-to-presentation chain that forms the basis of todays internet services. In contrast to traditional development tools, o:XML is powerful and easy to use while fully and naturally integrated in a natively-XML environment.
To encourage independent implementations, o:XML has an open specification that aims to define every aspect of the language.
Unlike most other programming languages, o:XML can be generated from custom-built or generic tools such as UML editors. Programs can also be hand-edited or authored in a schema-aware XML editor that understands the syntax and structure of the language, which not only saves you a lot of typing but also does syntax verification for you.
An o:XML program can be compiled and executed by an interpreter such as the ObjectBox, or it can be transformed into another language, or even into executable form. The output of an o:XML program is also XML, which means that it can be further transformed to HTML, SVG, RSS or whatever output is required. To read more about o:XML workflows have a look here.
Technologies using traditional languages to achieve the programming step in an XML application have to rely on proprietary interfaces, leaving the developer with the difficult task of leveraging the power of XML with tools not suited for the purpose. Take the popular example of development in Java where already the range of API's, from DOM and SAX to more exotic varieties - dom4j, JDOM, eXML - tells us that reading and generating XML using an XML unaware language can be quite hard.
The predominant alternative to writing hard-and-heavy Java or C++/C# involves server-side scripting - embedding code in markup pages to provide dynamic content (eg ASP/JSP). There are two major drawbacks to this approach when writing XML applications - firstly the page that constitutes the application is neither code nor markup, it's a hybrid of the two. Even if there is separation of data/logic and presentation by means of a transform layer, there is still the same interfacing problem as when using Java or any other programming language without inherent XML support. Second, the scripting languages used generally give little by means of object-oriented language support. Scripting still works well if the data handling required can be achieved by a couple of database or file system queries, but it doesn't provide the abstraction mechanisms or language consistency needed to model real business processes.
One of the potentially most exciting uses of o:XML is in a heterogenous enterprise application environment where web service components are tied together by SOAP interfaces. Here the service registry takes a key role, and writing components in o:XML allows for rapid development of maintainable, scalable and resilient code.
o:XML marries the simplicity of a dynamically typed procedural language with the full power of object-oriented development, making it the perfect tool for XML developers of all levels.