Дипломная (вкр): Разработка программного продукта обеспечивающего экспорт спецификации из приложения PartList

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

- отдельной программы, предназначенной для выполнения преобразования [1].

Приложения, выполняющие инструкции языка XSLT, называют XSLT-процессорами. В настоящей квалификационной работе в качестве XSLT-процессора был выбран программный модуль MSXSL, разработанный специалистами корпорации Microsoft. Он распространяется бесплатно, при этом предоставляя все необходимые средства для обработки элементов языка XSLT.

Для обработки файла, использующего форматирующие объекты языка XSL-FO и создания отформатированного документа, будем использовать fop-процессор, разработанный Джеймсом Таубером, который передал его проекту Apache XML. Программа Apache FOP (Formatting Object Processor - процессор форматирующих объектов), предназначенная для синтетических анализаторов Java, основана на XML-анализаторе Xerces проекта Apache XML. Так как Apache FOP является Java-приложением, оно может быть запущено на компьютер с любой операционной системой (при условии установленной на нём виртуальной машины Java) [2].

Данный программный продукт является бесплатно распространяемым, в отличие от конкурентов. Его функциональных возможностей достаточно для представления требуемой спецификации в pdf-формате в соответствии с ГОСТ 2.113 - 75.

.4 Выбор метода построения пользовательского интерфейса

Рассмотренные, в предыдущем подразделе, приложения предоставляют консольный интерфейс и поэтому не удобны для пользователя. Обработка большого числа файлов усложняется постоянным вводом путей к ним, передаваемых в качестве параметров, по средствам командной строки. Для устранения данного недостатка было принято решение о разработке программы XMLConverter, предоставляющей графический интерфейс пользователя. Данный программный модуль будет являться связующим звеном приложений, участвующих в преобразовании xml-документа в pdf-файл. В нём так же будет реализован алгоритм приведения спецификации в полное соответствие с ГОСТ 2.113 - 75 путём преобразования xml-документа в промежуточный xml-документ.

В качестве инструментальной среды программирования, в которой будет реализовано приложение, выбрана Microsoft Visual Studio 2010. Данный программный продукт предоставляет широкие возможности создания и редактированию приложений для операционных систем Windows XP/Vista/7/8. Visual Studio даёт возможность выбора языка программирования: С++, C#, F#, Basic. Самым гибким языком программирования, из выше перечисленных, является С++. Visual Studio предоставляет возможность выбора между двумя платформами для этого языка. Более молодой из них является NET. Её инструментальные средства хорошо продуманы. Библиотеки Framework, предоставляемые этой средой, дают широкие возможности для разработки графического пользовательского интерфейса. Используемые в NET технологии упрощают работу с функциями библиотеки Win32Api. Однако существенным недостатком этой платформы является большая ресурсоёмкость разработанного в её среде приложения. Это связано с тем, что в ней более активно используются готовые модули, предоставляющие программисту требуемые и не требуемые возможности. То есть в оперативную память загружаются и обрабатываются процессором блоки компонентов, которые не будут использоваться вообще. Альтернативой Framework является разработанная ранее библиотека MFC (Microsoft Foundation Classes - библиотека базовых классов Microsoft) [6]. Она предоставляет более скромные возможности при разработке интерфейса пользователя, так как использует не столь большое число готовых компонент, но их вполне достаточно для разработки GUI (Graphical User Interface - графический пользовательский интерфейс) приложения XMLConverter. Плюсом старой платформы является ее малая ресурсоёмкость. Так приложение, созданное с использованием MFC, занимает в оперативной памяти в 3-4 раза меньше места, чем созданное в NET.

Исходя из выше сказанного, для разработки приложения был выбран язык Visual C++ и библиотека MFC.

В рамках текущей главы были определены технологии, применяемые при преобразовании структуры данных xml-файла в pdf-документ.

2 ОПИСАНИЕ СТРУКТУРЫ, ПРЕОБРАЗОВАНИЯ И ПРЕДСТАВЛЕНИЯ ИНФОРМАЦИИ С ПОМОЩЬЮ ТЕХНОЛОГИЙ XML-XSL

.1 Механизм преобразования XML в PDF. Постановка задачи

В рамках настоящей квалификационной работы для преобразования xml-файла, содержащего данные групповой спецификации, в pdf-файл необходимо:

1 этап.      Разработать структуру файла формата XML, который будет генерироваться модулем PartList (Рисунок 1).

2 этап.        Разработать таблицы стилей XSL по ГОСТ 2.113 - 75, описывающие преобразование и представление xml-документа в pdf-формате.

этап. Разработать приложение (XMLConverter), преобразующее искомый xml-документ в промежуточный xml-документ для приведения его в соответствие с требованиями предприятия. А также реализующее интерфейс между пользователем и программными средствами, выполняющими дальнейшее преобразование. Воспользоваться им.

этап. С помощью процессора трансформирующих объектов MSXSL выполнить преобразование xml-файла в документ, использующий форматирующие объекты (файл с расширением *.fo).

этап. Используя процессор форматирующих объектов Apache FOP, получить требуемый файл формата PDF.

этап. Создать инсталляционный пакет, упрощающий процесс установки разработанного приложения и его компонентов.

Схема, преобразования XML в PDF, представлена на рисунке 2.1.

Рисунок 2.1 - Механизм преобразования XML в PDF

.2 Расширяемый язык разметки XML

XML используется в качестве средства для описания грамматики других языков и контроля над правильностью составления документов. То есть, сам по себе XML не содержит никаких тегов - элементов языка предназначенных для разметки, он просто определяет условия их создания. Теги не заданы в этом языке с самого начала. Программист сам определяет их. Таким образом, если мы считаем, что для обозначения элемента line в документе необходимо использовать тег <line/>; то XML позволяет свободно использовать определяемый нами тег и мы можем включать в документ фрагменты, подобные следующему: <line> данные </line>. Как видно из примера, открывающий <line> и закрывающий </line> содержат в себе данные. Во многих случаях, когда их много, целесообразно

Процесс создания XML документа достаточно прост и требует лишь базовых знаний HTML и понимания тех задач, которые необходимо выполнить, используя XML в качестве языка разметки. Таким образом, у разработчиков появляется уникальная возможность определять собственные команды, позволяющие им наиболее эффективно определять данные, содержащиеся в документе. Автор документа создает его структуру, строит необходимые связи между элементами, используя те команды, которые удовлетворяют его требованиям, и добивается такого типа разметки, которое необходимо ему для выполнения операций просмотра, поиска, анализа документа [2].позволяет осуществлять контроль над корректностью данных, хранящихся в документах, производить проверки иерархических соотношений внутри документа и устанавливать единый стандарт на структуру документов, содержимым которых могут быть самые различные данные.

.3 Язык стилей XSL

спецификация конвертер шаблон

С помощью XSL возможно форматировать данные в зависимости от их значения (например, показывать отрицательные числа зелёным цветом) и подготавливать для вывода на различные устройства, например, экран, бумагу или звуковое воспроизведение. Фактически язык XML состоит из двух частей: языка преобразований XSLT и языка форматирования XSL-FO.

XSLT - язык преобразования XML в другие типы документов или в другие XML-документы. Он является наиболее важной частью стандарта XSL. XSLT можно применять для преобразования XML документов в формат, знакомый браузерам [2].

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

XSL-FO - язык форматирования, описывающий внешний вид страниц. Он предоставляет более совершенную визуальную модель страницы, нежели HTML и CSS. В отличие от связки последних, XSL-FO поддерживает такие типы форматирования, как направление письма с права на лево и снизу вверх, сноски, заметки на полях документа, перекрёстные ссылки на номера страниц и другие. В отличие от каскадных таблиц стилей CSS, которые преимущественно предназначены для веб-страниц, XSL-FO предназначен для более широкого круга задач. Можно, например, написать таблицу стилей XSL, которая с помощью форматирующих объектов сгенерирует вёрстку целой книги. Другая таблица стилей может “сгенерировать” из того же документа веб-сайт [4].

Подобно другим XML-приложениям, форматирующие XSL-объекты имеют собственное пространство имен <#"784574.files/image004.gif">

Рисунок 3.1

Разделов, как и строк, может быть много. Их число определяется данными, сформированными в PartList, а также требованиями соответствующего ГОСТа.

Для представления описанной структуры данных в XML формате воспользуемся тегами и их атрибутами. Для обозначения корневого элемента спецификации будем использовать элементы <specification> и </specification>. Данные, относящиеся к штампу спецификации, ограничим при помощи тега <stamp/>. Разметим содержимое элемента <stamp/> с помощью следующих атрибутов: OBOZNACHENIE, NAIMENOVANIE_1, NAIMENOVANIE_2, NAIMENOVANIE_3, NAIMENOVANIE_4, NAIMENOVANIE_5, RAZRABOTAL, PROVERIL, N_KONTROL, UTVERDIL, NAZVANIE_ORGANIZACII_1, NAZVANIE_ORGANIZACII_2, PERVICH_PRIM, kline_before, kline_after, kpage. Соответствующие значения атрибутов представлены в таблице 3.1. Наименование разбивается, в зависимости от длины, на некоторое количество строк (не больше 5). Атрибут NAZVANIE_ORGANIZACII_2 может отсутствовать, если название организации состоит из одной строки.

Таблица 3.1 - Атрибуты элемента <stamp/>

Атрибут

Значение

OBOZNACHENIE

Обозначение

NAIMENOVANIE_1

Наименование, строка 1

NAIMENOVANIE_2

Наименование, строка 2

NAIMENOVANIE_3

Наименование, строка 3

NAIMENOVANIE_4

Наименование, строка 4

NAIMENOVANIE_5

Наименование, строка 5

Атрибут

Значение

RAZRABOTAL

Разработал

PROVERIL

Проверил

N_KONTROL

Нормоконтролер

UTVERDIL

Утвердил

NAZVANIE_ORGANIZACII_1

Название организации, 1

NAZVANIE_ORGANIZACII_2

Название организации, 2

PERVICH_PRIM

Первичная применяемость

kline_before

Отступ перед разделом

kline_after

Отступ после раздела

Kpage

Количество страниц в документе


Раздел обозначим при помощи тега <section/>. К данному элементу относится только одно поле данных «наименование», обозначим его следующим образом s_NAIMENOVANIE. Символ s в начале имени описываемого элемента служит для идентификации этого атрибута, как атрибута относящегося к тегу <section/>.

Для выделения данных, относящихся к строке, будем использовать тег <line/>. Соответствующие значения атрибутов представлены в таблице 3.2. Примечание может быть представлено в виде одной строки (атрибут PRIMECHANIE), а может быть разбито на две строки (PRIMECHANIE_1 и PRIMECHANIE_2, соответственно).

Таблица 3.2 - Атрибуты элемента <line/>

Атрибут

Значение

FORM

Формат

ZONE

Зона

POZICIA

Позиция

OBOZNACHENIE

Обозначение

NAIMENOVANIE

Наименование

Атрибут

Значение

KOL-VO_0

Количество 0

KOL-VO_N

Количество N

 

PRIMECHANIE

Примечание

 

PRIMECHANIE_1

Примечание, строка 1

 

PRIMECHANIE_2

Примечание, строка 2

 


Представим разработанную информационную структуру данных в виде дерева XML. Применим все обозначенные ранее теги и атрибуты. В результате получим следующий документ.

<?xml version="1.0" encoding="UTF-8"?>

<specification>

<stamp OBOZNACHENIE="СПЕЦИФИКАЦИЯ" NAIMENOVANIE_1="" NAIMENOVANIE_2="" NAIMENOVANIE_3="Разгонщик" NAIMENOVANIE_4="" NAIMENOVANIE_5="" RAZRABOTAL="Кобыльский" PROVERIL="Гундорова" N_KONTROL="Качанов" UTVERDIL="Кравец"_ORGANIZACII_1="ВГТУ, ФАЭМ" NAZVANIE_ORGANIZACII_2="ВМ-022"_PRIM = ""_before="2" kline_after="1" kpage="3"/>

<section s_NAIMENOVANIE="Документация"/>

<line FORM="" ZONE="" POZICIA="" OBOZNACHENIE="Р35-1.00.000 СБ" NAIMENOVANIE="Сборочный чертеж" KOL-VO_0="" PRIMECHANIE="" PRIMECHANIE_1="" PRIMECHANIE_2=""/>

… <!-- Некоторое количество элементов <line … /> -->

<line FORM="" ZONE="" POZICIA="" OBOZNACHENIE="Р35-1.00.000 МЧ" NAIMENOVANIE="Монтажный чертеж" KOL-VO_0="" PRIMECHANIE="" PRIMECHANIE_1="примечание" PRIMECHANIE_2=""/>

<section s_NAIMENOVANIE="Сборочные единицы"/>

<line FORM="" ZONE="" POZICIA="1" OBOZNACHENIE="Р34-1.05.000" NAIMENOVANIE="Подъемник" KOL-VO_0="1" PRIMECHANIE="" PRIMECHANIE_1="" PRIMECHANIE_2=""/>

<line FORM="" ZONE="" POZICIA="2" OBOZNACHENIE="Р35-1.01.003" NAIMENOVANIE="Гидроцилиндр" KOL-VO_0="3" PRIMECHANIE="" PRIMECHANIE_1="" PRIMECHANIE_2=""/>

</specification>

Для наглядности здесь представлен небольшой документ, не отражающий все данные спецификации, но демонстрирующий её представление в виде xml-документа. Пустые атрибуты (атрибуты, не содержащие данных, например FORM="") могут отсутствовать, они представлены в данном примере для отображения всей информационной структуры xml-файла.

.2 Применение XSLT-инструкций для разработки шаблона XSL

Применение XSLT-инструкций обусловлено необходимостью выборки данных из xml-файла. Для их использования в шаблоне XML необходимо указать пространство имён, а именно: <xsl:stylesheet version="1.0" xmlns:xsl="#"784574.files/image005.gif">

Рисунок 4.1

Рисунок 4.2

В созданном проекте, для редактирования диалогового окна, щёлкаем в меню по «View». В открывшемся списке выбираем «Resource View». В появившемся окне, в дереве представляющем ресурсы проекта, щёлкаем по элементу «Dialog». В раскрывшемся списке выбираем «IDD_XMLCONVERTOR_DIALOG», как показано на рисунке 4.4.

Рисунок 4.3

Рисунок 4.4

Для добавления элементов в форму, нам понадобится меню «Toolbox». Для его открытия необходимо щёлкнуть в меню «View» по элементу с соответствующим именем. Из появившегося диалогового меню будем использовать объекты: «Button», «Edit Control», «Combo Box», «Static Text», «List Control». На рисунке 4.5 показана часть меню «Toolbox».

Рисунок 4.5

Для того чтобы добавить элемент, достаточно щёлкнуть мышкой по выбранному объекту, и держа клавишу нажатой, перетащить его на редактируемый диалог. Для открытия окна свойств добавленного элемента необходимо, щёлкнуть по нему правой кнопкой мыши, выбрать, в появившемся контекстном меню, элемент «Properties» (Рисунок 4.6).

Добавим необходимые элементы к окну разрабатываемого приложения, как показано на рисунке 4.7. С помощью поля «Caption», свойств каждого объекта, приведём его заголовок в соответствие с рассмотренным рисунком.

Для того чтобы при запуске приложения кнопки: «Преобразовать xml в pdf» и «Удалить выбранный элемент» были не активны, нужно установить, в свойствах каждого элемента, значение поля «Disabled» в «True». Чтобы элемент «List Control» отображал колонки, необходимо в его свойствах, для поля «View» указать значение «Report». Для оконного объекта «Combo Box», в поле «Type» нужно выбрать значение «Drop List». Чтобы рассматриваемый объект содержал значения, воспользуемся полем Data, введя в него строку вида «ГрупСпец_Ф1_gost-B_0-9;ГрупСпец_Ф1_gost-B_10-19;ГрупСпец_Ф1_gost-B_20-29;». В которой через точку с запятой указан список значений элемента «Combo Box». Так как поле, в котором будет отображаться директория для вывода pdf-файлов, не должно подвергаться редактированию, установим его свойство «Read Only» в «True».

Рисунок 4.6

Добавим в класс разрабатываемой формы функции - обработчики событий, вызываемые по нажатию соответствующей кнопки. То есть, определим методы, каждый из которых будет вызываться при получении формой соответствующего сообщения от Windows. Для этого, в редакторе форм, два раза щелкнем по кнопке в окне разрабатываемой программы. Редактор Visual Studio автоматически добавит функцию - обработчик сообщения «ON_BN_CLICKED» (отправляемого Windows приложению при щелчке левой кнопкой мыши по элементу «Buttom»), которое поступит в очередь и обработается приложением в порядке следования. Так как сообщения обрабатываются программой очень быстро, щёлчек пользователя по описываемой кнопке, запущенного на выполнение приложения, вызовет соответствующую функцию практически мгновенно. Таким образом добавляются обрабочки событий щелчка левой кнопки мыши для каждого объекта «Buttom».

Источник: https://www.bibliofond.ru/detail.aspx?id=784574