Once iXml is running, and has loaded it's internal ROOT.XML mappings xml file, you are able to create, copy, move or alter existing or newly defined at runtime datatypes, and add functionality to control or automate some feature or function of the datatypes stored data.
The whole of the Object/Class hierarchy structure and all associated methods and datatypes and data that is accessible to the user, is all bundled together inside of a single Xml node. The language structure that the user is presented with when iXml starts up comes from root.xml. When started from the command line it is loaded locally, and when it is an applet it is loaded remotely. For Servlets make it locally accesible to the ServletLoader.
The whole of the native code running behind this Xml Interpretter is very small, based solely around interpret(this,string,args[]) and runnative(method,args[]) and has been implemented sucessfully in both Java 1.0 and Ansi C across many jvm's and c compilers for which I have compiled for linux, windows, beos, macos and palmos...
The Native code is what does the work!.
So far, Base contains all of the base functionality required to bootstrap iXml, plus handy generic utility functions. Io contains Input/Output functions for use within iXml, and connects to Files, Directories, Tcp, Udp, Processes and Consoles! *enables distributedness*. Gui contains some basic gui/awt functions that enable you to create graphical frameworks to manually control your Xml.
There also exists numerous predefined Native types, such as the Timer, that enable complete control through the iXml interface.
iXml is very object oriented, but right about now I should tell you that iXml is also not fixed in any way. With a few modifications to the code, iXml becomes unbound from it's fixed parsing delimeters and you can take it to a whole new level! The functions are dynamically MAPPED to native functions, or to other dynamically declared functions, and you may declare these functions however you like so as to still maintain a minimum level of use!
The DataTypes and templates you declare can extend from others, so this is inheritence, and function calling also works through a fall UP mechanism, that chains back until no super DataType can be found with your requested function. You can define functions that are called by YOUR dynamically declared/defined Datatypes.
There is a very simple interface to EXTEND iXml with your own Native function libraries, or classes in Java!. It can therefore control, or represent anything you need it to.
iXml is also event driven, in that when Native objects do something, or are interacted with externally, a script will be fired for you, that enables you to keep the App alive!.
All nodes inherit from iXml, and this base type has a few basic functions associated with it that you can run. New functions can be added to Types dynamically at run time.