Chapter 1: Introduction

XML Virgule Language is an XML data-driven scripting language. Conceptually similar to Lisp and Scheme, at its simplest it is just an HTML parser. Anything that does not have a plug-in module to activate on a tagname in the input is just passed straight to the output.

xvl, a command-line implementation of the script language, has dynamically loadable modules in c-code that are activated when a tagname in the input is reached. This effectively turns data into code, with the tag's properties and child nodes as input.

Some of the tags are very simple, and are implemented in tens of lines of c code. Others activate file or socket I/O operations that can be nested recursively, providing the means to write XML data-driven client and server applications [I still can't get used to not having to recompile].

This documentation is therefore written as a guide to this fledgling scripting language, and also as an aid to its designer to understand what is really going on :)

1.1: Example Test Tag

The module can decide what to do with its input. For example, the simple <test:tag/> in HOWTO-add-new-tags will output a Header "I am a test tag!" at any point in the data stream where <test:tag/> is placed. If the tag has a property testprop, for example <test:tag testprop="brown cows are fun!"/> then it will place the string of the testprop property in the output as well. Additionally, if there is not a property named stop, with any string, then any child nodes of <test:tag/> will also be processed.