summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/xml/Document.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/xml/Document.js')
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/xml/Document.js154
1 files changed, 154 insertions, 0 deletions
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/xml/Document.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/xml/Document.js
new file mode 100644
index 0000000000..2585b6920b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/xml/Document.js
@@ -0,0 +1,154 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * XML Document
+ *
+ * Tested with IE6, Firefox 2.0, WebKit/Safari 3.0 and Opera 9
+ *
+ * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/81f3de54-3b79-46dc-8e01-73ca2d94cdb5.asp
+ * http://developer.mozilla.org/en/docs/Parsing_and_serializing_XML
+ */
+qx.OO.defineClass("qx.xml.Document");
+
+/**
+ * Create an XML document.
+ * http://www.w3.org/TR/DOM-Level-2-Core/core.html#i-Document
+ *
+ * @param namespaceUri {String|null?null} The namespace URI of the document element to create or null.
+ * @param qualifiedName {String|null?null} The qualified name of the document element to be created or null.
+ *
+ * @return {Document} empty XML document
+ */
+qx.Class.create = function(namespaceUri, qualifiedName) {};
+
+if (document.implementation && document.implementation.createDocument) // The Mozilla style
+{
+ qx.Class.create = function(namespaceUri, qualifiedName)
+ {
+ return document.implementation.createDocument(namespaceUri || "", qualifiedName || "", null);
+ }
+}
+else if (qx.core.Client.getInstance().isMshtml()) // The Microsoft style
+{
+ qx.Class.create = function(namespaceUri, qualifiedName)
+ {
+ /*
+ According to information on the Microsoft XML Team's WebLog
+ it is recommended to check for availability of MSXML versions 6.0 and 3.0.
+ Other versions are included for completeness, 5.0 is excluded as it is
+ "off-by-default" in IE7 (which could trigger a goldbar).
+
+ http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx
+ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/aabe29a2-bad2-4cea-8387-314174252a74.asp
+
+ */
+ var vServers =
+ [
+ "MSXML2.DOMDocument.3.0",
+ "MSXML2.DOMDocument.6.0",
+ "MSXML2.DOMDocument.4.0",
+ "MSXML2.DOMDocument", // v3.0
+ "MSXML.DOMDocument", // v2.x
+ "Microsoft.XMLDOM" // v2.x
+ ];
+
+ var vObject;
+
+ for (var i=0, l=vServers.length; i<l; i++)
+ {
+
+ try
+ {
+ vObject = new ActiveXObject(vServers[i]);
+ break;
+ }
+ catch(ex)
+ {
+ vObject = null;
+ }
+ }
+ if (qualifiedName && vObject) {
+ xmlStr = new qx.util.StringBuilder();
+ xmlStr.add("<?xml version='1.0' encoding='UTF-8'?>\n<");
+ xmlStr.add(qualifiedName);
+ if (namespaceUri) {
+ xmlStr.add(" xmlns='");
+ xmlStr.add(namespaceUri);
+ xmlStr.add("'");
+ }
+ xmlStr.add(" />");
+ vObject.loadXML(xmlStr.toString());
+ }
+ return vObject;
+ };
+}
+else
+{
+ throw new Error("This browser does not support xml dom creation.");
+}
+
+
+/**
+ * The string passed in is parsed into a DOM document.
+ *
+ * @param str {String} the string to be parsed
+ * @return {Document}
+ *
+ * TODO: move to create()
+ */
+qx.Class.fromString = function(str) {};
+
+if (window.DOMParser)
+{
+ qx.Class.fromString = function(str) {
+ var dom = (new DOMParser()).parseFromString(str, "text/xml");
+ return dom;
+ };
+}
+else if (qx.core.Client.getInstance().isMshtml()) // The Microsoft style
+{
+ qx.Class.fromString = function(str) {
+ var dom = qx.xml.Document.create();
+ dom.loadXML(str);
+ return dom;
+ };
+}
+else
+{
+ throw new Error("This browser does not support xml dom creation from string.");
+}
+
+
+/**
+ * Check whether an object is a Document instance
+ *
+ * @param obj {Object} object to check
+ * @return {Boolean} whether the object is a Document instance
+ */
+qx.Class.isDocument = function(obj) {
+ return (obj.nodeType == qx.dom.Node.DOCUMENT);
+};