Чтобы иметь атрибут элемента с ограниченным контентом, определите новый xs:simpleType
, а затем используйте xs:extension
, чтобы расширить его с помощью атрибута:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="algo">
<xs:complexType>
<xs:sequence>
<xs:element name="nota" type="t_algo" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="t_algo">
<xs:simpleContent>
<xs:extension base="t_algo_content">
<xs:attribute name="modul" type="t_modul"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="t_modul">
<xs:restriction base="xs:string">
<xs:pattern value="m0[0-9]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="t_algo_content">
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Обратите также внимание на то, что I ' упростил ваш шаблон регулярного выражения в первом случае и использовал minInclusive
/ maxInclusive
для более естественного выражения целочисленного диапазона во втором случае.
При использовании бэкенда SQL Server Reporting Services должна работать на Вас.
Иначе я рекомендовал бы сторонний генератор отчетов, который соответствует Вашим потребностям создания отчетов, и создайте приложение, которое использует его, чтобы создать и экспортировать отчеты.
Возможно, необходимо попытаться ActiveReports.NET или DevExpress XtraReports генерировать отчеты сначала кода. У обоих есть поддержка экспорта PDF, таким образом, можно генерировать файлы PDF и отправить их почтой.
Вы могли также посмотреть на itextSharp. Это - инструмент записи PDF .NET и является портом Java itext. Ограниченное проигрывание, которое я сделал с ним, сделало PDF, пишущий простой и забавный.
Проверьте эту книгу, (http://www.apress.com/book/view/9781590598542), она дает много различных сценариев, включая пользование электронной почтой отчетов, сервиса поколения отчета, и т.д. Его оценка клиентского создания отчетов, но это применяется одинаково хорошо к стороне сервера (сторона дизайна так или иначе). это может иметь его преимущества, делающие его сторона клиента (или выделенный сервер), поскольку можно полностью управлять процессом автоматизации. Но это - то, если Вы хотите пойти с созданием отчетов.NET.
И да можно использовать WPF.
На одном из проектов я продолжаю работать, мы используем список и маркировку.
В основном у Вас есть API.NET, Вы передаете его DataSet, и затем Вы делаете шаблоны, ссылающиеся на столбцы в наборе данных, который может, по крайней мере, быть распечатан (и я предполагаю экспортируемый в PDF также, но не проверял...),
Я не работал с ним сам tho, так не может сказать многое о качестве.
Даже с SQL Server можно хотеть посмотреть на клиентскую функциональность отчетов. Это действительно оснащает лучше IMO тем, что Вы хотите. Можно все еще запросить и получить все данные, Вы должны сформировать сервер, но это позволяет Вам иметь полный контроль над процессом автоматизации. Возможно, Вы хотите выполнить его как услуга, каждый день отчет сгенерирован сервисом, преобразовал в PDF и скопировал в диск и автоматический отправленный по электронной почте. Сторона клиента может сделать все это и легко. И нет никакой зависимости от создания отчетов о сервисах или IIS или необходимости иметь любой из настроенного.
Можно вытащить хорошую печать функции из WPF начиная с нового технологического Формата бумаги, документ XPS является заменой для PDF. И это имеет большое программное обеспечение также. Блог из pettzold http://www.charlespetzold.com/blog/2006/02/201111.html относительно печати WPF.
Я настоятельно рекомендую работать с инструментом создания отчетов, который оказывает собственную поддержку для экспорта в PDF, для целей управления намного легче, если можно запустить с единого формата и отчета обработать и печать и архивацию информации.
Если бы Вы действительно делаете пакетную обработку, я не рассматривал бы WPF как необходимый компонент как пакетное задание, у Вас действительно нет большой части UI, если любой вообще, в зависимости от того, как Вы действительно реализуете это.
На вашем месте я сфокусировался бы на создании пакетного процессора, который мог или работать как сервис окон, или запланированный работать в определенных интервалах для выполнения его задания.