Я видел несколько вопросов, связанных с XML, XSLT и HTML, в stackoverflow, но я считаю, что мой вопрос немного отличается.Вот что мне нужно:
Мне нужно отправить электронное письмо своим клиентам.Формулировки электронной почты могут отличаться в зависимости от сценария.Каждый сценарий имеет соответствующий формат, сохраненный в базе данных.Например, для одного сценария может потребоваться этот адрес электронной почты:
Сценарий 1: Мы открыли Билет XXX / Ссылочный номер XXX для вашего звонка в XXX.Пожалуйста, позвоните нам в XXX, чтобы отследить прогресс.
Этому письму может потребоваться другой сценарий:
Сценарий 2: Благодарим Вас за интерес к нашему продукту XXX.Как уже говорилось, мы отправим нашего представителя в XXX в ваш офис, расположенный по адресу XXX.
Кроме того, возможно, потребуется изменить формат в зависимости от наличия данных.например, если мне нужно отправить электронное письмо, соответствующее сценарию 1, и у меня нет справочного номера, я хочу полностью удалить часть справочного номера на лету (не в базе данных), т.е. я хочу что-то вроде этого:
Сценарий 3: Мы открыли Билет XXX для вашего звонка на XXX.Пожалуйста, позвоните нам в XXX для отслеживания прогресса.
Форматы для сценариев 1 и 2 хранятся в базе данных как XSLT, соответствующие строкам, которые вы видите выше.Формат для сценария 3 должен быть создан на лету.XXX часть должна быть заменена фактическими данными.Эти данные доступны в виде сериализуемого объекта XML, который у меня есть.
Я хочу сериализовать этот объект, создать XML в памяти, немного изменить (на лету) XSLT, чтобы отразить имеющиеся у меня данные, преобразовать XML в памяти в HTML, используя XSLT для сценария изатем передайте HTML как строковый параметр методу электронной почты, который у меня есть.Электронная часть работает.Мне нужно работать над Object-> XML в памяти-> Небольшая модификация XSLT-> HTML, используя соответствующий XSLT.
Буду признателен, если вы включите примеры кода, а не только подход, которому я должен следовать.
РЕДАКТИРОВАТЬ:
Вот рабочий код:
using (xsltStream = new MemoryStream(emailInfo.Body))
{
// Create an XmlReader from the Stream
XmlReader reader = XmlReader.Create(xsltStream);
// Create and load the transform with document function enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableDocumentFunction = true;
transform.Load(reader, settings, null);
// Execute the transformation.
transform.Transform(doc, writer);
}