Version 2.2

Historical note: OXF 2.2 was released on November 17, 2003

Struts message access

The struts:message() function has a new parameters order. The last argument, bundle, moved to the second position to be more user-friendly. Only the first argument is mandatory.

  • Former Syntax: struts:message('key', 'arg0', 'arg1', 'arg2', 'arg3', 'bundle')
  • New Syntax: struts:message('key', 'bundle', 'arg0', 'arg1', 'arg2', 'arg3', 'arg4')
  • Furthermore, the Struts functions are now supported in Saxon 6, Saxon 7 and XSLTC in addition to Xalan.

    Tamino support

    OXF now supports accessing Software AG's Tamino XML database. Five new processors have been added to query, insert, delete and update XML documents in Tamino. See XML Databases section for more details.

    Web application controller

    • XSLT 2.0 ? The Web application controller now picks a different engine to execute XSLT stylesheets depending on the version of the stylesheet. For XSLT 1.0 stylesheets, it uses oxf/processor/xslt-1.0 (by default Xalan) and for XSLT 2.0 stylesheets it uses oxf/processor/xslt-2.0 (by default Saxon 7). The defaults can be changed in the processors.xml file. Note that the XSLT 2.0 simplified stylesheets modules are also supported.
    • Setting resources MIME type ? With the new optional mime-type attribute on the files element, you can set the MIME type sent to the browser. For instance, with <files path-info="*.java" mime-type="text/plain"/> the Java files will be served with the plain text MIME type, instead of the default text/x-java MIME type.

    HTTP serializers

    The HTTP Serializers can add custom headers to the HTTP response.

    LDAP processor

    The LDAP processor now supports the SSL protocol.

    Logging system initialization

    You can now skip the Log4J initialization sequence if necessary by omitting the oxf.servlet.log4j property.

    New OXF examples

    • The Java processor example shows how to create a custom processor in Java and use it in a pipeline with the Java processor.
    • Create Your Own RSS Feeds retrieves a Web page with the resource generator, selects part of the document with an XPath expression, and creates an RSS feed from the extracted data.
    • The Google Spell Checker spell-checks a paragraph of text entered in a form by searching it on Google. The queries are sent to Google with the URL generator.
    • The Tamino XML Server example provides a sandbox to experiment with the 5 new processors provided in this version to access Software AG's Tamino XML database.
    • The Report in HTML, PDF, and Excel example illustrates how to generate different formats (here an HTML page, a PDF document, and an Excel spreadsheet) from the same XML data.

    Resource server

    The format of the mime-types input has changed: the mapping from a file to a MIME type used to be based only on the file extension; it is now based on a pattern, which allows for more flexibility. Note that using <files> elements in the Web application controller configuration is in general preferred over directly calling the resource server processor.


    • When the select expression on a <xu:append> returns a node set, the append operation is performed on each node of the node set.
    • XUpdate error messages now point to the file, line number and column number involved in the error.
    • Relatives URLs in the doc() and document() functions are now supported. When using a relative URL, it is interpreted as relative to the XUpdate program location.
    • The position() function now correctly returns the context position when used in a <xu:for-each>.

    URL generator

    You can now specify the HTTP headers sent to the server when retrieving a document with the URL Generator.