VSPX is an XML vocabulary for server generated HTML and XHTML
pages that may or may not be bound to native or third-party data
sources. VSPX is a framework for building and deploying dynamic web
content atop Virtuoso. VSPX offers a widget set and event model
which is similar to that of GUI tool kits, providing the developer
with much automation for common web development tasks. Many
controls are tightly integrated with the Virtuoso database,
providing seamless data binding to local or remote relational and
XML data. Server side scripting in VSPX is performed in
Virtuoso/PL. The VSPX source code consists of HTML or XML with
interspersed VSPX specific XML elements which describe the UI
control hierarchy of the page.
VSPX covers the following areas:
Rich set of controls, covering all basic HTML plus complex
composite controls like data grids and tree browsers.
Session management - Transparent session and session state
handling using cookies, URL poisoning or digest
Form entry validation server and client side.
Single and multi-row controls for viewing and directly updating
SQL tables, including scrolling through long result sets.
Repeating and conditional instantiation of UI elements based on
run time choices.
Event model for HTTP request handling, providing distinct
phases for creating the controls, retrieving data, processing
posted data, preserving state and rendering for a user agent.
Object oriented architecture, allowing easy definition of
subclasses of existing controls for new functionality. It suffices
to implement a new SQL class with a few predefined methods and to
implement an XSLT rule for generating the code based on the
external XML syntax for the new control.
Easy automatic generation of VSPX pages. The pages being XML,
it is simple to automate generating pages based on other data, such
as automatically making table maintenance pages based on a SQL
The VSPX development cycle consists of editing .vspx resources
in the file system or Virtuoso DAV. The editing can take place
using a regular text editor or a supporting HTML editor.