HTML 4.01 strict HTML

XML for <SCRIPT> started off as an "experimental code doodle" from Micheal Houghton. It allowed read-only access to a DOM tree representing an XML string.

While looking for a JavaScript parser during the Summer of 2000, I ran across XML for <SCRIPT> and used it for a large web-based application that I was developing. During the development of that application, I was impressed with how useful the library actually was. My next web application was a custom XML-based content management system. Since the back end employed XML as its data source, it was an easy decision to use XML for <SCRIPT> on the client side as well.

After the successful implementation of the content management system, I decided to volunteer to maintain XML for <SCRIPT>. Michael was gracious enough to allow it, and I set forth to merge my DOM manipulation code into his tree and build a web site to support the project.

In early Summer 2001, I released XML for <SCRIPT> 1.0. Since then, thousands of people have downloaded the project. Many have emailed me with suggestions and compliments. I have exchanged greetings with hundreds of people from every walk of life.

I've also received patches and code contributions that have extended XML for <SCRIPT> far beyond what I ever thought it could be. These contributions have demonstrated to me how special Free and Open Source Software can be. It also means XML for <SCRIPT> is not just my project; it is truly a project maintained and extended by a collaborative group of people from all over the world.

I can't thank the following people enough for their efforts in making XML for <SCRIPT> everything that it is today.

  • Micheal Houghton
    • Original (Classic) DOM Parser
  • Scott Severtson
    • Sax Parser
    • Sax Parser Test Suite
    • Initial W3C DOM Parser work
  • Jennifer Sims
    • Site Design and Layout (2.0 and beyond)
  • Raymond Irving
    • Classic DOM tagPath
    • Sax Parser Samples
    • xmlEscape function inspiration
  • James S. Elkins
    • XML Recordset Wrapper add-on
  • Jon van Noort
    • W3C DOM Parser
    • W3C DOM Parser Test Suites
    • ASP Server-Side Proxy
    • Original XPath Contributed Add-on work
  • Brandon Zehm
    • PHP Server-Side Proxy
    • mod_perl Server-Side Proxy
    • Server-Side Proxy Design Assistance
  • Brent Brown
    • .NET Server-Side Proxy
  • David Martz
    • Many hours of W3C Documentation review

Lastly, one of the biggest contributors to this project has been my wonderful wife, Kim. Not only did she help out with some of the nasty regular expressions in the mod_perl proxy, but she has also granted me the time needed to bring XML for <SCRIPT> to you. Thank you Kim, I love you.

The following is a detailed version history for XML for <SCRIPT>.

Version History

Version 0.1
Initial version

Version 0.2
Significant code changes - switched to a cleaner one-pass parser.

Version 0.21
Bug fix release. Resolves an issue with attributes named 'length', due to the Array/Object duality in JavaScript. Adds a new accessor method on XMLNode, getAttributeNames(), to return a list of attribute names (Direct access to the attributes array property is discouraged)

Version 0.22
Bug fix release. Fixes problems with the content of CDATA and comment sections, and addresses string processing issues.

Version 1.0
New maintainer (djoham[at]yahoo[dot]com). Lots of new DOM manipulation functions. In addition, a new test suite has been added to the distribution as well as a new sample application, new documentation and a new web site design.

Version 1.1
Support for Konqueror 2.2 added (by rewriting the convert functions) and a new stripped down version of xml.js (tinyxml.js) added to the distribution to increase download speeds on slow connections.

Version 2.0
A SAX parser, test suite and sample application is added to the project as well as a simple API for storing XML data in cookies and helping in the escaping out of XML into valid HTML. As a result, the .js files are renamed to more appropriately describe their function. In addition, a new web site design is introduced that makes the distribution look considerably more professional and easier to read.

Version 2.1
DOM tagPath searching is added allowing JavaScript programmers to query the DOM in a manner much like XPath. A sample application demonstrating tagPath searching can be found in the "Sample Code (Parsers)" -> "Classic DOM" section of the website. This feature is also fully documented in the "Documentation" -> "Classic DOM" section of the website.

Loading of XML Data from any domain on the web is added via the xmlIOProxyLoadData functions and server-side proxies. More information about this feature can be found in the "Sample Code (Tools)" -> "Server-Side Proxies" section of the web site. This feature is also fully documented in the "Documentation" -> "Server-Side Proxies" section of the website.

The XML persistence via cookies feature of XML for <SCRIPT> 2.0 is extended with the addition of the xmlIOListSavedDataNames function. This function is useful for building dialogs that allow users to choose which data stream that they would like to open. It also can can be used by developers to ensure that a data stream name is not already in use before saving. A sample application demonstrating this feature can be found in the "Sample Code (Tools)" -> "Saving XML" section of the web site. This feature is also fully documented in the "Documentation" -> "Tools" section of the website.

A section of the website devoted to user contributed code has been added. These contributions have not yet been fully documented or tested and are not part of the core distribution of XML for <SCRIPT>. However, following the Free Software philosophy of "release early-release often", they are provided as-is so the greater community may take advantage of them as quickly as possible.

Support for Apple's Safari browser has been added.

Support for Opera 7 has been added

Support for Internet Explorer 5.2 for Macintosh OS X has been added. IE 5.2 for OS X had problems loading the pop-up windows that contained the sample code and the test suites. For some reason, on these windows, code similar to the following would fail: <img src="./../images/image.png" />. Taking out the "./" and leaving the src attribute equal to "../images/image.png" seemed to fix the problem. This problem was only seen on the website for XML for <SCRIPT>. The parser and tool code ran just fine.

Version 3.0
A standards-compliant W3C DOM Parser is added to the distribution. This DOM Parser complies with the W3C Level 1 and Level 2 standards.

XML for <SCRIPT> 3.0's new DOM Parser comes complete with a new sample application as well as three new test suites and extensive documentation.

XML for <SCRIPT> now has over a MegaByte of documentation!

A .NET Server-Side proxy has been added

An ASP Server-Side proxy has been added

The xmlIO functions have been extended to allow for XML loading from the current domain without the need of a Server-Side proxy. A sample application demonstrating this feature can be found in the "Sample Code (Tools)" -> "Load Local XML Data" section of the web site. This feature is also fully documented in the "Documentation" -> "Tools" section of the website.

This feature can also be used to load XML off of the local file system for developers creating applications that run from the client's computer and do not use a web server.

A new site layout (still based off of Jennifer Sims' concept) has been introduced. This layout adds space for all of the documentation required for XML for <SCRIPT> 3.0's feature set and allows for further expansion in the future. It also allows for direct links to all pages.

A mailing list has been made available for users, developers and anyone else interested in XML for <SCRIPT> to exchange ideas, questions and/or code. For more information about the mailing lists see the documentation in the Mailing Lists section of the website.

A new Contributed Add-on has been created. The new "LinkChecker" Add-on allows developers to check their sites for broken links simply by providing the address of the home page of the web site. This Contributed Add-on is fully documented in the Contributed Add-ons -> Link Checker section of the website.

Version 3.1
Originally submitted by Jon Van Noort, an XPath Contributed Add-on is added on top of the XML for <SCRIPT> W3C Processor. This XPath processor supports many of the common XPath expressions and is documented in the Contributed Add-ons -> XPath section of the website.

NOTE: While providing support for what should be the majority of the functionality needed for the most common uses of XPath, please keep in mind that the XPath Contributed Add-on is not fully compliant to the W3C XPath specificication and has known limitations. Please read the documentation and ensure any XPath expressions you intend to use are supported before using the XPath Contributed Add-on.

XML for <SCRIPT> version 3.1 fixed a number of bugs that were found in version 3.0.


I would like to personally thank Michael Houghton <>, the original author of XML for <SCRIPT>. Without his original work, this parser would never have come into being.


If you have any comments, suggestions, modifications, complaints, etc., please contact me (David Joham) by email: djoham[at]yahoo[dot]com. If you're reporting a bug, it would be useful if you could provide the smallest chunk of XML that demonstrates the problem.


XML for <SCRIPT> is Copyright 2000, 2001, 2002, 2003, 2004 by its contributors.
All trademarks are the property of their respective owners.