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

Discussion in 'XML' started by Water Cooler v2, Nov 2, 2007.

  1. 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.
     
    Water Cooler v2, Nov 2, 2007
    #1
    1. Advertisements

  2. 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, Nov 2, 2007
    #2
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.