powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript. Передать параметром фрагмент XML при трансформации
11 сообщений из 11, страница 1 из 1
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455104
DymSig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые.

Делаю трансформации XML с помощью вот такой функции:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
function Transform(_xml, _xsl, _par) {
    var result;
    var xml = new ActiveXObject("MSXML2.DOMDocument.3.0");
    xml.async = false;
    xml.loadXML(_xml);

    var xsl = new ActiveXObject("MSXML2.FreeThreadedDomDocument.3.0");
    xsl.async = false;
    xsl.loadXML(_xsl);

	var templ = new ActiveXObject("MSXML2.XSLTemplate.3.0");
	templ.stylesheet = xsl.documentElement;
	var proc = templ.createProcessor();
	proc.input = xml;

	if (_par && _par.length > 0) {
		if (_par instanceof Array) { for (i in _par) { proc.addParameter("p" + i, _par[i]) } }
		else { proc.addParameter("p0", _par) }
	}

	proc.transform();
	result = proc.output;

	result = result.replace(new RegExp("[" + decodeURI("\n") + decodeURI("\r") + decodeURI("\t") + "]+", "g"), " ");
	result = result.replace(new RegExp("[ ]+", "g"), " ");

    return result;
}



Строки в параметры трансформации передаются без проблем, но передать фрагмент XML не удается.
Если в XSLT обратится к такому параметру, выдается ошибка: Ссылка на переменную или параметр "p1" должна выдавать список узлов.
Есть ли возможность в javascript передать в трансформацию фрагмент XML?
...
Рейтинг: 0 / 0
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455126
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymSig , может эта статейка тебе поможет...
https://habrahabr.ru/post/239859/

Там есть ссылки на некую библиотеку, которую рекламирует автор.
...
Рейтинг: 0 / 0
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455189
DymSig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa, спасибо за ответ.

Описанная библиотека, на мой взгляд, обладает небольшим функционалом, связанным с трансформациями. Не увидел там вообще возможность передачи параметра в трансформацию. Основной упор на кроссбраузерность, что в моем случае не принципиально, так как целевой браузер строго IE.
...
Рейтинг: 0 / 0
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455212
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymSigНе увидел там вообще возможность передачи параметра в трансформацию.
Я встречал "примеры" где параметром трансформации была JS-функция... Она то и возвращала тот xml.
Правда оговаривалось, что это сильно зависит от "обработчика" той трансформации. Т.к. они по-разному синтаксически оформляются и работают.
...
Рейтинг: 0 / 0
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455213
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymSigЕсли в XSLT обратится к такому параметру, выдается ошибка: Ссылка на переменную или параметр "p1" должна выдавать список узлов.сначала нужно превратить строку из p1 в список узлов, в xslt есть для этого функция, забыл название.
...
Рейтинг: 0 / 0
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455218
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще есть полезная функция document . если этот фрагмент xml можно вернуть запросом с сервера, то можно в document подставить ссылку.
...
Рейтинг: 0 / 0
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455220
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyDymSigЕсли в XSLT обратится к такому параметру, выдается ошибка: Ссылка на переменную или параметр "p1" должна выдавать список узлов.сначала нужно превратить строку из p1 в список узлов, в xslt есть для этого функция, забыл название.а, вот она

https://msdn.microsoft.com/en-us/library/ms256197(v=vs.110).aspx
...
Рейтинг: 0 / 0
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455222
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вот "пример" нашел...
http://xmlhack.ru/forum/xml/topic865.html
...
Рейтинг: 0 / 0
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455857
DymSig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

Функция node-set позволяет преобразовать фрагмент результирующего дерева в набор узлов. Я попробовал, строку преобразовать в набор узлов node-set отказался... :(
...
Рейтинг: 0 / 0
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455898
DymSig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa, спасибо, что напомнили про встраиваемые в XSLT скрипты. Нельзя сказать, что красиво, но по-моему получилось то, что нужно:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:user="urn:user-scripts"
    exclude-result-prefixes="msxsl user">

    <msxsl:script language="JavaScript" implements-prefix="user">
        <![CDATA[ 
             function xml(nodes){  
                var xml = new ActiveXObject("MSXML2.DOMDocument.3.0");
                xml.loadXML(nodes);
                return xml.documentElement; 
                } 
         ]]>
    </msxsl:script>

    <xsl:param name="p0" />
    <xsl:variable name="param" select="user:xml($p0)" />

    <xsl:template match="/">
        <xsl:for-each select="$param/ROW">
            <div>
                <xsl:value-of select="FIO"/>
            </div>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>
...
Рейтинг: 0 / 0
JavaScript. Передать параметром фрагмент XML при трансформации
    #39455968
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymSigпо-моему получилось то, что нужно
Уже хорошо...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript. Передать параметром фрагмент XML при трансформации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]