![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Доброе время суток.
Необходимо сделать трансформацию в ЙС следующим путем: 1. Загрузить ХМЛ документ 2. Загрузить ХСЛ документ 3. Сделать трансформацию 4. Закинуть результат в элемент DIV. Дело в том, что код для IE работает, а для Firefox-а нет! Поэтому привожу вашему вниманию код для Firefox-а:
Мозила ругается на строку 33 Почему не получается сделать трансформацию? Что я делаю не так? Пожалуйста помогите! |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
?? |
|||
|
||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Amphiluke, я проделал следующую вещь:
уже в первой строке вылетает и ругается срашным матом. |
|||
|
||||
| Amphiluke |
|
||||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Нет возможности проверить, что там за ругань, но на первый взгляд хз, где спрятался баг. Вы смотрели консоль? Али там невнятно написано (что, правда мат?
Только все же почему вы присваиваете результат, возвращаемый методом transformToFragment свойству innerHTML? Это же, вообще говоря, разные вещи. innerHTML имеет строковый тип, а transformToFragment возвращает объект DocumentFragment. Поэтому нужно (вроде как) пользоваться методами типа appendChild, а не пихать результат в innerHTML. Впрочем, проверьте, я могу ошибаться. Добавлено через 11 минут и 20 секунд И еще немного неясен смысл этих манипуляций:
создали XML-документ и тут же забыли про него, перезаписав переменную. Зачем создавали? |
||||
|
|||||
| t77 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Ну вообщето мне необходимо результат трансформации закинуть в мой Div. Дело в том, что именно так делается для браузера Internet Explorer. Представте себе там это работает!
Объект - stepObj я получаю как параметр из функции- XSLTTransformation. А про него не забыли! Как раз в той строке, где пытаюсь сделать трансформацию, именно этот объект я передаю. |
||||
|
|||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: нет Всего: 31 |
В свое время испытал много проблем с XSLT в браузерах.. Кривая это технология.
Что бы хоть как - то уменьшить проблем с переносимостью, советую использовать какую-либо JS обертку, например Sarissa Это сообщение отредактировал(а) sir_nuf_nuf - 15.7.2010, 09:38 |
|||
|
||||
| Amphiluke |
|
||||||||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
В первом посте вы сами заявили: говорим о FF. Сейчас проверил еще раз: да, здесь нельзя использовать innerHTML, как в IE, а нужно добавлять содержимое методами insertBefore, appendChild или подобными. Если вы присвоете результат, возвращенный методом transformToFragment, свойству innerHTML, то и получите в своем div'е одну строку: [object DocumentFragment].
Ну да, как же. Я говорю, что бессмысленно было писать эту строку:
если в следующей строке вы просто-напросто перезаписываете заново переменную xmldoc, забывая результат, возвращенный методом createDocument. |
||||||||
|
|||||||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Мозги закипают
Привожу вашему вниманию два варианта одного и того же кода. Первый для ИЕ а второй для Firefox. Где первый вариант работает а второй вариант, тот, что для Firefox-а нет!
Помогите мне пожалуйста сделать то же самое, чтобы работало и в Firefox. Не хочет работать! Как мне это сделать ? |
|||
|
||||
| Amphiluke |
|
||||||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Блин.
Вот пример, адаптированный из учебника для вашего кода. Я так и не добился от вас, что за ошибка вызывает «страшный мат» у FF. Поэтому проверьте просто, будет ли работать у вас хотя бы это. У меня работает! Если у вас — нет, то хз. myXSLFile.xsl
myXMLFile.xml
Главная (оставил только код для FF, раз с IE проблем нет)
Это сообщение отредактировал(а) Amphiluke - 15.7.2010, 12:30 |
||||||
|
|||||||
| t77 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
ваш код у меня работает с условием, что xml файл находится в отдельном файле. Тоесть создав три файла как вы здесь показываете все работает!!!
Но у меня в коде, в аппликации, где я получаю xml документ из объекта xslObj, не работает! Может я неправильно считываю xml из объекта?? Скажите пожалуйста как заменить строки:
для браузера Firefox ?? P.S. Даже не знаю, что и думать... А может быть, что для Файрфокса имеется другой синтакс ХСЛ ?? Добавлено через 10 минут и 57 секунд Что же касается ошибки, которую я получаю при трансформации:
|
||||
|
|||||
| Amphiluke |
|
||||||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Ну вы же сами, вроде, где-то в каких-то темах недавних уже писали это.
Что-то вот этого я не понял. Какие-то слова незнакомые. Так что-ль?
|
||||||
|
|||||||
| t77 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Нет, нет, никакого встроеного в HTML-страницу xml-а нет. Объект stepObj.xml ,является XML документом, с помощью которго проделывается трансформация.
Нет, не работает все равно. Получаю то же самое исключение, что и раньше
|
||||||
|
|||||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
||||
|
||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Amphiluke, да действительно он передается функции XSLTTransformation как параметр. Данную функцию заряжает объектом stepObj, другая функция и так далее. Тот же объект как вы видите из вышеприведенного мною примера используется в коде для IE. И без каких либо проблем проделовается трансформация и все красиво работает. Исходя из этого не думаю, что проблема в данном объекте. Проверяю содержание объекта в обоих случаях, и при запуске кода в ИЕ и при запуске ФФ. Содержание и структура объекта stepObj идентичны. |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
t77, если не сложно, выполните, please, перед вызовом метода transformToFragment этот alert:
и покажите здесь, что написалось. |
|||
|
||||
| t77 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Добавлено через 3 минуты и 58 секунд а вот что получаем в Internet Explorer:
|
||||
|
|||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
||||
|
||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Amphiluke,
ну..., и что это значит ? |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Ничего.
Я по вашим словам сначала понял, что stepObj — это непосредственно сам документ XML. Однако свойство ownerDocument таких объектов (Document) равно null. Если бы это было так, то происхождение ошибки при вызове transformToFragment сразу стало бы очевидным. А так... все в порядке. |
|||
|
||||
| t77 |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
У меня такое ощущение, что где то я запорол в синтаксисе а где не могу понять.
Исходя из того, что код для IE работает, думаю по строчке разобрать его и перенести его в код для FF. Первый этап это загрузка xml в объект код для IE:
код для FF:
Второй этап создание объекта xsl и загрузка xsl код для IE:
код для FF:
Третий этап добавляем параметры и трансформация код для IE:
код для FF:
Что то мне не очень нравятся первые два этапа... Посмотрите пожалуйста, все ли сделано правильно для FF. Имеются ли альтернативные методы для реализации первых двух этапов?? |
||||||||||||
|
|||||||||||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
t77, что-то вы меня запутали. Какой код вы реально используете для создания xmldoc? Тот, который вы привели сейчас, я написал в предположении внедренного ХML. Вы сказали, что это не так, поэтому использовать этот код надо с осторожностью. Вы рискуете потерять documentElement. Ведь у вас изначально был код
Сейчас вы его выбросили? По поводу этапов два и три, уже проверял. У меня работает нормально. |
|||
|
||||
| t77 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Я сам немного запутался
Вы правы изначально я использовал в первом этапе код:
Затем, после разных попыток оставил, предложенный вами вариант:
Как вы думаете, что правильней использовать и почему? И еще, скажите пожалуйста вас не смущает во втором и третьем этапах создание и загрузка xsltProcessor-а ? Как видно из примеров для кода IE сначала загружается xsl и лишь на третьем этапе создается xsltProcessor, для добавления параметров. А для кода FF, немного другая последовательность действий. Как вы думаете, может проблема именно в этом ?? |
||||
|
|||||
| t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Проблема решена!
Тема закрыта. |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |