- From: Shane McCarron via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 09 Jul 2010 22:18:14 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2009/dap/ReSpec.js/js In directory hutz:/tmp/cvs-serv26074/js Modified Files: respec.js Log Message: Added support for outputting XHTML. Index: respec.js =================================================================== RCS file: /sources/public/2009/dap/ReSpec.js/js/respec.js,v retrieving revision 1.129 retrieving revision 1.130 diff -u -d -r1.129 -r1.130 --- respec.js 6 Jul 2010 19:39:55 -0000 1.129 +++ respec.js 9 Jul 2010 22:18:12 -0000 1.130 @@ -266,6 +266,10 @@ butH.onclick = function () { obj.hideSaveOptions(); obj.toHTML(); }; var butS = sn.element("button", {}, this.saveMenu, "Save as HTML (Source)"); butS.onclick = function () { obj.hideSaveOptions(); obj.toHTMLSource(); }; + var butS = sn.element("button", {}, this.saveMenu, "Save as XHTML"); + butS.onclick = function () { obj.hideSaveOptions(); obj.toXHTML(); }; + var butS = sn.element("button", {}, this.saveMenu, "Save as XHTML (Source)"); + butS.onclick = function () { obj.hideSaveOptions(); obj.toXHTMLSource(); }; if (this.diffTool && (this.previousDiffURI || this.previousURI) ) { var butD = sn.element("button", {}, this.saveMenu, "Diffmark"); butD.onclick = function () { obj.hideSaveOptions(); obj.toDiffHTML(); }; @@ -297,7 +301,7 @@ if (an == "xmlns" || an == "xml:lang") continue; if (an == "prefix") { prefixAtr = ats[i].value; - contine; + continue; } str += " " + an + "=\"" + this._esc(ats[i].value) + "\""; } @@ -312,6 +316,118 @@ str += "</html>"; return str; }, + + toXML: function () { + var str = "<?xml version='1.0' encoding='UTF-8'?>\n<!DOCTYPE html"; + var dt = document.doctype; + if (dt && dt.publicId) { + str += " PUBLIC '" + dt.publicId + "' '" + dt.systemId + "'"; + } + else { + if (this.doRDFa) { + // use the standard RDFa doctype + str += " PUBLIC '-//W3C//DTD XHTML+RDFa 1.0//EN' 'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd'"; + } else { + str += " PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'"; + } + } + str += ">\n"; + str += "<html"; + var ats = document.documentElement.attributes; + var prefixAtr = '' ; + + var hasxmlns = 0 ; + for (var i = 0; i < ats.length; i++) { + var an = ats[i].name; + if (an == "xmlns" ) { + hasxmlns = 1; + } + if (an == "prefix") { + prefixAtr = ats[i].value; + continue; + } + str += " " + an + "=\"" + this._esc(ats[i].value) + "\""; + } + if (!hasxmlns) { + str += ' xmlns="http://www.w3.org/1999/xhtml"'; + } + if (this.doRDFa) { + str += " xmlns:dcterms='http://purl.org/dc/terms/' xmlns:bibo='http://purl.org/ontology/bibo/' xmlns:foaf='http://xmlns.com/foaf/0.1/' xmlns:xsd='http://www.w3.org/2001/XMLSchema#'"; + if (prefixAtr != '') { + var list = prefixAtr.split(/\s+/) ; + for (var i = 0; i < list.length; i += 2) { + var n = list[i] ; + n = n.replace(/:$/,''); + str += ' xmlns:'+n+'="' + list[i+1] + '"'; + } + } + } + + str += ">\n"; + // walk the entire DOM tree grabbing nodes and emitting them - possibly modifying them + // if they need the funny closing tag + var pRef = this ; + var closers = [ "br", "img", "input", "area", "base", "basefont", "col", "isindex", "link", "meta", "param"] ; + var dumpNode = function(node) { + var out = '' ; + // if the node is the document node.. process the children + if ( node.nodeType == 9 || ( node.nodeType == 1 && node.nodeName.toLowerCase() == 'html' ) ) { + var children = node.childNodes; + var cLen = children.length ; + if (cLen) { + for (var i = 0; i < cLen; i++) { + out += dumpNode(children[i]) ; + } + } + } else + // if the node is an element, process it + if ( node.nodeType == 1 ) { + var ename = node.nodeName.toLowerCase() ; + var empty = 0 ; + for (var i = 0; i < closers.length; i++) { + if (ename == closers[i]) { + empty = 1; + } + } + out += '<' + ename ; + var attrs = node.attributes; + var aLen = attrs.length ; + if (aLen) { + for (var i = 0; i < aLen; i++) { + out += " " + attrs[i].name + "=\"" + pRef._esc(attrs[i].value) + "\""; + } + } + if (empty) { + out += ' />'; + } else { + out += '>' ; + if ( ename == 'pre' ) { + out += "\n" + node.innerHTML; + } else { + var children = node.childNodes; + var cLen = children.length ; + if (cLen) { + for (var i = 0; i < cLen; i++) { + out += dumpNode(children[i]) ; + } + } + } + out += '</' + ename + '>' ; + } + } else if (node.nodeType == 8 ) { + out += "\n<!-- " + node.nodeValue + " -->\n"; + } else { + // otherwise, return the content of the node as a string + out += node.nodeValue ; + } + return out ; + }; + var node = document.documentElement; + str += dumpNode(document.documentElement) ; + str += "</html>"; + return str; + + }, toDiffHTMLSource: function () { @@ -362,6 +478,18 @@ x.document.close(); }, + toXHTML: function () { + var x = window.open(); + x.document.write(this.toXML()) ; + x.document.close(); + }, + + toXHTMLSource: function () { + var x = window.open(); + x.document.write("<pre>" + this._esc(this.toXML()) + "</pre>"); + x.document.close(); + }, + // --- METADATA ------------------------------------------------------- extractConfig: function () { this.title = document.title;
Received on Friday, 9 July 2010 22:18:16 UTC