орожніх рядків в специфікацію, а також дописує їх в кінець останньої сторінки. Другий процесор використовується для застосування XSLT-інструкцій, описаних у xsl-файлі, до xml-файлу. У результаті чого виходить fo-файл. Він містить дані xml-документа і форматує об'єкти xsl-шаблону. Для перетворення fo-файлу в pdf-документ, використовується Apache FOP.
У рамках поточної глави дана постановка задачі. Продемонстровано схема механізму перетворення xml-вистави груповий специфікації в pdf-документ. Дано загальні поняття про об'єкти, що беруть участь у перетворенні.
3. Реалізація уявлення специфікації в xml-форматі, і її перетворення в PDF-формат
3.1 Розробка структури xml-файла
Інформаційна структура файлу формату XML являє собою дерево. У ролі елементів дерева (предків, нащадків і листя) виступають теги і їхні атрибути. Теги використовуються для розмітки документа на фрагменти, що містять дані різного виду. Атрибути застосовуються для позначення даних різного роду. Атрибути так само називають об'єктами. Вони складаються з імені та поля, що містить дані. Знаючи назву тега, позицію у файлі і ім'я атрибута, можна отримати доступ до цих даних. Дані мають строковий тип, але можуть інтерпретуватися програмами як числа.
Файли описуваного формату є текстовими, відповідно їх вміст - це текст. Мова, застосовуваний для розмітки вмісту цих файлів - це мова гіпертекстової розмітки XML. Програми, що працюють з файлами даного типу, можна віднести до класу текстових процесорів. Вони інтерпретують байти даних xml-файла як символи. Виходячи з цього, розробниками стандартів XML була введена вимога, вказувати кодування файлу за коштами одного з атрибутів тега xml, що відноситься до інструкцій і позначуваного наступним чином: lt ;? xml version= 1.0 encoding= UTF - 8 raquo ;? gt ;. У наведеному прикладі це атрибут encoding, що має значення поля UTF - 8 (однобайтном Unicode). Об'єкт version вказує версію використовуваного мови розмітки XML. [1]
Інформаційна структура, розроблювального файлу, що містить дані специфікації, представлена ??на малюнку 3.1 Як видно з малюнка, дані, що входять в специфікацію, поділяються на дані, що входять в штамп, дані, пов'язані розділу, і дані, входять в рядок. Штамп є у одному примірнику. Всі дані, що відносяться до нього, є завжди. Найменування розділу відсутнім не може, тому що в противному випадку втрачається сенс у самому розділі. Рядок складається з наступних даних: формат, зона, позиція, позначення, найменування, кількість на виконання і примітка. Кількостей на виконання декілька. Залежно від специфікації їх може бути: 10, 30, 39. Рахунок починається з 0. Наприклад, якщо кількостей 10, N буде дорівнює 9.
Малюнок 3.1 - Інформаційна структура, розроблювального файлу, що містить дані специфікації
Розділів, як і рядків, може бути багато. Їх число визначається даними, сформованими в PartList, а також вимогами відповідного ГОСТу. Для представлення описаної структури даних в XML форматі скористаємося тегами і їх атрибутами. Для позначення кореневого елемента специфікації будемо використовувати елементи lt; specification gt; і lt;/specification gt ;. Дані, що відносяться до штампу специфікації, обмежимо за допомогою тега lt; stamp/ gt ;. Розмітимо вміст елемента lt; stamp/ gt; за допомогою наступних атрибутів: 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 - Атрибути елемента lt; stamp/ gt;
Атрибут ЗначеніеOBOZNACHENIEОбозначеніеNAIMENOVANIE_1Наіменованіе, рядок 1NAIMENOVANIE_2Наіменованіе, рядок 2NAIMENOVANIE_3Наіменованіе, рядок 3NAIMENOVANIE_4Наіменованіе, рядок 4NAIMENOVANIE_5Наіменованіе, рядок 5Атрібут ЗначениеRAZRABOTALРазработалPROVERILПроверилN_KONTROLНормоконтролерUTVERDILУтвердилNAZVANIE_ORGANIZACII_1Название організ?? ції, 1 NAZVANIE_ORGANIZACII_2Названіе організації, 2PERVICH_PRIMПервічная пріменяемостьkline_beforeОтступ перед разделомkline_afterОтступ після разделаKpageКолічество сторінок в документі
Розділ позначимо за допомогою тега lt; section/ gt ;. До даного елементу відноситься тільки одне поле даних найменування raquo ;, позначимо його наступним чином s_NAIMENOVANIE. Символ s на початку імені описуваного елемента служить для ідентиф...