Ошибка компиляции XslCompiledTransform - PullRequest
1 голос
/ 21 апреля 2011

У меня есть эта таблица стилей xslt в файле Empty.xslt:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:nrki="http://www.essox.cz/xslt/nrki" xmlns:date="http://www.essox.cz/xslt/date" version="1.0" exclude-result-prefixes="msxsl" extension-element-prefixes="nrki date"> <xsl:import href="C:\Users\pparik.ESSOX\Desktop\Xslt\General.xslt" /> <xsl:import href="C:\Users\pparik.ESSOX\Desktop\Xslt\Nrki\General.xslt" /> <xsl:output method="text" indent="yes" /> <xsl:template match="@* | node()"> <xsl:if test="nrki:IsInLastDays('15042011', 6)"> je </xsl:if> </xsl:template> </xsl:stylesheet>

Когда я выбираю пункт меню (в Visual studio) XML / Show XSLT Output, я получаю правильные результаты. Но когда я пытаюсь сделать то же самое, используя код (XslCompiledTransform), я получаю исключение ошибки компиляции.

string output = string.Empty;
XslCompiledTransform transform = new XslCompiledTransform(true);
XsltSettings sett = new XsltSettings(true, true);
transform.Load(new XmlTextReader(@"C:\Users\pparik.ESSOX\Documents\Essox\Zdrojové kódy\SES\Visual studio\SesSolution\TestXslt\Xslt sablony\Empty.xslt"), sett, null);
StringWriter sr = new StringWriter();
transform.Transform(this.EvaluationInput.CreateNavigator(), null, sr);
output = sr.ToString();

Есть идеи, почему? Большое спасибо, Petr

1 Ответ

1 голос
/ 21 апреля 2011

См. Комментарий к аргументу XmlResolver, в который вы передаете null:

Если это значение равно null, внешние ресурсы не разрешаются.

Пока что C:\Users\pparik.ESSOX\Desktop\Xslt\General.xslt является внешним ресурсом. Попробуйте передать new XmlUrlResolver() вместо null.

Кроме того, вы чрезмерно усложняете нагрузку, используя XmlTextReader - это проще:

transform.Load(path, sett, new XmlUrlResolver());

Для информации, если хотите, вы можете указать свои собственные распознаватели - например, я написал тот, который переопределяет относительные пути к содержимому из resx, чтобы файлы можно было нормально редактировать в IDE, но затем включать как встроенные ресурсы (но все еще разрешают своих братьев и сестер правильно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...