powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Запрос значения до запуска файла
10 сообщений из 10, страница 1 из 1
Запрос значения до запуска файла
    #34324037
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет еще раз.
Возникла еще одна проблемка, может кто сталкивался
Как в xsl написать внешний запрос на запоминание значения.
Типа запускаем xsl документ а он и выдает сообщение "введите допустим номер фазы: 1, 2 , или A (#all)"
нажимаем соответсвенно 1,2 или А и все продолжается как обычно
Есть ли в xsl команды внешнего запроса. или это как то можно сделать по другому,
на пример в запускном файле выдавать такое сообщение, а затем в виде параметра передовать xsl документу
...
Рейтинг: 0 / 0
Запрос значения до запуска файла
    #34326611
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обычно. Предоставляй свою функцию джаваскриптовому движку, которую тот будет вызывать.
...
Рейтинг: 0 / 0
Запрос значения до запуска файла
    #34326614
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или самому хслт-процессору
...
Рейтинг: 0 / 0
Запрос значения до запуска файла
    #34361012
Roamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А поподробнее можно? Как передать "самому хслт-процессору" результат выбора пользователя из, скажем, комбобокса?
...
Рейтинг: 0 / 0
Запрос значения до запуска файла
    #34361110
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IXSLProcessor.addParameter
...
Рейтинг: 0 / 0
Запрос значения до запуска файла
    #34361823
Roamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А без использования XMLDOM (средствами самого xslt) - никак?
...
Рейтинг: 0 / 0
Запрос значения до запуска файла
    #34362460
SuSanin_nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:) тема получила развитие,
я пошел немного другим путем, почитать можно вот сдесь
http://www.sql.ru/forum/actualthread.aspx?tid=395380
Так я запрашивал значения от пользователя до обработки,
а внутри xsl описал xsl:param с именами этих переменных , элементами верхнего уровня
Таким макаром я смог реализовать запрос на фазу в парсере не имеющей графической оболочки
...
Рейтинг: 0 / 0
Запрос значения до запуска файла
    #34363095
Roamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел один пример реализации, но в нем не фигурирует упомянутый уважаемым maXmo IXSLProcessor
Код: plaintext
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
function getCookie(cookieName)
{
// declare the local variables
var cookieIndexOne, cookieIndexTwo;
// attempt to locate the passed cookie
cookieIndexOne = document.cookie.indexOf(cookieName);
cookieIndexTwo = document.cookie.indexOf(";", cookieIndexOne +
cookieName.length +  1 );
// if the passed cookie is the last one in the string, continue
if (!(cookieIndexOne == - 1 ) && (cookieIndexTwo == - 1 ))
// set the end of the cookie value to the end of the string
cookieIndexTwo = document.cookie.length;
// if the passed cookie value cannot be located, return a default result
if ((cookieIndexOne == - 1 ) || (cookieIndexTwo == - 1 ) ||
(unescape(document.cookie.substring(cookieIndexOne + cookieName.length +  1 ,
cookieIndexTwo)) == ""))
return "All"
// otherwise, return the passed cookie's value
else
return unescape(document.cookie.substring(cookieIndexOne + cookieName.length
+  1 , cookieIndexTwo));
}

Below is the code used in the HTML document that processes the XSL spreadsheet:

function transformXML(xmlDocURL, xslDocURL, divID)
{
// declare the local variables
var xmlDoc, xslDoc, docProcessor, docCache, DocRequest, docFragment;
// try the following
try
{
// instantiate and load the xml document
xmlDoc = new ActiveXObject("MSXML2.DOMDocument");
xmlDoc.async = false;
xmlDoc.load(xmlDocURL);
// instantiate and load the xsl document
xslDoc = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
xslDoc.async = false;
xslDoc.load(xslDocURL);
// prepare the xsl document for transformation
docCache = new ActiveXObject("MSXML2.XSLTemplate");
docCache.stylesheet = xslDoc;
// instantiate the document processor and submit the xml document
docProcessor = docCache.createProcessor();
docProcessor.input = xmlDoc;
// add parameters to the xsl document
docProcessor.addParameter("book", getCookie("book"), "");
docProcessor.addParameter("category", getCookie("category"), "");
docProcessor.addParameter("keyword", getCookie("keyword"), "");
docProcessor.addParameter("sort", getCookie("sort"), "");
docProcessor.addParameter("status", getCookie("status"), "");
docProcessor.addParameter("topic", getCookie("topic"), "");
docProcessor.addParameter("view", getCookie("view"), "");
// process the documents into html and submit to the passed div to the HMTL page
docProcessor.transform();
// divID.innerHTML = docProcessor.output;
document.getElementById(divID).innerHTML = docProcessor.output;
}
// catch any errors from the above code
catch(e)
{
// try the following
try
{
// instantiate and load the xml document
docRequest = new XMLHttpRequest();
docRequest.open("GET", xmlDocURL, false);
docRequest.send(null);
xmlDoc = docRequest.responseXML;
// instantiate and load the xsl document
docRequest = new XMLHttpRequest();
docRequest.open("GET", xslDocURL, false);
docRequest.send(null);
xslDoc = docRequest.responseXML;
// instantiate the document processor and submit the xsl document
docProcessor = new XSLTProcessor();
docProcessor.importStylesheet(xslDoc);
// add parameters to the xsl document
docProcessor.setParameter(null, "book", getCookie("book"));
docProcessor.setParameter(null, "category", getCookie("category"));
docProcessor.setParameter(null, "keyword", getCookie("keyword"));
docProcessor.setParameter(null, "sort", getCookie("sort"));
docProcessor.setParameter(null, "status", getCookie("status"));
docProcessor.setParameter(null, "topic", getCookie("topic"));
docProcessor.setParameter(null, "view", getCookie("view"));
// clear the passed div if anything was in it
document.getElementById(divID).innerHTML = "";
// process the documents into html and submit to the passed div to the HMTL page
docFragment = docProcessor.transformToFragment(xmlDoc, document);
document.getElementById(divID).appendChild(docFragment);
}
// catch any errors from the above code
catch(e)
{
// do nothing
}
}
}

Below is the code used in the XSL spreadsheet that declares the parameters being passed:

<xsl:param name="book" />
<xsl:param name="category" />
<xsl:param name="keyword" />
<xsl:param name="sort" />
<xsl:param name="status" />
<xsl:param name="topic" />
<xsl:param name="view" />

И вообще - смущает жесткая привязка к конкретным реализациям XSLT-процессору. :(

Поэтому-то и интересно - нельзя ли передавать внешние параметры в xslt без ручного применения transform() (или transformToFragment() ) и вообще без использования DOM? Ну к примеру, чтобы xslt сам читал куки (путем вставки в него Ява-Скрипта) и в зависимости от них по-разному обрабатывал XML-файл? :)
...
Рейтинг: 0 / 0
Запрос значения до запуска файла
    #34363822
Zorrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можешь хоть на c# обучить его считывать что угодно и откуда угодно.
У меня xslt из 10 файлов собирает результат. просто трансформ делаешь на мелкий файлик.
...
Рейтинг: 0 / 0
Запрос значения до запуска файла
    #34364453
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RoamerА без использования XMLDOM (средствами самого xslt) - никак?да вроде можно присваивать параметру какое хочешь значение: <xsl:param name="myparam" select="3"/> – и значение параметра будет равно трём.

RoamerНашел один пример реализации, но в нем не фигурирует упомянутый уважаемым maXmo IXSLProcessor
Код: plaintext
docProcessor = docCache.createProcessor();
нюню, вот и почитай, объект с каким интерфейсом возвращает функция createProcessor.

RoamerПоэтому-то и интересно - нельзя ли передавать внешние параметры в xslt без ручного применения transform() (или transformToFragment() ) и вообще без использования DOM? Ну к примеру, чтобы xslt сам читал куки (путем вставки в него Ява-Скрипта) и в зависимости от них по-разному обрабатывал XML-файл? :)тебе нужно решение? Какие проблемы? Напиши.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Запрос значения до запуска файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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