Доброго времени суток.
Сразу извиняюсь за то, что возможно кто-то сочтет что тема создана "в неположеном месте". )) Я просмотрел форумы мне показалось что это наиболее подходящее место.
По делу:
Прошу помощи знающих людей.
Пишу приложение (в учебных целях) на С#. Программа должна иметь help и отчеты. Отчеты подразумевают собой просто данные (типа — такоейто день, то-то было, столько-то случилось) которые необходимо отобразить, желательно сохранить ну и может еще что.
Help думал сделать c помощью CHM. С отчетами идей небыло (раз ве что там делать еще одно окно(форму) и дам ДатаГридом ....
Суть в том что когда начали эти все идеи обсуждать с преподом дошли до того что в его советах-пожеланиях появилось много непонятных слов, высказываний ))) Насколько я понял суть такая что — необходимо Отчеты делать с помощью XSL с последующим преоьразованием его в XML и типа отчет будет в виде .html(/xml) страницы. Что впринципе удобно, можно сохранить и распечатать.
2-3 года тому я немного изучал XML и странички там создавал html-ные, но это было давно я почти ничего не помню. А очень нада угодить преподавателю.
Может кто-то посоветовать как из приложения получается сделать отчет с помощью XSL и XML ? Как вообще XSL/XML вяжутся с Приложением?
Помогите пожалуйста. Буду благодарен любым ссылочкам, идеям по теме. Заранее спасибо.
Здравствуйте, ywlepak, Вы писали:
Y>Суть в том что когда начали эти все идеи обсуждать с преподом дошли до того что в его советах-пожеланиях появилось много непонятных слов, высказываний ))) Насколько я понял суть такая что — необходимо Отчеты делать с помощью XSL с последующим преоьразованием его в XML и типа отчет будет в виде .html(/xml) страницы. Что в принципе удобно, можно сохранить и распечатать.
И это правильно !
Мой опыт формирования отчетов с разными генераторами, в том числе Crystal-report, привел к выводу, что связка xml+xslt очень эффективна. Она легка в освоении, реализации и переносима — не требует установки дополнительного ПО (как например гребаный Crystal-report). Да и производительность такого подхода гораздо выше чем с использованием генераторов отчетов (ИМХО).
Идея проста и состоит в следующем:
1. сочиняешь XSLT — схему преобразования xml в html.
2. каждый раз при создании отчета формируешь xml-документ, в который помещаешь все сведения, подлежащие отражению в отчете
3. применяешь XSLT к сформированному xml-документу
Третий шаг можно реализовать по-разному:
а) в xml-документе, полученном на шаге 2, делаешь ссылочку на xslt-схему и сохраняешь его в файл, который потом скармливаешь Браузеру. Неудобство в том, для отображения отчета необходимо хранить xslt схему в доступном месте, на которое указывает ссылочка в xml-документе.
b) загружаешь xslt в XslCompiledTransform. Затем применяешь её к xml-документу, сформированному на шаге 2, а полученную html страничку скармливаешь Браузеру.
Я применяю второй подход:
// 1. формирую xml-документ
XmlDocument doc = new XmlDocument();
DBManager.writeContract2Xml(doc, id);
// 2. открываю поток вывода для сохранения результата преобразования
FileStream fs = new FileStream(Environment.GetEnvironmentVariable("Temp") + "\\Contract_" + id.ToString() + ".html", FileMode.OpenOrCreate);
// 3. загружаю xslt-схему
XslCompiledTransform XslT = new XslCompiledTransform();
XslT.Load(Application.StartupPath + "\\ReportTemplate\\ContractProperty.xsl");
XslT.Transform(doc, new XsltArgumentList(), fs);
fs.Close();
// 4. скармливаю html Браузеру
Process.Start(/*"IExplore.exe", */Environment.GetEnvironmentVariable("Temp") + "\\Contract_" + id.ToString() + ".html");
Вот образец моего
xml-файла с данными отчета.
А вот
xslt-схема, которая формирует "отчет"
В результате XSL-преобразования получается вот такая
html-страничка
Для написания XSLT-схемы следует изучить
X-Path — очень мощная штука, которая пригодится для работы с xml в любом виде