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');
+ +}
+