Мне нужно написать xsl — stylesheet, которая могла бы сравнивать 2 xml файла с одинаковой структурой.
Для заказчика важно использование пространства имен http://www.w3.org/TR/WD-xsl , в котором нет функции document, обсуждавшейся ранее в одной из веток форума для получения доступа ко второму xml документу.
Знает ли кто-нибудь альтернативный вариант получения доступа к другому xml — документу (имя файла можно считать известным)? Допускается (и приветствуется) использование JavaScript.
Спасибо.
Re: Доступ к 2 документам в XSL, http://www.w3.org/TR/WD-xsl
S>Мне нужно написать xsl — stylesheet, которая могла бы сравнивать 2 xml файла с одинаковой структурой.
S>Для заказчика важно использование пространства имен http://www.w3.org/TR/WD-xsl , в котором нет функции document, обсуждавшейся ранее в одной из веток форума для получения доступа ко второму xml документу.
S>Знает ли кто-нибудь альтернативный вариант получения доступа к другому xml — документу (имя файла можно считать известным)? Допускается (и приветствуется) использование JavaScript.
Если мы допускаем использование JavaScript (это значит только MSXML),
значит можно подгрузить и любой ActiveX, т.е. например DOMDocument, а следовательно
теоретически у нас доступ ко второму XML есть.
Но практически тебе намного будет проще в твоем коде собрать два разных XML в один.
(это всего несколько операторов на том-же JavaScript)
Примерно следующей структруы:
D>Но практически тебе намного будет проще в твоем коде собрать два разных XML в один. D>(это всего несколько операторов на том-же JavaScript)
Спасибо, Didi, за ответ. К сожалению, у меня довольно поверхностные знания JavaScript. Не мог бы ты привести эти операторы или хотя бы написать названия нужных операторов? Мне пока не удалось найти как это можно сделать.
Re[3]: Доступ к 2 документам в XSL, http://www.w3.org/TR/WD-
Здравствуйте, Seninandrew, Вы писали:
D>>Но практически тебе намного будет проще в твоем коде собрать два разных XML в один. D>>(это всего несколько операторов на том-же JavaScript)
S>Спасибо, Didi, за ответ. К сожалению, у меня довольно поверхностные знания JavaScript. Не мог бы ты привести эти операторы или хотя бы написать названия нужных операторов? Мне пока не удалось найти как это можно сделать.
Так, изложу только саму идею.
Ее релализация и отладка синтаксиса за тобой
// У тебя наверное будет другое название этого объекта,
// потому как я использую последний парсер - а тебе нужно ... (какой?)
var mainDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
// загрузка твоего каркаса основного XML
mainDoc.loadXML("<root> ... </root>")
// создание другого елемента
var doc = new ActiveXObject("Msxml2.DOMDocument.4.0");
// загрузка данных локально или по URL
doc.load("...")
// добавление первого документа
mainDoc.documentElement.( тут доступ к конкретному элементу например firstChild).appendChild(doc.documentElement);
// загрузка данных локально или по URL второго документа
doc.load("...")
// добавление второго документа
mainDoc.documentElement.( тут доступ к конкретному элементу например lastChild).appendChild(doc.documentElement);
// загрузка твоего XSL
doc.load("...");
// Выполняем трансформацию, только куда?
mainDoc.transformNode(doc);
Ну успехов тебе.
С уважением Didi
Re: Доступ к 2 документам в XSL, http://www.w3.org/TR/WD-xsl
Конечно, заказчик всегда прав, но это тот случай, когда его надо переубеждать. Указанное пространство имен уже много лет не поддерживается, его реализация выброшена из MSXML, начиная с версии 4.0, его не распознает ни один из других XSLT-процессоров. Пройдет не так много времени, и этот анахронизм окончательно сойдет со сцены. Зачем разрабатывать новый код, с которым заведомо начнутся проблемы в недалеком будущем?
Re[2]: Доступ к 2 документам в XSL, http://www.w3.org/TR/WD-
AL>Конечно, заказчик всегда прав, но это тот случай, когда его надо переубеждать. Указанное пространство имен уже много лет не поддерживается, его реализация выброшена из MSXML, начиная с версии 4.0, его не распознает ни один из других XSLT-процессоров. Пройдет не так много времени, и этот анахронизм окончательно сойдет со сцены. Зачем разрабатывать новый код, с которым заведомо начнутся проблемы в недалеком будущем?
Я полагаю этот нэймспэйс используется потому, что любой IE может его использовать. Для другого нэймспэйс нужно устанавливать msxml поновее в raplace mode.
Re[3]: Доступ к 2 документам в XSL, http://www.w3.org/TR/WD-
Я полагаю этот нэймспэйс используется потому, что любой IE может его использовать. Для другого нэймспэйс нужно устанавливать msxml поновее в raplace mode.
IE 6.0 ставит MSXML 3.0 SP2 в replace mode. IE версий 5.x — это тоже анахронизм . Кроме того, не обязательно исполнять XSLT на стороне клиента.