Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: How IE's and Firefox's XML DOM parsers deal with whitespace text nodes

From: Martin Honnen <mahotrash@-----.-->
To: NULL
Date: 11/2/2007 4:39:00 PM

Water Cooler v2 wrote:

> The relevant text I do not understand is:
> 
> "Internet Explorer, when using node.childNodes[], will NOT contain
> these white-space nodes. In Mozilla, those nodes will be in the
> array."
> 
> and
> 
> "Internet Explorer will skip the white-space text nodes that are
> generated between nodes (e.g. new line characters), while Mozilla will
> not. So, in the example above, Mozilla browsers will alert 9 child
> nodes, while Internet Explorer will alert 4."
> 
> I checked the said file: http://www.w3schools.com/dom/books.xml
> 
> In both, Firefox 2.0 as well as IE 6.0, it had only 4 <book> elements.

The DOM object model knows different kind of nodes, it knows element 
nodes but it also knows text nodes. In the example document books.xml 
there is white space between the elements as the markup looks like this

<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>

and not like this

<bookstore><book category="COOKING"><title lang="en">Everyday 
Italian</title><author>Giada De 
Laurentiis</author><year>2005</year><price>30.00</price></book><book 
category="CHILDREN"><title lang="en">Harry Potter</title><author>J K. 
Rowling</author><year>2005</year><price>29.99</price></book>

The difference between the DOM implementations is whether such 
whitespace is modelled as text nodes or not.

With Mozilla it is, with IE respectively MSXML it depends on the setting 
of the property preserveWhiteSpace e.g. this example

var xmlDocument = new ActiveXObject('Msxml2.DOMDocument.3.0');
xmlDocument.async = false;

xmlDocument.preserveWhiteSpace = true;

xmlDocument.load('http://www.w3schools.com/dom/books.xml');

alert(xmlDocument.documentElement.childNodes.length);

xmlDocument.preserveWhiteSpace = false;

xmlDocument.load('http://www.w3schools.com/dom/books.xml');

alert(xmlDocument.documentElement.childNodes.length);

alerts 9 first, then 4.

So with Mozilla and with IE/MSXML with preserveWhiteSpace set to true 
the object model contains white space text nodes between the book 
element nodes.

-- 

	Martin Honnen
	http://JavaScript.FAQTs.com/


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent