Тема: XSLT + AJAX
Показать сообщение отдельно
  #2 (permalink)  
Старый 28.11.2008, 09:37
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Делалось дааавноооо, так что не суди строго
var IE = (window.ActiveXObject) ? 1 : 0;
var NN = (window.XMLHttpRequest) ? 1 : 0;
 
var XMLdoc = new Object();
XMLdoc.loadFromFile = function (xml_name,xsl_name)
{
  if (IE)
  {
    var xml = new ActiveXObject('Microsoft.XMLDOM');
    var xsl = new ActiveXObject('Microsoft.XMLDOM');
    xml.async = false;
    xsl.async = false;
    xsl.load(xsl_name);
    xml.load(xml_name);
    this.html=xml.transformNode(xsl);
  }
  else if (NN)
  {
    var xsltProcessor = new XSLTProcessor();
    var myXMLHTTPRequest = new XMLHttpRequest();
    myXMLHTTPRequest.open('GET',xsl_name,false);
    myXMLHTTPRequest.send(null);
    var xslStylesheet = myXMLHTTPRequest.responseXML;
    xsltProcessor.importStylesheet(xslStylesheet);
    myXMLHTTPRequest = new XMLHttpRequest();
    myXMLHTTPRequest.open('GET',xml_name,false);
    myXMLHTTPRequest.send(null);
    var xml = myXMLHTTPRequest.responseXML;
    var fragment = xsltProcessor.transformToFragment(xml,document);
    var xmlser = new XMLSerializer();
    this.html = xmlser.serializeToString(fragment);
  }
}

XMLdoc.loadFromString = function (string,xsl_name)
{
  if (IE)
  {
    var xml = new ActiveXObject('Microsoft.XMLDOM');
    var xsl = new ActiveXObject('Microsoft.XMLDOM');
    xml.async = false;
    xsl.async = false;
    xsl.load(xsl_name);
    xml.loadXML(string);
    this.html=xml.transformNode(xsl);
  }
  else if (NN)
  {
    var xsltProcessor = new XSLTProcessor();
    var parser = new DOMParser();
    var myXMLHTTPRequest = new XMLHttpRequest();
    myXMLHTTPRequest.open('GET',xsl_name,false);
    myXMLHTTPRequest.send(null);
    var xslStylesheet = myXMLHTTPRequest.responseXML;
    xsltProcessor.importStylesheet(xslStylesheet);
    var xml = parser.parseFromString(string,'text/xml');
    var fragment = xsltProcessor.transformToFragment(xml, document);
    var xmlser = new XMLSerializer();
    this.html = xmlser.serializeToString(fragment);
  }
}

  XMLdoc.loadFromString(document.getElementById('mytxt').value,document.getElementById('myxsl').value);
  document.getElementById('main').innerHTML=XMLdoc.html;
Ответить с цитированием