Rendering Arbitrary XML in SVG 1.2

This talk will describe in detail one of the key new features proposed for SVG 1.2, the ability to render arbitrary XML as SVG.

While it is already possible with SVG 1.0 and 1.1 to transform semantically-rich original XML in SVG for presentation purposes, there are major shortcomings with all approaches. Two common techniques are to use a batch transformation facility such as XSLT (running server-side or client-side) or to use client-side JavaScript triggered by an 'onload' event attribute. Developers have encountered problems with both approaches. The batch transformation approach run onces on a whole document basis, which is problematic if the original XML requires real-time changes, such as when user interaction or animation operations change the original XML or when new data arrives from the server. The batch approach also does not work if the application requires progressive rendering, in which case you'll want to perform transformation into SVG immediately as the data is received along the pipe instead of water for the whole document to get loaded.

The SVG developer community wants to leverage reusable component libraries so that developers can leverage each other's good work. However, when using multiple reusable components simultaneously (e.g., user interface widget libraries), there can be collisions between competing 'onload' event handlers and multiple components simulateously changing the DOM. Even if only a single re-usable component is being used, it often takes a high level of SVG developer expertise to integrate the re-usable component, usually by defining an the 'onload' event handler which putting some magic ECMAScript within that event handler.

Since SVG 1.0 became a Recommendation, the developers have submitted many SVG language enhancement requests which are potentially related to the problems listed above. The community has requested built-in UI widgets, XForms integration, a more power <use> capability , expression-based attribute values (e.g., width="{viewport.right-10px}"), and dynamic layout capabilities.

The SVG working group has concluded that many developer issues and several enhancement request can be addressed simulataneously by a relatively simple but powerful foundation-level enhancement to the SVG language, which is called Rendering Arbitrary XML, with the abbreviation "RAX". RAX not only addresses the whole architectural issue of how to achieve model-view-controller with SVG (the original XML is the model, the resulting SVG is the view), but also provides foundation mechanisms for addressing many enhancement requests from the SVG community (e.g., more powerful <use>, expression-based attribute values, etc).

The presentation will review the RAX features as described in the most recent SVG 1.2 specification and the various ways this important new feature can be used within SVG applications.