Home  >  Netscape  >  Products & Services  >  Browsers  >  
 Netscape Standards Challenge at Netscape.com
Click here! Click here! Click here!
W3C Standards Support in IE and the Netscape Gecko Browser Engine

"The underlying technology of the web browser has reached the point where standards compliance must take precedence. In order for the web to maintain its bullet-train rate of innovation, the web browser must become a stable building block for site designers, just as standardization on Windows has encouraged innovation in the PC space." - David Kerley, senior analyst, Jupiter Communications

Why support web standards? It's pretty clear to us here at Netscape that a standards-compliant browser provides developers and end users with the following benefits:

  • ability to access rich web content and applications across a variety of hardware platforms and devices
  • reduced cost for content and application development by enabling development to a single specification 
  • increased innovation by providinga rich, standards-based platform for application development
  • freedom of choice by reducing switching costs between vendors and applications
  • investment protection by enabling the creation of applications built on stable industry standards rather than proprietary technology subject to change 
  • the preservation of vigorouscompetition between vendors by preventing vendor lock-in 
Given the demand by developers and users for web standards compliance in browsers, it's surprising to find newly-released browsers that don't adhere to published, mature web standards. Yet even brief testing reveals dramatic differences in the scope, robustness, and consistency across platforms of the W3C standards support in the latest releases of Internet Explorer and the Netscape Gecko browser engine in the Mozilla M13 milestone build. This document compares the two browsers' support for the following:  Netscape Gecko has the best standards support of any browser engine available. It supports more web standards, more deeply, more consistently across platforms and devices than any other browser engine in history.Netscape Gecko's unmatched support for W3C standards for the first time enables the development of sophisticated, entirely standards-based applications. Developers are already applauding this commitment to enabling the platform, device, browser, and vendor-independent web applications of the future. Meanwhile, industry leaders like IBM, Intel, Liberate, NetObjects, Nokia, Red Hat, and Sun Microsystems are adopting Netscape Gecko to power a new generation of web browsers, web-enabled applications, and web browsing devices that will bring low cost, trouble-free Internet access to millions of new users who lack it today. To hasten the web application and web device revolutions, Netscape Gecko also supports free, open source, cross-platform Netscape Gecko Technologies that make it easier to achieve this unprecedented standards support across platforms and devices by speeding the implementation of standards-compliant browsers, applications, set top boxes, and browsing appliances.

Document Object Model (DOM)

Netscape Gecko delivers the best support for the W3C DOM of any browser engine available. According to independent standards expert Jiri Znamenacek, the Mozilla browser (upon which Netscape 6 is based) provided the best W3C DOM1 support of any browser he tested in a recent comparison using his DOM 1 Reference.

Why is support for the W3C DOM important? As the standard itself states, the Document Object Model Level 1 provides "a platform- and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure and style of documents. The Document Object Model provides a standard set of objects for representing HTML and XML documents, a standard model of how these objects can be combined, and a standard interface for accessing and manipulating them. Vendors can support the DOM as an interface to their proprietary data structures and APIs, and content authors can write to the standard DOM interfaces rather than product-specific APIs, thus increasing interoperability on the web."

Robust support for the W3C DOM is perhaps the most critical requirement for enabling the next generation of platform and device independent web applications that will have functionality and user interfaces equivalent to current native applications, because it is the W3C DOM that opens up the content and format of the page to manipulation from languages like JavaScript. The W3C DOM, level 1 has two parts: DOM 1 Core and DOM 1 HTML. DOM 1 Core provides a crucial set of core methods for reading, writing, and changing the content of documents on any platform or device--methods that work equally well for HTML and XML. DOM 1 HTML provides a set of convenience extensions that are specific to HTML documents only.

The methods of the DOM 1 Core are aptly named. They are truly the core of the DOM. The methods of the DOM 1 Core apply equally to HTML and XML, enabling them to manipulate the existing HTML web content of today and making them the foundation for the robust XML-based web content and web applications of tomorrow. It is for this reason that independent developer groups like the Web Standards Project have called on browser vendors to fully support all of the W3C DOM Level 1--both the Core and the HTML extensions. Only the W3C DOM will provide developers the freedom to write to the standard instead of to the idiosyncrasies and proprietary features of each browser on each platform. Only the W3C DOM will enable consumers to benefit from a new generation of powerful, easy-to-use web applications that run on any platform or device. Only the W3C DOM will empower consumers with the freedom to choose any platform or device and gain the same rich web experience from them all.

Unfortunately, testing using published, open source test suites shows that Microsoft has failed to provide in any of its browsers the support for the W3C DOM level 1 that developers are demanding--even with the Tasman layout engine that is part of IE5 for the Macintosh. Not only is IE's DOM support incomplete on all platforms, but within Version 5 of IE, the DOM support is inconsistent between platforms. Ironically, because of this inconsistency in standards support in IE5 between platforms, the fact that IE5 for the Mac has different and better support for the W3C DOM than IE5 for Windows makes developers' lives harder in one way by requiring even more complicated client sniffing code than was necessary in the past. In the past, developers writing applications using the DOM had to detect the browser vendor and browser version to determine what DOM code they could execute on the user's browser. But now, because IE5 for the Mac and IE5 for Windows have differing support for the W3C DOM, developers writing DOM-based applications will have to client-sniff the browser, the version, and the platform (a third level of sniffing and conditional code forking) before executing code that relies on the DOM, and resort to browser- and platform-specific proprietary workarounds when the needed DOM support is missing. The W3C DOM was supposed to make developers' lives easier; incomplete and inconsistent implementations by browser vendors makes developers' lives harder. It's pretty clear to us here at Netscape that browser vendors need to listen to their customers and provide the consistent standards support across platforms that developers are calling for.

Relevant Documents

Table 1: Document Object Model Support in Gecko and IE

W = Windows, M = Macintosh, L = Linux

 Feature  Gecko  IE  "See for Yourself" URL
  W M L W M L  
DOM Level 0 Core support for backward compatibility with Nav3 and IE3 applications Y Y Y Y Y n/a  
Best DOM Level 1 Core support Y Y Y N N n/a  
Best DOM Level 1 HTML support Y Y Y N N n/a  
Best DOM Level 1 support Y Y Y N N n/a  
attribute.removeAttribute(name) enables removal of attributes from element's list Y Y Y N N n/a http://www.mozilla.org/quality/ngdriver/
suites/dom1/cele004.html
element.attributes.length returns correct length of element's attribute list Y Y Y N N n/a http://www.mozilla.org/quality/ngdriver/
suites/dom1/cmap001.html
for HTML OPTION elements, optionElement.text returns displayed text for option element  Y Y Y N N n/a http://www.mozilla.org/quality/ngdriver/
suites/dom1/hopt003.html
for HTML SELECT elements, selectElement.value returns current selection value Y Y Y N N n/a http://www.mozilla.org/quality/ngdriver/
suites/dom1/hsel002.html
supports compact property of UL elements Y Y Y N N n/a http://www.mozilla.org/quality/ngdriver/
suites/dom1/huli001.html
document.createAttribute() method enables standards-based creation of element attributes without use of proprietary API Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.getElementsByTagName() method enables standards-based retrieval of elements by tag name without use of proprietary API  Y Y Y Y Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.implementation.hasFeature()enables application to query whether implementation supports a particular feature of standard  Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/DOMImplementation.dom
document.createElement() method enables creation of new elements Y Y Y Y Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.createElement() method prohibits creation of invalid HTML tags Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
NamedNodeMap getNamedItem() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/NamedNodeMap.dom
NamedNodeMap setNamedItem() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/NamedNodeMap.dom
NamedNodeMap removeNamedItem() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/NamedNodeMap.dom
document.doctype attribute Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.implementation attribute Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.documentElement attribute Y Y Y Y Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.documentElement.ownerDocument Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.nodeName attribute Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.nodeType attribute Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.parentNode attribute Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.childNodes attribute Y Y Y Y Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.firstChild attribute Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.lastChild attribute Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.createDocumentFragment() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.createTextNode() method Y Y Y Y Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.createComment() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.createCDATASection() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Document.dom
document.insertBefore() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.replaceChild() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.removeChild() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.appendChild() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.hasChildNodes() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
document.cloneNode() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Node.dom
CharacterData substringData() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Text.dom
CharacterData appendData() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Text.dom
CharacterData insertData() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Text.dom
CharacterData deleteData() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Text.dom
CharacterData replaceData() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Text.dom
CharacterData splitText() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Text.dom
document.body.getAttributeNode() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Attr.dom
element.tagName attribute Y Y Y Y Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Element.dom
element.getAttribute() method Y Y Y Y Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Element.dom
element.setAttribute() method Y Y Y Y Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Element.dom
element.removeAttribute() method Y Y Y Y Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Element.dom
element.getAttributeNode() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Element.dom
element.setAttributeNode() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Element.dom
element.removeAttributeNode() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Element.dom
element.getElementsByTagName() method enables access to contained subelements through standard API Y Y Y Y Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Element.dom
element.normalize() method Y Y Y N Y n/a http://www.jeremie.com/Dev/
DOM/test.php/Element.dom

Extensible Markup Language (XML)

"Internet Explorer 5.0 took some credible first steps toward XML+CSS (see Tim Bray's review of Windows IE5 for details), but the latest work from Mozilla goes beyond first steps to a usable set of tools. The solid XML+CSS core and the underlying DOM support suggests that Mozilla will be a useful platform for building applications, not just web pages. Add to that a dash of XLink support, and it looks like Mozilla may be leading the pack." -- Simon St. Laurent

HTML's simplicity assisted its rapid and widespread adoption, but this same simplicity becomes a straitjacket for building complex applications. Because HTML has a small and fixed number of markup tags, HTML markup provides very limited structural information about a document and almost no information about the document's meaning or content. This makes it difficult for users and applications to exchange and process complex structured documents such as those necessary for electronic commerce. XML was invented to solve this problem by enabling users and applications to define their own application-specific markup tags and languages in an industry-standard way. XML will enable applications to process and exchange structured documents with ease, and XML support in the browser will enable users to view the increasing number of XML documents on the web as well as to manipulate those documents on the client side. 

Both IE5 and Gecko support basic XML parsing, but the flaws in Microsoft's support for CSS1 formatting also reduce the usefulness of its support for XML. Rather than supporting the formatting of XML documents through CSS1, a stable, mature,  nearly four-year-old specification that developer groups such as WebStandards.org have been demanding support for, Microsoft has chosen to focus on formatting through XSL, a specification that is still under development. As Tim Bray, a co-editor of the XML specification has noted:

"Microsoft's XSL efforts are very impressive, but (readers will pardon us being something of a broken record on this subject) XSL is in the future. We are convinced that from the point of view of the largest number of users, the most important things that Microsoft could do in IE 5 would be:

  1. Ensure interoperability of XML and stylesheets with other browsers, and
  2. Build in conformance to existing, stable, well-understood standards such as CSS 1.0.
Innovation, of course, is fine and necessary, and we salute Microsoft's leadership in this area. But innovation needs to be built on a foundation of interoperability and playing by existing well-understood rules."

Microsoft Outlines XML Support in IE5 Beta 2

He further adds, "It seems obvious to me that for anyone who wants to deploy XML in production mode right now, XML + CSS is the way to go."

Relevant Documents

Table 2: XML Support in Gecko and IE

W = Windows, M = Macintosh, L = Linux

 Feature  Gecko  IE  "See for Yourself" URL
  W M L W M L  
Parses XML documents Y Y Y Y Y n/a  
Native XML internal representation of document Y Y Y N * n/a  
Can display XML documents without using an internal transformation to HTML Y Y Y N * n/a  
Display on screen XML data formatted with CSS1 Y Y Y Y Y n/a http://www.mozilla.org/newlayout/
demo/jumptravel/xml/flights.xml
Print XML dataformatted with CSS1 Y Y Y N * n/a http://www.mozilla.org/newlayout/demo/ jumptravel/xml/flights.xml
Industry-leading support for DOM1 Core enables the creation of sophisticated XML applications with the power of the W3C DOM level 1 Y Y Y N N n/a http://www.mozilla.org/newlayout/demo/ jumptravel/xml/flights.xml
Per XML Namespaces specification, enforces requirement that namespaces be declared Y Y Y N * n/a http://www.xml.com/pub/1999/03/ie5/first-x.html
Per XML Namespaces specification, permits HTML namespace to be mapped to any prefix, not just a hardcoded mapping to html: Y Y Y N * n/a http://www.xml.com/pub/1999/03/ie5/first-x.html

* Details were not available at the time of this writing. 

Resource Description Framework (RDF)

RDF provides a vendor-, platform-, and application-independent way to describe the data on the web with meta data. Software applications can use meta data to understand the data on the web and process it more efficiently, saving users time searching and allowing them to process the huge volume of Internet data more effectively. 

RDF will greatly increase the power and usefulness of many different applications. Search engines will find more relevant information more quickly, software agents will be able to search the web independently, and web sites will be able to present a catalog of their contents at a glance. RDF support in the browser provides a graphical front end that makes all these new applications possible. 

Netscape has also been a leader in applying this technology; Netscape Communicator's What's Related Smart Browsing support, implemented using RDF and available since version 4.06, is already the most widely used XML application on the Internet today. 

Relevant Documents

Table 3: RDF Support in Gecko and IE

W = Windows, M = Macintosh, L = Linux

Feature Gecko IE
  W M L W M L
Supports W3C RDF Recommendation Y Y Y N N n/a
Able to represent, describe, and index web site contents with RDF Y Y Y N N n/a
Support for pluggable data sources to enable new RDF services Y Y Y N N n/a

Cascading Style Sheets, Level 1 (CSS-1)

Cascading style sheets provide a vendor-, platform-, device-, and application-independent way to specify the format of documents. They enable clean separation of content (in the document file) and formatting information (in external style sheet files), which reduces development and maintenance costs and makes it easy to reformat content for different audiences. The CSS1 standard (now nearly four years old) is a stable, mature specification with the power to format HTML and XML pages.

Testing demonstrates inconsistent support by IE5 of CSS1 on Windows and the Macintosh. In contrast, independent analysts agree that the Gecko layout engine in Mozilla and Netscape 6 is delivering the best CSS support ever achieved by any browser. Mozilla and Netscape 6 are delivering this industry-leading support for CSS across platforms, and are including the ability to format and print XML data natively with CSS1. RichInStyle.com has written that "Without doubt, Mozilla is the best CSS browser available." And in a recent analysis of combined CSS1 and CSS2 support by David Baron, Mozilla received the highest score, 36.5, compared to -8.5 for IE 5.0 for Windows. Netscape Gecko is delivering the CSS support developers are demanding to enable the next generation of rich content and applications across browsers, platforms, and devices. 

Relevant Documents

Table 4: CSS-1 Standards Support in Gecko and IE

W = Windows, M = Macintosh, L = Linux

Feature Gecko IE "See for Yourself" URL
  W M L W M L  
Display on screen HTML data formatted with CSS1 Y Y Y Y Y n/a  
Print HTML data formatted with CSS1 Y Y Y Y Y n/a  
Display on screen XML data formatted with CSS1 Y Y Y Y Y n/a  
Print XML data formatted with CSS1 Y Y Y N   n/a  
First-letter formatting for magazine-style lead-ins to paragraphs Y Y Y Y Y n/a http://www.w3.org/Style/CSS/Test/current/
sec26.htm
First-line formatting Y Y Y Y Y n/a http://www.w3.org/Style/CSS/Test/current/
sec23.htm
Comprehensive box model Y Y Y N Y n/a http://style.verso.com/boxacidtest/vd/

http://www.fas.harvard.edu/~dbaron/csstest/
shortbox.html

Passes zero margins test Y Y Y N Y n/a http://www.fas.harvard.edu/~dbaron/csstest/
margtest.html
Correct calculation of list item margins, borders, and padding Y Y Y Y Y n/a http://www.fas.harvard.edu/~dbaron/csstest/
listbox.html
Properties of parent elements correctly inherited by inline child elements Y Y Y Y Y n/a http://www.w3.org/Style/CSS/Test/current/
sec543.htm
Text-decorationcolor consistency across inlines, enabling rich formatting of structured text  Y Y Y Y Y n/a http://www.w3.org/Style/CSS/Test/current/
sec543.htm
Small-caps support Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec524.htm
Complete"display" property support Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec43.htm
"word-spacing" property support to enable flexible spacing of text Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec541.htm
"vertical-align" support Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec544.htm
Enforces correct class-selector naming to ensure interoperability with other browsers Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec14.htm
Repeating tiling of background images Y Y Y Y Y n/a http://www.w3.org/Style/CSS/Test/current/
sec534.htm
Full inline elements style control for phrases and words (borders, border-color, etc.) Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec42.htm
'auto' values correctly applied to left and right margins Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec412.htm
Line-height correctly calculated. Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec44.htm
Border width control Y Y Y Y Y n/a http://www.w3.org/Style/CSS/Test/current/
sec5515b.htm
All border styles, including dotted and dashed Y Y Y Y Y n/a http://www.w3.org/Style/CSS/Test/current/
sec5517.htm
Disregards invalid selectors to catch bad markup and ensure cross-browser compatibility Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec71.htm
Checks validity of units to catch bad markup and ensure cross-browser compatibility Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec71.htm
Disregards invalid keywords to catch bad markup and ensure cross-browser compatibility Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec71.htm
Enforces correct keyword syntax to catch bad markup and ensure cross-browser compatibility Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec71.htm
When one declaration in a series of property-value pairs is invalid, correctly parses and enables remaining declarations Y Y Y N Y n/a http://www.w3.org/Style/CSS/Test/current/
sec71.htm
Skips markup in invalid at-rules to make developer aware of errors Y Y Y Y Y n/a http://www.w3.org/Style/CSS/Test/current/
sec71.htm
Forward-compatible parsing to ensure that CSS1-only browsers can read style sheets containing higher-level features (such as CSS2) Y Y Y N Y n/a http://www.fas.harvard.edu/~dbaron/csstest/
parsing.html
Cell borders Y Y Y Y Y n/a http://www.w3.org/St