В настоящее время я работаю над проектом, который включает в себя множество преобразований XSLT, и мне действительно нужен отладчик (у меня есть XSLT длиной более 1000 строк, и я их не писал :-).
Проект написан на C # и использует объекты расширения:
xslArg.AddExtensionObject("urn:<obj>", new <Obj>());
Насколько мне известно, в этой ситуации Visual Studio - единственный инструмент, который может помочь мне отладить этап преобразований.ий шаг.Статический отладчик бесполезен из-за объектов расширения (он выдает ошибку, когда достигает элементов, которые ссылаются на их пространство имен).К счастью, я нашел эту ветку , которая дала мне отправную точку (по крайней мере, я знаю, что это можно сделать).
После поиска в MSDN я нашел критерии, которые делают шаг впреобразование возможно.Они перечислены здесь .Вкратце:
- XML и XSLT должны быть загружены через класс, имеющий интерфейс
IXmlLineInfo
(XmlReader
& co.) - распознаватель XML, используемый в
XSLTCompiledTransform
конструктор основан на файлах (XmlUriResolver
должен работать). - таблица стилей должна быть на локальном компьютере или в интрасети (?)
Из того, что я могускажите, я соответствую всем этим критериям, но это все еще не работает.Соответствующие примеры кода размещены ниже:
// [...]
xslTransform = new XslCompiledTransform(true);
xslTransform.Load(XmlReader.Create(new StringReader(contents)), null, new BaseUriXmlResolver(xslLocalPath));
// [...]
// I already had the xml loaded in an xmlDocument
// so I have to convert to an XmlReader
XmlTextReader r = new XmlTextReader(new StringReader(xmlDoc.OuterXml));
XsltArgumentList xslArg = new XsltArgumentList();
xslArg.AddExtensionObject("urn:[...]", new [...]());
xslTransform.Transform(r, xslArg, context.Response.Output);
Я действительно не понимаю, что я делаю неправильно.Я проверил интерфейсы на обоих XmlReader
объектах, и они реализуют требуемый.Кроме того, BaseUriXmlResolver
наследуется от XmlUriResolver
, и таблица стилей хранится локально.Снимок экрана ниже - это то, что я получаю при входе в функцию Transform
.Сначала я вижу код таблицы стилей после перехода по параметрам (при сопоставлении с шаблоном) и получаю следующее:
Ошибка, возникающая при входе в таблицу стилей http://img339.imageshack.us/img339/4153/scrxslterror.jpg
Если кто-либоУ меня есть идеи, почему он не работает или у него есть альтернативный способ заставить его работать. Я был бы очень благодарен:).
Спасибо,
Alex