"The nice thing about standards is that you have so many to choose from," famously quipped computer science professor Andrew Tanenbaum. Fast forward to 2005 and the situation has become even more complex, especially in the landscape of overlapping and conflicting Web and XML "standards." If you want to create content for mobile devices, you have an especially dizzying array of these standards to choose from. The World Wide Web Consortium (W3C) has developed, and promotes, XHTML Basic as the solution for mobile browsing. The Open Mobile Alliance (OMA) has developed XHTML Mobile Profile (XHTML-MP) as its solution for mobile browsing. XHTML builds on XHTML Basic but adds features required for mobile handsets. NTT DoCoMo's i-mode system uses C-HTML (Compact HTML). Some devices are starting to support W3C's Scalable Vector Graphics format for scalable graphics and animation. Some support Macromedia's (Adobe's?) Flash format.
Even if you do choose a set of formats, how do you best combine these formats, which were often created by disparate groups of people with scant regard for the integration of their standard with other standards and formats? What's a Web developer to do?
W3C, in close coordination with the OMA, is quietly working on a new technology to address this situation and make the standards landscape more navigable for those who wish to create interactive content for mobile browsing.
Last Autumn, W3C kicked off a new effort, the Compound Document Formats (CDF) working group. This group has been running for the past year to develop rules for combining different XML formats, particularly in the user interface domain, and specifically focusing on mobile browsing. Why mobile browsing? It's an area that badly needs this kind of triage.
The second part of the draft Compound Document recommendation document specifies the Web Interaction Compound Document (WICD – pronounced "wicked") profile. This so-called profile is essentially a set of rules for the reliable combination XHTML and SVG content in a mobile browsing context. What are the issues here?
One of the key issues inherent in developing for mobile browsers these days is that the actual user experience of the same page will often differ between different browsers on different handsets. This problem should be familiar to anyone who's tried to use different desktop browsers, say Opera, Firefox and Internet Explorer, on the same content. For example, your bank's web site may look and work fine on IE but could seem to have strange formatting or at worst-case be completely non-functional on Firefox. This is often due to the different ways in which the browser vendor has implemented the Web standards. Web sites are written according to how these browsers implement the standards, not according to the standard itself, because content and service providers on the Web have to provide a functional user experience (they can't afford to wait for the browser vendor to fix their bugs) and they often only have the resources to test their Web site on a limited number of browsers (if only .05% of your customer base are using one browser, you're not likely to put time and money into testing your service on any other browsers).
The thing is: if you as a user, on a desktop PC, find that you can't use a web site, you at least have a fighting chance: you can ostensibly download another browser and try it in that one.
Mobile web users largely do not have this luxury. They are constrained to use the single version of the single Web browser that was installed in their phone at the factory. Their only upgrade option is to buy a new phone, and even then, most mobile phone users are not aware of their browser vendor. And unlike Web browsing on the PC, there are numerous vendors in the marketplace.
So what does this all have to do with combination of XML document formats? The issues that the CDF specification and WICD profile are tackling are mostly in the area of user agent behavior. This is to foster a more predictable user experience – when you hit the same page or service from different handsets you should get a (more or less) similar user experience.
So what does such a compound document look like? As simple combination of XHTML and SVG might look like this:
Figure 1 Credit: Opera Software
The XHTML document that created the above (foo.html):
<?xml version="1.0"?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>circles</title> </head> <body> <h1>This is the text</h1> <p><object height="350" width="600" type="image/svg+xml" data="circles.svg"/</p> </body> </html>
And the referenced SVG document (circles.svg):
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg"> <g fill-opacity="0.7" stroke="black" stroke-width="0.2cm"> <circle fill="red" cx="6cm" cy="2cm" transform="translate(0,50)" r="100"/> <circle fill="blue" cx="6cm" cy="2cm" transform="translate(70,150)" r="100"/> <circle fill="green" cx="6cm" cy="2cm" transform="translate(-70,150)" r="100"/> </g> </svg>