| Home > Netscape > Products & Services > Browsers > |
| Netscape Standards Challenge at Netscape.com |
|
|||||||||||
|
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:
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
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:
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
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
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
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/ |
| 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 |