XPointer implementations at the University of Bologna

In this page you will find two descriptions of two different implementations of XPointer at the University of Bologna, each one part of a larger project.

The XLinkProxy

This is a proxy-based XLink server. It lets users create external linkbases for remote documents, a feature that has been described several times in the hypermedia literature. Besides the experience of Microcosm, which used proprietary information for external links, the idea of external linkbases has not had the chance yet to prove its usefulness, due to lack of decent standards for the application of external links to existing documents for which no write access is available.

External linkbases definitely require a way to refer to arbitrary fragments of content within web documents, even when their authors have specified no ID, or perhaps even no node, around it. XPointer gives us the syntax for this.

Our implementation of XPointer is in JScript (the proxy is ASP-based), and in an advanced stage of implementation. Only it is a partial implementation, for only the relevant subset of the language has been created and tested (the focus of the project being XLink).

You can find more information about the XPointer implementation of XLinkProxy here. The ASP package is downloadable here. The implementation work was done by Federico Folli for his master thesis at the University of Bologna.

The XSLT++ engine

This is an extended XSLT processor for the generation of meta-information out of a large base of homogeneous XML documents. In our intention, it should match not only nodes of the XML tree, but also arbitrary strings and patterns within the source document. We foresee several extensions, especially for XPointer-based expressions. For instance:

<xsl:template match="string-range(/doc/chapter/para,'W3C')">
<a href="http://www.w3.org">W3C</a>
</xsl:template>

All the extensions have evident and justified needs and provide features that cannot be implemented with the current XSLT language, although they are in fact useful, and their support can be easily integrated into an existing implementation with no dramatic change in the semantics or the internals of the transformation engine.

More informations about the XSLT++ processor can be found here. A test page is also available here. The main implementation work is being done by Claudio Tasso for his master thesis at the University of Bologna.