/* * xslt.js * * Copyright (c) 2005-2008 Johann Burkard () * * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * USE OR OTHER DEALINGS IN THE SOFTWARE. * */ /** * Constructor for client-side XSLT transformations. * * @author Johann Burkard * @version $Id: xslt.js,v 1.7 2008/08/29 21:22:55 Johann Exp $ * @constructor */ function Transformation() { var xml; var xmlDoc; var xslt; var xsltDoc; var callback = function() {}; /** * Sort of like a fix for Opera who doesn't always get readyStates right. */ var transformed = false; /** * Returns the URL of the XML document. * * @return the URL of the XML document * @type String */ this.getXml = function() { return xml; } /** * Returns the XML document. * * @return the XML document */ this.getXmlDocument = function() { return xmlDoc } /** * Sets the URL of the XML document. * * @param x the URL of the XML document * @return this * @type Transformation */ this.setXml = function(x) { xml = x; return this; } /** * Returns the URL of the XSLT document. * * @return the URL of the XSLT document * @type String */ this.getXslt = function() { return xslt; } /** * Returns the XSLT document. * * @return the XSLT document */ this.getXsltDocument = function() { return xsltDoc; } /** * Sets the URL of the XSLT document. * * @param x the URL of the XML document * @return this * @type Transformation */ this.setXslt = function(x) { xslt = x; return this; } /** * Returns the callback function. * * @return the callback function */ this.getCallback = function() { return callback; } /** * Sets the callback function * * @param c the callback function * @return this * @type Transformation */ this.setCallback = function(c) { callback = c; return this; } /** * Sets the target element to write the transformed content to and asynchronously * starts the transformation process. *

* target is the ID of an element. 2DO *

* This method may only be called after {@link #setXml} and {@link #setXslt} have * been called. *

* Note that the target element must exist once this method is called. Calling * this method before onload was fired will most likely * not work. * * @param target the ID of an element */ this.transform = function(target) { if (!browserSupportsXSLT()) { return; } var str = /^\s*