XML In Mozilla

Guha


This document provides an overview of the plans for XML in Mozilla.

Background

There are two broad categories of use for XML.
  1. Documents.
  2. Data. For data, RDF build on top of XML makes most sense. Tim BL has a really good document on this.
Look here for more information on this distinction. For more on RDF in Mozilla look here.

This figure shows the (planned) architecture for XML in Mozilla. The arrows represent C/Java/Javascript APIs.

Whats Happening with XML in Mozilla

Process

There is a "steering group" that is going to provide guidance on what to do and how to proceed with XML in Mozilla. This group includes Tim Bray, Jon Bosak, James Clark, Dan Connolly, Nisheeth Ranjan, Greg Kostello, Rick Gessner and Guha. Send email to Guha (guha@netscape.com).

XML Parser

Mozilla uses James Clark's expat parser (the same parser that is used in pearl). You will find it in ns/modules/xml/expat.

Any module within Mozilla can use the parser. The APIs for the parser can be found at expat/xmlparse/xmlparse.h.

ns/modules/xml/glue/ is the glue code that gets used in invoking the parser.

DOM Structure

ns/modules/xml/xmldom/ builds a persistent tree structure (the DOM structure) on top of this.

There is work going on to expose the APIs to the parser and to the DOM

  1. via javascript
  2. to any plugin

StyleSheets

The Mozilla source out there can currently display XML pages using CSS, XML-Link and elements from the html namespace. Jon Bosak, Bill Smith, Joe Alfonso and Jeff Suttor have helped set up some nice examples :
  1. TocView.xml
  2. disability.xml
There is a huge repository of xml documents at docs.sun.com. The goal is to make all of these nicely browsable using existing standards. Laurent Therond is working on this.

Coming soon : documentation on doing XML with CSS in Mozilla. We (some of the culprits named above) are working on an "Style Sheet Plugin" API. Depending on the type of style sheet being used (e.g., CSS, XSL, DSL...) different pieces of code get invoked.

Other

We are working on separating out the XML parser, Netlib, glue code and RDF module from the rest of Mozilla so that it can be used anywhere (e.g., in a server).

Some folks (Chris Hamlin, et. al.) are looking at doing MathML.

Some folks are organizing to do XML based vector graphics in Mozilla.

Standards

The Mozilla browser is not a shipping product. Some of the technologies we are using (such as XML Link and RDF) are still going through the standards process. We will track the standard (i.e., the implementation will change as the standard changes).