Могу ли я перейти для встроенной спецификации XSL в XML-документ? - PullRequest
0 голосов
/ 18 ноября 2009

Я встраиваю HTML-элемент управления в нашу систему CRM и использую его для отображения немного XML. Я хочу отформатировать это, используя документ XSL.

Все работает нормально, когда я тестирую его локально с test.xml и test.xsl, но, конечно, когда я меняю ссылку XSL на

\\servername\share\test.xsl

тогда это не работает, я думаю, потому что местоположение не является доверенным.

Можно ли встроить XSL в документ XML? Как еще можно отформатировать содержимое элемента управления Browser, если я не могу использовать относительные пути?

Спасибо

1 Ответ

0 голосов
/ 16 декабря 2012

Одна из техник, которую я часто использую, - это компилирование XSLT в мою сборку .NET в качестве ресурса манифеста. Если ваш XSLT-файл находится в Visual Studio, в свойствах файла вы можете установить «Build Action» на «Embedded Resource». Затем имя ресурса становится пространством имен проекта по умолчанию, за которым следует имя файла (я думаю .... обычно я компилирую сборку, а затем проверяю имя, просматривая манифест с ILDASM).

В любом случае - когда вы знаете имя, вы можете получить преобразование с помощью функции, подобной этой (обратите внимание, это в моей сборке утилит, следовательно, GetCallingAssembly .... в другом дизайне вы можете использовать GetExecutingAssembly):

public static XslCompiledTransform GetTransformByResourceName(string resourceName)
{
  XslCompiledTransform transform = new XslCompiledTransform(false);
  using (Stream manifestResourceStream = 
            Assembly.GetCallingAssembly().GetManifestResourceStream(resourceName))
  using (XmlTextReader reader = new XmlTextReader(manifestResourceStream))
  {
    XsltSettings settings = new XsltSettings(false, false);
    transform.Load(reader, settings, new XmlUrlResolver());
  }
  return transform;
}

Конечно, в некоторых отношениях вы теряете некоторую гибкость / конфигурируемость, но по крайней мере вы знаете, что ваш код сможет найти XSLT.

Я недостаточно знаю ваш дизайн, чтобы понять, поможет ли перемещение преобразования на сервер. Даже если вам нужно выполнить преобразование на стороне клиента, если вы уже обслуживаете XML из приложения .NET, то, вероятно, тоже будет работать XSLT, но в этом случае без необходимости развертывать его отдельно в файловой системе.

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