﻿
/***
*
* requires xml_control.js
*
*
***/

XSLTransformer = function()
{
    var xml_control = new XmlControl();

    var me = this;

    me.xml_to_str = function(xml_doc)
    {
        if (window.ActiveXObject)
        {
            return xml_doc.xml;
        }
        else
        {
            return (new XMLSerializer()).serializeToString(xml_doc);
        }
    }

    me.transform_doc = function(xml_doc, xsl_file_path)
    {
        xsl_doc = xml_control.load_xml_file(xsl_file_path);

        return me.transform(xml_doc, xsl_doc);
    }

    me.transform_str = function(xml_str, xsl_file_path)
    {
        xml_doc = xml_control.load_xml_string(xml_str);
        xsl_doc = xml_control.load_xml_file(xsl_file_path);

        return me.transform(xml_doc, xsl_doc);
    }

    me.transform = function(xml_doc, xsl_doc)
    {
        // code for IE
        if (window.ActiveXObject)
        {
            ex = xml_doc.transformNode(xsl_doc);
            return ex;
        }
        // code for Mozilla, Firefox, Opera, etc.
        else if (document.implementation && document.implementation.createDocument)
        {
            xsltProcessor = new XSLTProcessor();
            xsltProcessor.importStylesheet(xsl_doc);
            resultDocument = xsltProcessor.transformToFragment(xml_doc, document);
            return (new XMLSerializer()).serializeToString(resultDocument);
        }

        return "";
    }
}

