Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.253.161] |
|
Сообщ.
#1
,
|
|
|
Известно, что если мы хотим преобразовать xml-файл, имеющийся у нас "в виде файла", то нужно добавить в его начало строчку
<?xml-stylesheet type='text/xsl' href='***.xsl'?> где ***.xsl - имя файла с xslt-преобразованием. После этого, при открытии xml-файла, тот автоматически будет обработан браузером и результат увидит пользователь. Вопрос, каким образом можно осуществлять такое преобразование "на лету", имея линк, по которому доступен xml-документ (например, http://info.drweb.com/export/xml/top/ ). Я читал, что для этого используются специальные xml-парсеры (работают на сервере), например Xalan. Либо, можно использовать для этого браузер пользователя? Посоветуйте, как такое преобразование выполняется. |
Сообщ.
#2
,
|
|
|
А чего именно ты хочешь добиться?
Можно установить у себя на компе Xalan и преобразовывать xml-документы по любому линку (xsl-файл может находиться как на твоей машине, так и удаленно). Используя, опять же, Xalan можно написать сервлет, который на стороне сервера будет осуществлять преобразования по запросу броузера. А можно и апплет сделать, который будет выполенять преобразования (тоже использую классы Xalan'а) |
Сообщ.
#3
,
|
|
|
Цитата silentium @ А чего именно ты хочешь добиться? Желательно, конечно, чтоб браузер клиента выполнял такое преобразование. Но если такого нельзя, то придется преобразовывать на сервере. Насчет сервлета - с жабой не сильно дружу. Однако, нашел инфу - можно на delphi написать cgi-приложение, используя класс DOMDocument (юзает MSXML Parser 3.0). Какой вариант посчитаете лучшим? |
Сообщ.
#4
,
|
|
|
Цитата belochub @ Тогда попробуй загрузку и обработку XML документа в сценариях через методы объектов DOM. Правда, в таком случае, клиенту придется загружать и xml-документ, и xsl.Желательно, конечно, чтоб браузер клиента выполнял такое преобразование <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/> <script language="JavaScript"><!-- var source; // Входящий документ var stylesheet; // Преобразование var result; // Результат function init(){ // Инициализируем ссылку на объект входящего документа source = document.getElementById("source"); // Загружаем входящий документ (может находиться в любом месте) source.load("http://info.drweb.com/export/xml/top/") // Инициализируем ссылку на объект преобразования stylesheet = document.getElementById("stylesheet"); // Загружаем документ преобразования (может находиться в любом месте) stylesheet.load("http://silentium.pochta.ru/1.xsl"); // Получаем элемент, в который мы будем выводить результат обработки result = document.getElementById("result"); } function transform(){ strResult = source.transformNode(stylesheet); result.innerHTML = strResult; }//--> </script> </head> <body onload="init();"> <!-- Объек - входящий документ --> <object id="source" width="0" height="0" classid="clsid:f5078f32-c551-11d3-89b9-0000f81fe221"> <param name="async" value="true"> <param name="validateOnParse" value="true"> </object> <!-- Объект - документ преобразования --> <object id="stylesheet" width="0" height="0" classid="clsid:f5078f32-c551-11d3-89b9-0000f81fe221"> <param name="async" value="false"> <param name="validateOnParse" value="false"> </object> <a href="javascript:transform()">XSLT-transform</a> <div id="result"/> </body> </html> |
Сообщ.
#5
,
|
|
|
Тупо скопировал в html-файл. Открываю firefox'ом - жму на ссылку - ничего не происходит. Explorer'ом - выдает ошибку на строке
strResult = source.transformNode(stylesheet); Типа, stylesheet неправильный |
Сообщ.
#6
,
|
|
|
Цитата belochub @ У меня IE ошибки не кидает. Пропиши тогда путь к локальному xsl'ю, чтоб проверить. Explorer'ом - выдает ошибку |
Сообщ.
#7
,
|
|
|
Если перейти к локальному xsl'ю, выдает буквально следующее:
Топ- на (h.) Если еще и к локальному xml'ю - все ок - строит таблицу. В том и в другом случае firefox молчит. |