Dietrich Streifert schrieb:
Yes but the former version has it's own code for selectNodes. This code is now in QxXmlExtras.js so we don't need the code anymore in the example.

ok, the xmls does not have changed or have they?

Sebastian


Sebastian Werner schrieb:

Dietrich Streifert schrieb:

So don't forget to add the example which uses the emulation.

Here it is again.

Is there someone who knows how this can be implemented for Opera 9 (Preview) which has xpath support?


The example is already in.

Sebastian


I even did not found any documentation about operas support for xpath.

Regards.

Sebastian Werner schrieb:

Dietrich Streifert schrieb:

Well after digging a little bit more in my brain and my code snippet treasure chest I found that I originally read this code in the ActiveWidget support forum.

So I asked Alex (the author) if I can use the (rewritten and modified) code part for donating it to a LGPL project and he allowed it. Here is my post in the support forum:

http://www.activewidgets.com/javascript.forum.9267.4/question-on-reusing-code-of.html

And of course after digging a little bit more on this I found some improvements and a hint that the syntax with the getter modifier for the function is deprecated (the .__getter__ method should be used). So here is the latest and greatest diff:

After having a detailed look at the XPathEvaluator implementation of mozilla/gecko and the getter/setter interface I think we can asume that this is common knowledge and nothing worth to be copyrighted.



wow cool. I have just committed your patch to CVS.

Sebastian




Dietrich Streifert schrieb:

Its derived from

http://km0ti0n.blunted.co.uk/mozxpath/mozxpath.js

which is distributed under the following license:

http://creativecommons.org/licenses/by-sa/2.5/


The idea of implementing a getter for attributes, elements and textnodes is from:

http://www.webfx.nu/dhtml/mozInnerHTML/mozInnerHtml.html


Yes, maybe here are some copyright glitches? :-( Maybe I have to ask the authors. Please wait with applying the patch.

Sorry for the inconveniance.

Regards



Sebastian Werner schrieb:

Dietrich Streifert schrieb:

Here is a better patch which does not acces the text property/attribute of nodes but implements getter methods for the text property:

This is a diff against QxXmlExtras.js in cvs renderer branch.





Is this patch usable to get committed to the qooxdoo cvs? What is the copyright stuff of this lines?

Sebastian



Dietrich Streifert schrieb:

Hello List!


if someone needs this: Gecko/Mozilla has no implementation of the simple to handle xpath node selection methods selectNodes and selectSingleNode (which are InternetExplorerer proprietary) for Element and Document object. Here is the Implementation built as patch for QxXmlExtras.


A little tutorial for the usage is:


selectNodes: http://www.webreference.com/js/tips/020309.html
selectSingleNode: http://www.webreference.com/js/tips/020310.html


------------------------------------------------------------------------

--- source/script/binding/QxXmlExtras.js.orig 2005-11-29 09:12:47.100690000 +0100 +++ source/script/binding/QxXmlExtras.js 2005-11-29 18:44:50.191349000 +0100
@@ -105,3 +105,60 @@
throw new Error("This browser does not support xml dom creation.");
 };
+
+// Implementation of selectNodes() and selectSingleNode()
+// for Gecko/Mozilla browsers
+if (window.XPathEvaluator) {
+
+  var xpath = new XPathEvaluator();
+
+  // if (!Element.prototype.selectSingleNode) {
+    Element.prototype.selectSingleNode = function (path) {
+ return xpath.evaluate(path, this, this.ownerDocument._ns, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+    };
+  //}
+  +  // if (!Element.prototype.selectNodes) {
+    Element.prototype.selectNodes = function (path) {
+ var result = xpath.evaluate(path, this, this.ownerDocument._ns, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+      var i, nodes = [];
+  +      for (i=0; i<result.snapshotLength; i++) {
+        nodes[i] = result.snapshotItem(i);
+      };
+  +      return nodes;
+    };
+  // }
+  +  // if (!Document.prototype.selectSingleNode) {
+    Document.prototype.selectSingleNode = function (path) {
+ return xpath.evaluate(path, this, this._ns, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+    };
+  // }
+  +  // if (!Document.prototype.selectNodes) {
+    Document.prototype.selectNodes = function (path) {
+ var result = xpath.evaluate(path, this, this._ns, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+      var i, nodes = [];
+
+      for (i=0; i<result.snapshotLength; i++) {
+        nodes[i] = result.snapshotItem(i);
+      };
+      +      return nodes;
+    };
+  // }
+
+  Element.prototype.text getter = function(){
+ var i, a=[], nodes = this.childNodes, length = nodes.length;
+        for (i=0; i<length; i++) {
+          a[i] = nodes[i].text
+        };
+        return a.join("");
+    };
+
+  Attr.prototype.text getter = function(){return this.nodeValue};
+  Text.prototype.text getter = function(){return this.nodeValue};
+}
+







-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
Qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel







------------------------------------------------------------------------

--- source/script/binding/QxXmlExtras.js.orig Tue Nov 29 09:12:47 2005
+++ source/script/binding/QxXmlExtras.js    Wed Nov 30 16:20:25 2005
@@ -105,3 +105,69 @@
throw new Error("This browser does not support xml dom creation.");
 };
+
+// Implementation of selectNodes() and selectSingleNode()
+// for Gecko/Mozilla browsers
+
+if (window.XPathEvaluator) {
+
+  var xpe = new XPathEvaluator();
+
+  if (!Element.prototype.selectSingleNode) {
+    Element.prototype.selectSingleNode = function (xpath) {
+ return xpe.evaluate(xpath, this, xpe.createNSResolver(this), XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+    };
+  }
+  +  if (!Element.prototype.selectNodes) {
+    Element.prototype.selectNodes = function (xpath) {
+ var result = xpe.evaluate(xpath, this, xpe.createNSResolver(this), XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+      var nodes = [];
+  +      for (var i=0; i<result.snapshotLength; i++) {
+        nodes[i] = result.snapshotItem(i);
+      };
+  +      return nodes;
+    };
+  }
+  +  if (!Document.prototype.selectSingleNode) {
+    Document.prototype.selectSingleNode = function (xpath) {
+ return xpe.evaluate(xpath, this, xpe.createNSResolver(this), XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+    };
+  }
+  +  if (!Document.prototype.selectNodes) {
+    Document.prototype.selectNodes = function (xpath) {
+ var result = xpe.evaluate(xpath, this, xpe.createNSResolver(this), XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+      var nodes = [];
+
+      for (var i=0; i<result.snapshotLength; i++) {
+        nodes[i] = result.snapshotItem(i);
+      };
+      +      return nodes;
+    };
+  }
+
+  Element.prototype.__defineGetter__('text',
+    function() {
+      var text = '';
+      for (var i=0; i<this.childNodes.length; i++) {
+ text += this.childNodes[i].text != null ? this.childNodes[i].text : '';
+      };
+      return text;
+    }
+  );
+  +  Element.prototype.__lookupGetter__('text');
+
+ Attr.prototype.__defineGetter__('text', function(){return this.nodeValue});
+  Attr.prototype.__lookupGetter__('text');
+
+ Text.prototype.__defineGetter__('text', function(){return this.nodeValue});
+  Text.prototype.__lookupGetter__('text');
+  +}
+





-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
Qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel




------------------------------------------------------------------------

Test for QxXmlHttpLoader, QxWindow, QxList and xpath.


------------------------------------------------------------------------

<?xml version="1.0" encoding="ISO-8859-15"?>
<data>
    <item>Jenny</item>
    <item>Carol</item>
    <item>Anna</item>
    <item>Jona</item>
</data>


------------------------------------------------------------------------

<?xml version="1.0" encoding="ISO-8859-15"?>
<data>
    <item>Peter</item>
    <item>Will</item>
    <item>Karl</item>
    <item>John</item>
</data>




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
Qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel





-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
Qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to