XML lends itself to customisation and personalisation particularly well. XML documents can be translated into HTML and many other formats, such as PDF, with XSL style sheets in a process called XSL Transformation (XSLT). In this way, XML presents a very good solution for creating and managing content-heavy Web sites efficiently and simply. Unlike HTML, it also separates Web document generation into content generation and formatting, where each step is exclusive.
The open source community has led the charge for a working implementation of an XML/XSLT engine. The most developed result is XML Apache.
The XML Apache project is run by the Apache Software Foundation (http://xml.apache.org). The Apache team, along with Lotus AlphaWorks, has produced an Apache Web server plug-in designed to serve, transform and manage XML documents. The project is divided into the following three sections: Xerces for XML parsing; Xalan for XML Transformations; and Cocoon for content management and HTML publishing.
Xerces is the XML Apache parser. This component reads XML files and breaks them down into elements so that they can be translated to HTML. Xerces also provides a C++ and perl interface, allowing programmers to build on the XML Apache design, or use it in an unrelated project.
Xalan is the XSL Transformation processor. This is the component of the XML Apache project responsible for translating XML documents into HTML Web documents. Xalan was donated "to the project by Lotus AlphaWorks.
Cocoon is where everything comes together. It is the XML publishing processor and is responsible for pushing the final HTML document out onto the Web. It is also responsible for document management and caching. One of the main limitations of XML Apache, however, is its Java-based design. All components of XML Apache, plus the Apache JServ Servlet engine which runs Cocoon, are written in Java. Moreover, all dynamic content generators (such as CGI scripts) must be written in Java as well. Currently, even the best Java run-time compilers require a large amount of memory and CPU to run effectively.
The XML Apache team is aware of these shortcomings and aims to resolve them in Cocoon 2, which is already under development.
Regardless of flaws, XML Apache is an extremely functional example of an XML publishing engine and should be of interest to anyone looking into XML technology.