diff --git a/common/modules/util.jsm b/common/modules/util.jsm index 707362d2..b0502e15 100644 --- a/common/modules/util.jsm +++ b/common/modules/util.jsm @@ -972,14 +972,24 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]), * for *obj*. */ makeDTD: function makeDTD(obj) { - let map = { "'": "'", '"': """, "%": "%", "&": "&", "<": "<", ">": ">" }; + let map = { + "'": "'", '"': """, "%": "%", + "&": "&", "<": "<", ">": ">" + }; - return iter(obj) - .map(([k, v]) => ["]/g, - m => map[m]), - "'>"].join("")) - .join("\n"); + function escape(val) { + let isDOM = DOM.isJSONXML(val); + return String.replace(val == null ? "null" : + isDOM ? DOM.toXML(val) + : val, + isDOM ? /['%]/g + : /['"%&<>]/g, + m => map[m]); + } + + return iter(obj).map(([k, v]) => + [""].join("")) + .join("\n"); }, /**