<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>src/serializer/xml.js</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,11 +1,17 @@
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
-&lt;projectDescription&gt;
-	&lt;name&gt;env-js&lt;/name&gt;
-	&lt;comment&gt;&lt;/comment&gt;
-	&lt;projects&gt;
-	&lt;/projects&gt;
-	&lt;buildSpec&gt;
-	&lt;/buildSpec&gt;
-	&lt;natures&gt;
-	&lt;/natures&gt;
-&lt;/projectDescription&gt;
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;projectDescription&gt;
+	&lt;name&gt;env-js&lt;/name&gt;
+	&lt;comment&gt;&lt;/comment&gt;
+	&lt;projects&gt;
+	&lt;/projects&gt;
+	&lt;buildSpec&gt;
+		&lt;buildCommand&gt;
+			&lt;name&gt;org.rubypeople.rdt.core.rubybuilder&lt;/name&gt;
+			&lt;arguments&gt;
+			&lt;/arguments&gt;
+		&lt;/buildCommand&gt;
+	&lt;/buildSpec&gt;
+	&lt;natures&gt;
+		&lt;nature&gt;org.rubypeople.rdt.core.rubynature&lt;/nature&gt;
+	&lt;/natures&gt;
+&lt;/projectDescription&gt;</diff>
      <filename>.project</filename>
    </modified>
    <modified>
      <diff>@@ -105,6 +105,10 @@
             &lt;fileset dir=&quot;${SRC_DIR}&quot; includes=&quot;html/tbody-thead-tfoot.js&quot; /&gt;
             &lt;fileset dir=&quot;${SRC_DIR}&quot; includes=&quot;html/td-th.js&quot; /&gt;
             &lt;fileset dir=&quot;${SRC_DIR}&quot; includes=&quot;html/tr.js&quot; /&gt;
+            &lt;fileset dir=&quot;${SRC_DIR}&quot; includes=&quot;serializer/xml.js&quot; /&gt;
+            &lt;fileset dir=&quot;${SRC_DIR}&quot; includes=&quot;xpath/expression.js&quot; /&gt;
+            &lt;fileset dir=&quot;${SRC_DIR}&quot; includes=&quot;xpath/result.js&quot; /&gt;
+            &lt;fileset dir=&quot;${SRC_DIR}&quot; includes=&quot;xslt/processor.js&quot; /&gt;
             &lt;fileset dir=&quot;${SRC_DIR}&quot; includes=&quot;event/event.js&quot; /&gt;
             &lt;fileset dir=&quot;${SRC_DIR}&quot; includes=&quot;event/mouseevent.js&quot; /&gt;
             &lt;fileset dir=&quot;${SRC_DIR}&quot; includes=&quot;event/uievent.js&quot; /&gt;</diff>
      <filename>build.xml</filename>
    </modified>
    <modified>
      <diff>@@ -2010,34 +2010,34 @@ __extend__(DOMElement.prototype, {
     }
 });
 
-/**
- * @class  DOMException - raised when an operation is impossible to perform
- * @author Jon van Noort (jon@webarcana.com.au)
- * @param  code : int - the exception code (one of the DOMException constants)
- */
-var DOMException = function(code) {
-  this.code = code;
-};
-
-// DOMException constants
-// Introduced in DOM Level 1:
-DOMException.INDEX_SIZE_ERR                 = 1;
-DOMException.DOMSTRING_SIZE_ERR             = 2;
-DOMException.HIERARCHY_REQUEST_ERR          = 3;
-DOMException.WRONG_DOCUMENT_ERR             = 4;
-DOMException.INVALID_CHARACTER_ERR          = 5;
-DOMException.NO_DATA_ALLOWED_ERR            = 6;
-DOMException.NO_MODIFICATION_ALLOWED_ERR    = 7;
-DOMException.NOT_FOUND_ERR                  = 8;
-DOMException.NOT_SUPPORTED_ERR              = 9;
-DOMException.INUSE_ATTRIBUTE_ERR            = 10;
-
-// Introduced in DOM Level 2:
-DOMException.INVALID_STATE_ERR              = 11;
-DOMException.SYNTAX_ERR                     = 12;
-DOMException.INVALID_MODIFICATION_ERR       = 13;
-DOMException.NAMESPACE_ERR                  = 14;
-DOMException.INVALID_ACCESS_ERR             = 15;
+/**
+ * @class  DOMException - raised when an operation is impossible to perform
+ * @author Jon van Noort (jon@webarcana.com.au)
+ * @param  code : int - the exception code (one of the DOMException constants)
+ */
+var DOMException = function(code) {
+  this.code = code;
+};
+
+// DOMException constants
+// Introduced in DOM Level 1:
+DOMException.INDEX_SIZE_ERR                 = 1;
+DOMException.DOMSTRING_SIZE_ERR             = 2;
+DOMException.HIERARCHY_REQUEST_ERR          = 3;
+DOMException.WRONG_DOCUMENT_ERR             = 4;
+DOMException.INVALID_CHARACTER_ERR          = 5;
+DOMException.NO_DATA_ALLOWED_ERR            = 6;
+DOMException.NO_MODIFICATION_ALLOWED_ERR    = 7;
+DOMException.NOT_FOUND_ERR                  = 8;
+DOMException.NOT_SUPPORTED_ERR              = 9;
+DOMException.INUSE_ATTRIBUTE_ERR            = 10;
+
+// Introduced in DOM Level 2:
+DOMException.INVALID_STATE_ERR              = 11;
+DOMException.SYNTAX_ERR                     = 12;
+DOMException.INVALID_MODIFICATION_ERR       = 13;
+DOMException.NAMESPACE_ERR                  = 14;
+DOMException.INVALID_ACCESS_ERR             = 15;
 $debug(&quot;Defining DocumentFragment&quot;);
 /* 
 * DocumentFragment - DOM Level 2
@@ -6943,7 +6943,130 @@ __extend__(HTMLTableRowElement.prototype, {
     
 });
 
-			$debug(&quot;Defining Event&quot;);
+			/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XMLSerializer&quot;);
+/*
+* XMLSerializer 
+*/
+$w.__defineGetter__(&quot;XMLSerializer&quot;, function(){
+    return new XMLSerializer(arguments);
+});
+
+var XMLSerializer = function() {
+
+};
+__extend__(XMLSerializer.prototype, {
+    serializeToString: function(node){
+        return node.xml;
+    }
+});/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XPathExpression&quot;);
+/*
+* XPathExpression 
+*/
+$w.__defineGetter__(&quot;XPathExpression&quot;, function(){
+    throw new Error(&quot;Object cannot be created in this context&quot;);
+});
+
+var XPathExpression = function() {};
+__extend__(XPathExpression.prototype, {
+    evaluate: function(){
+        //TODO
+    }
+});/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XPathResult&quot;);
+/*
+* XPathResult 
+*/
+$w.__defineGetter__(&quot;XPathResult&quot;, function(){
+    return XPathResult;
+});
+
+var XPathResult = function() {
+    this.snapshotLentgh = 0;
+    this.stringValue = '';
+};
+
+__extend__( XPathResult, {
+    ANY_TYPE:                     0,
+    NUMBER_TYPE:                  1,
+    STRING_TYPE:                  2,
+    BOOLEAN_TYPE:                 3,
+    UNORDERED_NODE_ITERATOR_TYPE: 4,
+    ORDERED_NODEITERATOR_TYPE:    5,
+    UNORDERED_NODE_SNAPSHOT_TYPE: 6,
+    ORDERED_NODE_SNAPSHOT_TYPE:   7,
+    ANY_ORDERED_NODE_TYPE:        8,
+    FIRST_ORDERED_NODE_TYPE:      9
+});
+
+__extend__(XPathResult.prototype, {
+    get booleanValue(){
+      //TODO  
+    },
+    get invalidIteration(){
+        //TODO
+    },
+    get numberValue(){
+        //TODO
+    },
+    get resultType(){
+        //TODO
+    },
+    get singleNodeValue(){
+        //TODO
+    },
+    iterateNext: function(){
+        //TODO
+    },
+    snapshotItem: function(index){
+        //TODO
+    }
+});
+
+/**
+ * @author thatcher
+ */
+
+$w.__defineGetter__(&quot;XSLTProcessor&quot;, function(){
+    return new XSLTProcessor(arguments);
+});
+
+var XSLTProcessor = function() {
+    this.__stylesheet__ = null;
+};
+__extend__(XSLTProcessor.prototype, {
+    clearParameters: function(){
+        //TODO
+    },
+    getParameter: function(nsuri, name){
+        //TODO
+    },
+    importStyleSheet: function(stylesheet){
+        this.__stylesheet__ = stylesheet;
+    },
+    removeParameter: function(nsuri, name){
+        //TODO
+    },
+    reset: function(){
+        //TODO
+    },
+    setParameter: function(nsuri, name, value){
+        //TODO
+    },
+    transformToDocument: function(sourceNode){
+        return xsltProcess(sourceNode, this.__stylesheet__);
+    },
+    transformToFragment: function(sourceNode, ownerDocument){
+        return xsltProcess(sourceNode, this.__stylesheet__).childNodes;
+    }
+});$debug(&quot;Defining Event&quot;);
 /*
 * event.js
 */</diff>
      <filename>dist/env.0.9.5.js</filename>
    </modified>
    <modified>
      <diff>@@ -2010,34 +2010,34 @@ __extend__(DOMElement.prototype, {
     }
 });
 
-/**
- * @class  DOMException - raised when an operation is impossible to perform
- * @author Jon van Noort (jon@webarcana.com.au)
- * @param  code : int - the exception code (one of the DOMException constants)
- */
-var DOMException = function(code) {
-  this.code = code;
-};
-
-// DOMException constants
-// Introduced in DOM Level 1:
-DOMException.INDEX_SIZE_ERR                 = 1;
-DOMException.DOMSTRING_SIZE_ERR             = 2;
-DOMException.HIERARCHY_REQUEST_ERR          = 3;
-DOMException.WRONG_DOCUMENT_ERR             = 4;
-DOMException.INVALID_CHARACTER_ERR          = 5;
-DOMException.NO_DATA_ALLOWED_ERR            = 6;
-DOMException.NO_MODIFICATION_ALLOWED_ERR    = 7;
-DOMException.NOT_FOUND_ERR                  = 8;
-DOMException.NOT_SUPPORTED_ERR              = 9;
-DOMException.INUSE_ATTRIBUTE_ERR            = 10;
-
-// Introduced in DOM Level 2:
-DOMException.INVALID_STATE_ERR              = 11;
-DOMException.SYNTAX_ERR                     = 12;
-DOMException.INVALID_MODIFICATION_ERR       = 13;
-DOMException.NAMESPACE_ERR                  = 14;
-DOMException.INVALID_ACCESS_ERR             = 15;
+/**
+ * @class  DOMException - raised when an operation is impossible to perform
+ * @author Jon van Noort (jon@webarcana.com.au)
+ * @param  code : int - the exception code (one of the DOMException constants)
+ */
+var DOMException = function(code) {
+  this.code = code;
+};
+
+// DOMException constants
+// Introduced in DOM Level 1:
+DOMException.INDEX_SIZE_ERR                 = 1;
+DOMException.DOMSTRING_SIZE_ERR             = 2;
+DOMException.HIERARCHY_REQUEST_ERR          = 3;
+DOMException.WRONG_DOCUMENT_ERR             = 4;
+DOMException.INVALID_CHARACTER_ERR          = 5;
+DOMException.NO_DATA_ALLOWED_ERR            = 6;
+DOMException.NO_MODIFICATION_ALLOWED_ERR    = 7;
+DOMException.NOT_FOUND_ERR                  = 8;
+DOMException.NOT_SUPPORTED_ERR              = 9;
+DOMException.INUSE_ATTRIBUTE_ERR            = 10;
+
+// Introduced in DOM Level 2:
+DOMException.INVALID_STATE_ERR              = 11;
+DOMException.SYNTAX_ERR                     = 12;
+DOMException.INVALID_MODIFICATION_ERR       = 13;
+DOMException.NAMESPACE_ERR                  = 14;
+DOMException.INVALID_ACCESS_ERR             = 15;
 $debug(&quot;Defining DocumentFragment&quot;);
 /* 
 * DocumentFragment - DOM Level 2
@@ -6943,7 +6943,130 @@ __extend__(HTMLTableRowElement.prototype, {
     
 });
 
-			$debug(&quot;Defining Event&quot;);
+			/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XMLSerializer&quot;);
+/*
+* XMLSerializer 
+*/
+$w.__defineGetter__(&quot;XMLSerializer&quot;, function(){
+    return new XMLSerializer(arguments);
+});
+
+var XMLSerializer = function() {
+
+};
+__extend__(XMLSerializer.prototype, {
+    serializeToString: function(node){
+        return node.xml;
+    }
+});/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XPathExpression&quot;);
+/*
+* XPathExpression 
+*/
+$w.__defineGetter__(&quot;XPathExpression&quot;, function(){
+    throw new Error(&quot;Object cannot be created in this context&quot;);
+});
+
+var XPathExpression = function() {};
+__extend__(XPathExpression.prototype, {
+    evaluate: function(){
+        //TODO
+    }
+});/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XPathResult&quot;);
+/*
+* XPathResult 
+*/
+$w.__defineGetter__(&quot;XPathResult&quot;, function(){
+    return XPathResult;
+});
+
+var XPathResult = function() {
+    this.snapshotLentgh = 0;
+    this.stringValue = '';
+};
+
+__extend__( XPathResult, {
+    ANY_TYPE:                     0,
+    NUMBER_TYPE:                  1,
+    STRING_TYPE:                  2,
+    BOOLEAN_TYPE:                 3,
+    UNORDERED_NODE_ITERATOR_TYPE: 4,
+    ORDERED_NODEITERATOR_TYPE:    5,
+    UNORDERED_NODE_SNAPSHOT_TYPE: 6,
+    ORDERED_NODE_SNAPSHOT_TYPE:   7,
+    ANY_ORDERED_NODE_TYPE:        8,
+    FIRST_ORDERED_NODE_TYPE:      9
+});
+
+__extend__(XPathResult.prototype, {
+    get booleanValue(){
+      //TODO  
+    },
+    get invalidIteration(){
+        //TODO
+    },
+    get numberValue(){
+        //TODO
+    },
+    get resultType(){
+        //TODO
+    },
+    get singleNodeValue(){
+        //TODO
+    },
+    iterateNext: function(){
+        //TODO
+    },
+    snapshotItem: function(index){
+        //TODO
+    }
+});
+
+/**
+ * @author thatcher
+ */
+
+$w.__defineGetter__(&quot;XSLTProcessor&quot;, function(){
+    return new XSLTProcessor(arguments);
+});
+
+var XSLTProcessor = function() {
+    this.__stylesheet__ = null;
+};
+__extend__(XSLTProcessor.prototype, {
+    clearParameters: function(){
+        //TODO
+    },
+    getParameter: function(nsuri, name){
+        //TODO
+    },
+    importStyleSheet: function(stylesheet){
+        this.__stylesheet__ = stylesheet;
+    },
+    removeParameter: function(nsuri, name){
+        //TODO
+    },
+    reset: function(){
+        //TODO
+    },
+    setParameter: function(nsuri, name, value){
+        //TODO
+    },
+    transformToDocument: function(sourceNode){
+        return xsltProcess(sourceNode, this.__stylesheet__);
+    },
+    transformToFragment: function(sourceNode, ownerDocument){
+        return xsltProcess(sourceNode, this.__stylesheet__).childNodes;
+    }
+});$debug(&quot;Defining Event&quot;);
 /*
 * event.js
 */</diff>
      <filename>dist/env.js</filename>
    </modified>
    <modified>
      <diff>@@ -2403,34 +2403,34 @@ __extend__(DOMElement.prototype, {
     }
 });
 
-/**
- * @class  DOMException - raised when an operation is impossible to perform
- * @author Jon van Noort (jon@webarcana.com.au)
- * @param  code : int - the exception code (one of the DOMException constants)
- */
-var DOMException = function(code) {
-  this.code = code;
-};
-
-// DOMException constants
-// Introduced in DOM Level 1:
-DOMException.INDEX_SIZE_ERR                 = 1;
-DOMException.DOMSTRING_SIZE_ERR             = 2;
-DOMException.HIERARCHY_REQUEST_ERR          = 3;
-DOMException.WRONG_DOCUMENT_ERR             = 4;
-DOMException.INVALID_CHARACTER_ERR          = 5;
-DOMException.NO_DATA_ALLOWED_ERR            = 6;
-DOMException.NO_MODIFICATION_ALLOWED_ERR    = 7;
-DOMException.NOT_FOUND_ERR                  = 8;
-DOMException.NOT_SUPPORTED_ERR              = 9;
-DOMException.INUSE_ATTRIBUTE_ERR            = 10;
-
-// Introduced in DOM Level 2:
-DOMException.INVALID_STATE_ERR              = 11;
-DOMException.SYNTAX_ERR                     = 12;
-DOMException.INVALID_MODIFICATION_ERR       = 13;
-DOMException.NAMESPACE_ERR                  = 14;
-DOMException.INVALID_ACCESS_ERR             = 15;
+/**
+ * @class  DOMException - raised when an operation is impossible to perform
+ * @author Jon van Noort (jon@webarcana.com.au)
+ * @param  code : int - the exception code (one of the DOMException constants)
+ */
+var DOMException = function(code) {
+  this.code = code;
+};
+
+// DOMException constants
+// Introduced in DOM Level 1:
+DOMException.INDEX_SIZE_ERR                 = 1;
+DOMException.DOMSTRING_SIZE_ERR             = 2;
+DOMException.HIERARCHY_REQUEST_ERR          = 3;
+DOMException.WRONG_DOCUMENT_ERR             = 4;
+DOMException.INVALID_CHARACTER_ERR          = 5;
+DOMException.NO_DATA_ALLOWED_ERR            = 6;
+DOMException.NO_MODIFICATION_ALLOWED_ERR    = 7;
+DOMException.NOT_FOUND_ERR                  = 8;
+DOMException.NOT_SUPPORTED_ERR              = 9;
+DOMException.INUSE_ATTRIBUTE_ERR            = 10;
+
+// Introduced in DOM Level 2:
+DOMException.INVALID_STATE_ERR              = 11;
+DOMException.SYNTAX_ERR                     = 12;
+DOMException.INVALID_MODIFICATION_ERR       = 13;
+DOMException.NAMESPACE_ERR                  = 14;
+DOMException.INVALID_ACCESS_ERR             = 15;
 $debug(&quot;Defining DocumentFragment&quot;);
 /* 
 * DocumentFragment - DOM Level 2
@@ -7336,7 +7336,130 @@ __extend__(HTMLTableRowElement.prototype, {
     
 });
 
-			$debug(&quot;Defining Event&quot;);
+			/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XMLSerializer&quot;);
+/*
+* XMLSerializer 
+*/
+$w.__defineGetter__(&quot;XMLSerializer&quot;, function(){
+    return new XMLSerializer(arguments);
+});
+
+var XMLSerializer = function() {
+
+};
+__extend__(XMLSerializer.prototype, {
+    serializeToString: function(node){
+        return node.xml;
+    }
+});/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XPathExpression&quot;);
+/*
+* XPathExpression 
+*/
+$w.__defineGetter__(&quot;XPathExpression&quot;, function(){
+    throw new Error(&quot;Object cannot be created in this context&quot;);
+});
+
+var XPathExpression = function() {};
+__extend__(XPathExpression.prototype, {
+    evaluate: function(){
+        //TODO
+    }
+});/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XPathResult&quot;);
+/*
+* XPathResult 
+*/
+$w.__defineGetter__(&quot;XPathResult&quot;, function(){
+    return XPathResult;
+});
+
+var XPathResult = function() {
+    this.snapshotLentgh = 0;
+    this.stringValue = '';
+};
+
+__extend__( XPathResult, {
+    ANY_TYPE:                     0,
+    NUMBER_TYPE:                  1,
+    STRING_TYPE:                  2,
+    BOOLEAN_TYPE:                 3,
+    UNORDERED_NODE_ITERATOR_TYPE: 4,
+    ORDERED_NODEITERATOR_TYPE:    5,
+    UNORDERED_NODE_SNAPSHOT_TYPE: 6,
+    ORDERED_NODE_SNAPSHOT_TYPE:   7,
+    ANY_ORDERED_NODE_TYPE:        8,
+    FIRST_ORDERED_NODE_TYPE:      9
+});
+
+__extend__(XPathResult.prototype, {
+    get booleanValue(){
+      //TODO  
+    },
+    get invalidIteration(){
+        //TODO
+    },
+    get numberValue(){
+        //TODO
+    },
+    get resultType(){
+        //TODO
+    },
+    get singleNodeValue(){
+        //TODO
+    },
+    iterateNext: function(){
+        //TODO
+    },
+    snapshotItem: function(index){
+        //TODO
+    }
+});
+
+/**
+ * @author thatcher
+ */
+
+$w.__defineGetter__(&quot;XSLTProcessor&quot;, function(){
+    return new XSLTProcessor(arguments);
+});
+
+var XSLTProcessor = function() {
+    this.__stylesheet__ = null;
+};
+__extend__(XSLTProcessor.prototype, {
+    clearParameters: function(){
+        //TODO
+    },
+    getParameter: function(nsuri, name){
+        //TODO
+    },
+    importStyleSheet: function(stylesheet){
+        this.__stylesheet__ = stylesheet;
+    },
+    removeParameter: function(nsuri, name){
+        //TODO
+    },
+    reset: function(){
+        //TODO
+    },
+    setParameter: function(nsuri, name, value){
+        //TODO
+    },
+    transformToDocument: function(sourceNode){
+        return xsltProcess(sourceNode, this.__stylesheet__);
+    },
+    transformToFragment: function(sourceNode, ownerDocument){
+        return xsltProcess(sourceNode, this.__stylesheet__).childNodes;
+    }
+});$debug(&quot;Defining Event&quot;);
 /*
 * event.js
 */</diff>
      <filename>dist/env.rhino.0.9.5.js</filename>
    </modified>
    <modified>
      <diff>@@ -2403,34 +2403,34 @@ __extend__(DOMElement.prototype, {
     }
 });
 
-/**
- * @class  DOMException - raised when an operation is impossible to perform
- * @author Jon van Noort (jon@webarcana.com.au)
- * @param  code : int - the exception code (one of the DOMException constants)
- */
-var DOMException = function(code) {
-  this.code = code;
-};
-
-// DOMException constants
-// Introduced in DOM Level 1:
-DOMException.INDEX_SIZE_ERR                 = 1;
-DOMException.DOMSTRING_SIZE_ERR             = 2;
-DOMException.HIERARCHY_REQUEST_ERR          = 3;
-DOMException.WRONG_DOCUMENT_ERR             = 4;
-DOMException.INVALID_CHARACTER_ERR          = 5;
-DOMException.NO_DATA_ALLOWED_ERR            = 6;
-DOMException.NO_MODIFICATION_ALLOWED_ERR    = 7;
-DOMException.NOT_FOUND_ERR                  = 8;
-DOMException.NOT_SUPPORTED_ERR              = 9;
-DOMException.INUSE_ATTRIBUTE_ERR            = 10;
-
-// Introduced in DOM Level 2:
-DOMException.INVALID_STATE_ERR              = 11;
-DOMException.SYNTAX_ERR                     = 12;
-DOMException.INVALID_MODIFICATION_ERR       = 13;
-DOMException.NAMESPACE_ERR                  = 14;
-DOMException.INVALID_ACCESS_ERR             = 15;
+/**
+ * @class  DOMException - raised when an operation is impossible to perform
+ * @author Jon van Noort (jon@webarcana.com.au)
+ * @param  code : int - the exception code (one of the DOMException constants)
+ */
+var DOMException = function(code) {
+  this.code = code;
+};
+
+// DOMException constants
+// Introduced in DOM Level 1:
+DOMException.INDEX_SIZE_ERR                 = 1;
+DOMException.DOMSTRING_SIZE_ERR             = 2;
+DOMException.HIERARCHY_REQUEST_ERR          = 3;
+DOMException.WRONG_DOCUMENT_ERR             = 4;
+DOMException.INVALID_CHARACTER_ERR          = 5;
+DOMException.NO_DATA_ALLOWED_ERR            = 6;
+DOMException.NO_MODIFICATION_ALLOWED_ERR    = 7;
+DOMException.NOT_FOUND_ERR                  = 8;
+DOMException.NOT_SUPPORTED_ERR              = 9;
+DOMException.INUSE_ATTRIBUTE_ERR            = 10;
+
+// Introduced in DOM Level 2:
+DOMException.INVALID_STATE_ERR              = 11;
+DOMException.SYNTAX_ERR                     = 12;
+DOMException.INVALID_MODIFICATION_ERR       = 13;
+DOMException.NAMESPACE_ERR                  = 14;
+DOMException.INVALID_ACCESS_ERR             = 15;
 $debug(&quot;Defining DocumentFragment&quot;);
 /* 
 * DocumentFragment - DOM Level 2
@@ -7336,7 +7336,130 @@ __extend__(HTMLTableRowElement.prototype, {
     
 });
 
-			$debug(&quot;Defining Event&quot;);
+			/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XMLSerializer&quot;);
+/*
+* XMLSerializer 
+*/
+$w.__defineGetter__(&quot;XMLSerializer&quot;, function(){
+    return new XMLSerializer(arguments);
+});
+
+var XMLSerializer = function() {
+
+};
+__extend__(XMLSerializer.prototype, {
+    serializeToString: function(node){
+        return node.xml;
+    }
+});/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XPathExpression&quot;);
+/*
+* XPathExpression 
+*/
+$w.__defineGetter__(&quot;XPathExpression&quot;, function(){
+    throw new Error(&quot;Object cannot be created in this context&quot;);
+});
+
+var XPathExpression = function() {};
+__extend__(XPathExpression.prototype, {
+    evaluate: function(){
+        //TODO
+    }
+});/**
+ * @author thatcher
+ */
+$debug(&quot;Defining XPathResult&quot;);
+/*
+* XPathResult 
+*/
+$w.__defineGetter__(&quot;XPathResult&quot;, function(){
+    return XPathResult;
+});
+
+var XPathResult = function() {
+    this.snapshotLentgh = 0;
+    this.stringValue = '';
+};
+
+__extend__( XPathResult, {
+    ANY_TYPE:                     0,
+    NUMBER_TYPE:                  1,
+    STRING_TYPE:                  2,
+    BOOLEAN_TYPE:                 3,
+    UNORDERED_NODE_ITERATOR_TYPE: 4,
+    ORDERED_NODEITERATOR_TYPE:    5,
+    UNORDERED_NODE_SNAPSHOT_TYPE: 6,
+    ORDERED_NODE_SNAPSHOT_TYPE:   7,
+    ANY_ORDERED_NODE_TYPE:        8,
+    FIRST_ORDERED_NODE_TYPE:      9
+});
+
+__extend__(XPathResult.prototype, {
+    get booleanValue(){
+      //TODO  
+    },
+    get invalidIteration(){
+        //TODO
+    },
+    get numberValue(){
+        //TODO
+    },
+    get resultType(){
+        //TODO
+    },
+    get singleNodeValue(){
+        //TODO
+    },
+    iterateNext: function(){
+        //TODO
+    },
+    snapshotItem: function(index){
+        //TODO
+    }
+});
+
+/**
+ * @author thatcher
+ */
+
+$w.__defineGetter__(&quot;XSLTProcessor&quot;, function(){
+    return new XSLTProcessor(arguments);
+});
+
+var XSLTProcessor = function() {
+    this.__stylesheet__ = null;
+};
+__extend__(XSLTProcessor.prototype, {
+    clearParameters: function(){
+        //TODO
+    },
+    getParameter: function(nsuri, name){
+        //TODO
+    },
+    importStyleSheet: function(stylesheet){
+        this.__stylesheet__ = stylesheet;
+    },
+    removeParameter: function(nsuri, name){
+        //TODO
+    },
+    reset: function(){
+        //TODO
+    },
+    setParameter: function(nsuri, name, value){
+        //TODO
+    },
+    transformToDocument: function(sourceNode){
+        return xsltProcess(sourceNode, this.__stylesheet__);
+    },
+    transformToFragment: function(sourceNode, ownerDocument){
+        return xsltProcess(sourceNode, this.__stylesheet__).childNodes;
+    }
+});$debug(&quot;Defining Event&quot;);
 /*
 * event.js
 */</diff>
      <filename>dist/env.rhino.js</filename>
    </modified>
    <modified>
      <diff>@@ -12,8 +12,8 @@ var Envjs = function(){
     		} else
     			Envjs[i] = arguments[1][i];
     	}
-        window.location = arguments[0];
     }
+    window.location = arguments[0];
 };
 
 /*</diff>
      <filename>src/platform/core.js</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>src/cruft.good.html</filename>
    </removed>
    <removed>
      <filename>src/xml/serializer.js</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>2993b2836b7c182df1785270f5122188d70f9a8a</id>
    </parent>
  </parents>
  <author>
    <name>thatcher</name>
    <email>thatcher.christopher@gmail.com</email>
  </author>
  <url>http://github.com/thatcher/env-js/commit/0dd3a5151d426dd455a174aaa850b77f68d96d55</url>
  <id>0dd3a5151d426dd455a174aaa850b77f68d96d55</id>
  <committed-date>2009-05-20T06:54:39-07:00</committed-date>
  <authored-date>2009-05-20T06:54:39-07:00</authored-date>
  <message>added xpath and xslt related stubs to satisfy prototype compat part of unit tests</message>
  <tree>898abbbd87cc9f6de241d1d6dd259dd8b2ce09ed</tree>
  <committer>
    <name>thatcher</name>
    <email>thatcher.christopher@gmail.com</email>
  </committer>
</commit>
