Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XSLT Трансформация, FIREFOX ? 
V
    Опции темы
t77
  Дата 15.7.2010, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Код

[object XMLDocument]


Добавлено через 3 минуты и 58 секунд
а вот что получаем в Internet Explorer:
Код

[object]

PM MAIL   Вверх
Amphiluke
Дата 15.7.2010, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Ясно. Стало быть, ваш объект stepObj не документ XML, а какая-то его нода?

Меня просто заинтересовала эта строчка:
Цитата(t77 @  15.7.2010,  15:11 Найти цитируемый пост)
Код

xmldoc = stepObj.ownerDocument;

и ее сакраментальный смысл. smile
PM   Вверх
t77
  Дата 15.7.2010, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Amphiluke,
ну..., и что это значит ? smile 
PM MAIL   Вверх
Amphiluke
Дата 15.7.2010, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Ничего. smile 

Я по вашим словам сначала понял, что stepObj — это непосредственно сам документ XML. Однако свойство ownerDocument таких объектов (Document) равно null. Если бы это было так, то происхождение ошибки при вызове transformToFragment сразу стало бы очевидным. А так... все в порядке. smile
PM   Вверх
t77
  Дата 15.7.2010, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



У меня такое ощущение, что где то я запорол в синтаксисе а где не могу понять.
Исходя из того, что код для IE работает, думаю по строчке разобрать его и перенести его в код для FF.
Первый этап это загрузка xml в объект
код для IE:
Код

xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.async = false;
xmldoc.loadXML(stepObj.xml);

код для FF:
Код

var docElem = stepObj.firstChild;
        
        while(docElem) 
        {
            if (docElem.nodeType == 1) 
                break;
                
            docElem = docElem.nextSibling;
        }
        
        var xmldoc = document.implementation.createDocument("", "", null);
        
        if (docElem) 
            xmldoc.appendChild(xmldoc.importNode(docElem, true));

Второй этап создание объекта xsl и загрузка xsl
код для IE:
Код

var xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0");
        
        // load the xsl
        var xslObj = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
        xslObj.async = false;        
        var xslName = "clientXSL.xsl";
        xslObj.load(xslLocation + xslName);

        xslt.stylesheet = xslObj;

код для FF:
Код

//xsl name
        var xslName = xslLocation +"clientXSL.xsl";        
        // load the xslt file
        var myXMLHTTPRequest = new XMLHttpRequest(); 
        myXMLHTTPRequest.open("GET", xslName, false);
        myXMLHTTPRequest.send(null);
        var xslStylesheet = myXMLHTTPRequest.responseXML;
                        
        //Create the XSLT processor
        var xsltProcessor = new XSLTProcessor(); 
        xsltProcessor.importStylesheet(xslStylesheet);

Третий этап добавляем параметры и трансформация
код для IE:
Код

xslProc = xslt.createProcessor();
xslProc.addParameter("urlLocation", urlLocation);
xslProc.addParameter("sysDirection", "left");
xslProc.input = xmldoc;
        
xslProc.transform();
var tempDiv = document.createElement("DIV");
tempDiv.innerHTML = xslProc.output;

код для FF:
Код

xsltProcessor.setParameter("urlLocation", urlLocation, "");
xsltProcessor.setParameter("sysDirection", "left", "");

var tempDiv = document.createElement("DIV");
tempDiv.appendChild(xsltProcessor.transformToFragment(xmldoc, document));

Что то мне не очень нравятся первые два этапа... Посмотрите пожалуйста, все ли сделано правильно для FF. 
Имеются ли альтернативные методы для реализации первых двух этапов??

PM MAIL   Вверх
Amphiluke
Дата 15.7.2010, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



t77, что-то вы меня запутали. Какой код вы реально используете для создания xmldoc? Тот, который вы привели сейчас, я написал в предположении внедренного ХML. Вы сказали, что это не так, поэтому использовать этот код надо с осторожностью. Вы рискуете потерять documentElement. Ведь у вас изначально был код 
Код

xmldoc = stepObj.ownerDocument;

Сейчас вы его выбросили?


По поводу этапов два и три, уже проверял. У меня работает нормально. smile
PM   Вверх
t77
  Дата 15.7.2010, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Я сам немного запутался smile 
Вы правы изначально я использовал в первом этапе код:
Код

xmldoc = stepObj.ownerDocument;


Затем, после разных попыток оставил, предложенный вами вариант:
Код

var docElem = stepObj.firstChild;
        
        while(docElem) 
        {
            if (docElem.nodeType == 1) 
                break;
                
            docElem = docElem.nextSibling;
        }
        
        var xmldoc = document.implementation.createDocument("", "", null);
        
        if (docElem) 
            xmldoc.appendChild(xmldoc.importNode(docElem, true));



Как вы думаете, что правильней использовать и почему?
И еще, скажите пожалуйста вас не смущает во втором и третьем этапах создание и загрузка xsltProcessor-а ?
Как видно из примеров для кода IE сначала загружается xsl и лишь на третьем этапе создается xsltProcessor, для добавления параметров.
А для кода FF, немного другая последовательность действий.
Как вы думаете, может проблема именно в этом ??
PM MAIL   Вверх
t77
  Дата 19.7.2010, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Проблема решена!  smile 
Тема закрыта.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.