From 0bdebbd64cf17b85c47cbf30e6176c3eafe60715 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adomas=20Ven=C4=8Dkauskas?= Date: Wed, 31 Oct 2018 14:01:11 +0200 Subject: [PATCH] Revert "Remove old style conversion code" We got multiple requests from users that use custom 0.8 styles so we'll have to keep this code for now This reverts commit a59ce2c343ee5aacdb5f731d7264a0e9273a2f70. --- chrome/content/zotero/xpcom/style.js | 30 +++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/chrome/content/zotero/xpcom/style.js b/chrome/content/zotero/xpcom/style.js index 9cfc7efe7b..a65b949eab 100644 --- a/chrome/content/zotero/xpcom/style.js +++ b/chrome/content/zotero/xpcom/style.js @@ -713,7 +713,35 @@ Zotero.Style.prototype.getCiteProc = function(locale, automaticJournalAbbreviati } else { var version = this._version; } - var xml = this.getXML(); + + if(version === "0.8") { + // get XSLT processor from updateCSL.xsl file + if(!Zotero.Styles.xsltProcessor) { + let protHandler = Components.classes["@mozilla.org/network/protocol;1?name=chrome"] + .createInstance(Components.interfaces.nsIProtocolHandler); + let channel = protHandler.newChannel(protHandler.newURI("chrome://zotero/content/updateCSL.xsl", "UTF-8", null)); + let updateXSLT = Components.classes["@mozilla.org/xmlextras/domparser;1"] + .createInstance(Components.interfaces.nsIDOMParser) + .parseFromStream(channel.open(), "UTF-8", channel.contentLength, "application/xml"); + + // load XSLT file into XSLTProcessor + Zotero.Styles.xsltProcessor = Components.classes["@mozilla.org/document-transformer;1?type=xslt"] + .createInstance(Components.interfaces.nsIXSLTProcessor); + Zotero.Styles.xsltProcessor.importStylesheet(updateXSLT); + } + + // read style file as DOM XML + let styleDOMXML = Components.classes["@mozilla.org/xmlextras/domparser;1"] + .createInstance(Components.interfaces.nsIDOMParser) + .parseFromString(this.getXML(), "text/xml"); + + // apply XSLT and serialize output + let newDOMXML = Zotero.Styles.xsltProcessor.transformToDocument(styleDOMXML); + var xml = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"] + .createInstance(Components.interfaces.nsIDOMSerializer).serializeToString(newDOMXML); + } else { + var xml = this.getXML(); + } try { var citeproc = new Zotero.CiteProc.CSL.Engine(