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

  • Thread starter Water Cooler v2
  • Start date
W

Water Cooler v2

Can someone please explain this section of this tutorial me?

http://www.w3schools.com/dom/dom_mozilla_vs_ie.asp

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.
 
M

Martin Honnen

Water said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top