Освоение и настройка Model Publishing в IBM Rational Software Modeler/ArchitectИсточник: IBM developerWorks Россия Майк Бойерсмит, Штатный инженер-программист, IBM Ченг-Е Лин, Менеджер по разработке, IBM Rational
ЦельЦелью этой статьи является описание основанных на XSL шаблонов преобразования моделей публикации достаточно детально, для того чтобы можно было работать с этими шаблонами, а также добавлять или изменять их функциональность. Предполагается, что вы уже знакомы с основами XSL и сопутствующими технологиями, поэтому XSL здесь не рассматривается. Схема статьиЭта статья разбита на три раздела:
Замечание об актуальности статьиЭта статья написана конкретно для функций публикации модели в продукте RSM и IBM Rational Software Architect (RSA), версии 6.0.0. Более новые версии публикации модели могут сделать информацию в этой статье устаревшей.
|
< reports > < reportManifest > < /reportManifest > < reportManifest > < /reportManifest > у……… < /reports > |
Чтобы добавить отчет, вставьте запись < reportManifest >
в этот файл. Для этого скопируйте существующую запись в манифесте отчета и измените значения соответственно вашим требованиям. Например:
< reportManifest name="My UML Metric Report" description="My Metric report to test adding my own report " author="Me" XSLFile="resources/reports/MyReport.xsl" outFileExt="pdf" USING_ICONS="false" EXTRACTING_DIAGRAMS="false" DIAGRAM_FORMAT="JPG" DETAIL_LEVEL="FULL" > < /reportManifest > |
Ключевыми измененными полями были: name, description, author и XSLFile. Также обратите внимание на запись outFileExt, указывающую тип генерируемого вами выходного документа. В этом примере отчет будет сгенерирован как PDF-документ.
Каждое поле в reportManifest
описано в таблице 1. Необязательные поля отмечены.
Таблица 1: Поля манифеста отчета
name | Имя отчета, показанное в UI. |
description | Описание отчета, показанное в UI. |
author | Автор отчета. |
XSLFile | Где может быть найден XSL-шаблон. |
outFileExt | Расширение создаваемого вами документа. |
oclSelfType | UML-тип данных для выбора. Это необязательное поле, но если оно используется, то необходимо поле oclQuery. Примерами UML-типов являются Class или Package. |
oclQuery | Выражение Object Constraint Language (OCL), используемое для выбора данных из элементов типа oclSelfType. Это необязательное поле, но если оно используется, необходимо также поле oclSelfType. (См. примеры, приведенные ниже). |
USING_ICONS | Атрибут типа boolean, указывающий, включаются ли в диаграмму пиктограммы. |
EXTRACTING_DIAGRAMS | Атрибуты типа boolean, указывающие, должны ли создаваться диаграммы. Если false, диаграмма выведется только в текстовом режиме. |
DIAGRAM_FORMAT | Используемый формат для файлов диаграммы, созданных при значении EXTRACTING_DIAGRAMS равном true. Корректными значениями являются GIF, BMP, JPG или JPEG. |
DETAIL_LEVEL | Уровень детализации. Корректными значениями являются FULL для включения всего, или MIMINUM для включения только документацией. |
Ниже приведен пример OCL-запроса, использующего необязательные OCL-записи манифеста отчета.
<reportManifest name="Package Report" description="Reports on packages" author="John Doe" xsltFile="resources/PackageReports.xsl" oclSelfType="Package" oclQuery="self.oclIsKindOf(Package) and not(self.oclIsKindOf(Model))" outFileExt="pdf" USING_ICONS="true" EXTRACTING_DIAGRAMS="true" DIAGRAM_FORMAT="GIF" DETAIL_LEVEL="FULL"> /reportManifest> |
Затем для создания вашего отчета возьмите существующий пример отчета, скопируйте его и переименуйте его MyReport.xsl для соответствия информации, добавленной в файл reports.manifest.
Теперь откройте файл в текстовом редакторе и найдите следующее:
< xsl:text >
Sample UML Metric Report for #topLevelName< /xsl:text >
Измените эту строку на следующую:
< xsl:text >
My First Metric Report for #topLevelName< /xsl:text >
Далее сохраните файл и вызовите UI для отчетов. Вы должны увидеть ваши отчеты в списке, как показано на рисунке 4.
Выберите соответствующий отчет и сгенерируйте его. Проверьте, что вы видите My First Metric Report в вашем HTML-браузере. Это все, что касается данного вопроса.
Если вы хотите создать отчет, содержащий специфические знаки или расширенные символические знаки (например, набор шрифтов Chinese) вы должны будете внедрить шрифт в PDF-документ. Это требования формата PDF. К счастью, функция опубликования модели имеет надстройку, позволяющую вам использовать UI не только для генерирования вашего отчета, но и предоставлять шрифты, необходимые вам в ваших отчетах. Для встраивания специализированного шрифта в отчет вы должны выполнить следующие действия:
Детали встраивания шрифта
В следующем разделе этой статьи рассматривается каждый упомянутый выше шаг в процессе, описывающем, как настроить ваши шрифты для работы с генератором отчетов. Обратите внимание, что эти требования PDF задокументированы в http://xml.apache.org/fop/fonts.html. Кроме того вы можете взглянуть в FAQ на http://xml.apache.org/fop/faq.html.
Определение местонахождения внедряемого шрифта
Прежде всего, найдите шрифт для встраивания. Помните, что шрифт должен соответствовать правилам для встроенных шрифтов, разъясняемых в документации по PDF-требованиям (http://xml.apache.org/fop/fonts.html). Кроме того, вы должны рассмотреть легальность используемого вами шрифта. Вы должны спросить, "Легально ли встраивание?". Хотя этот документ указывает на инструментальное средство, которое может дать вам совет по этому вопросу, за проверку легальности отвечаете вы.
Генерирование файла метрик (Minor Minor)
Вы генерируете файл метрик для того, чтобы обеспечить поддержку пользовательских шрифтов. Этот файл просто описывает природу файла шрифта, так чтобы он мог быть встроен в PDF.
Опять же, за детальной информацией о том, как это сделать, обратитесь к технической странице Apache http://xml.apache.org/fop/fonts.html#embedding.
Этот пример показывает, как внедрить TTF (True Type Font). Для получения метрик вам необходимо иметь инструментальные средства, которые могут извлечь эту информацию. Эти средства могут быть загружены с http://xml.apache.org/fop/download.html.
Примечание: Эту работу можно было бы упростить, создав файл сценария (пакетный или командный) и выполнив команды сценария.
Команда для извлечения моего файла метрик выглядит примерно так:
java -cp .\build\fop.jar;.\lib\avalon-framework.ja r;.\lib\xml-apis.jar;.\lib\xercesImpl.jar;.\lib\xalan.jar org.apache.fop.fonts. pps.TTFReader -ttcname "MS Mincho" D:\fop-0.20.5\msmincho.ttc D:\fop-0.20.5\ttfcm.xml |
При этом отобразится следующая информация:
TTF Reader v1.1.1 Reading D:\fop-0.20.5\msmincho.ttc... This is a TrueType collection file with 2 fonts Containing the following fonts: * MS Mincho MS PMincho Number of glyphs in font: 17807 Postscript format 3 Creating xml font file... Creating CID encoded metrics Writing xml font file D:\fop-0.20.5\ttfcm.xml... This font contains no embedding license restrictions |
Уделите особое внимание последней строке отображаемой информации, которая указывает, является ли используемый вами шрифт встраиваемым легально.
Настройка файла userconfig.xml
Файл userconfig.xml используется для указания FOP (и, в конечном счете, нашему генератору отчетов), где найти шрифты, которые вы хотите встроить. Этот файл может быть расположен в каталоге с подключаемыми модулями (com.ibm.xtools.publish.uml2_6.0.0). Это ключ для поиска, поскольку в зависимости от установленного программного обеспечения этот каталог может быть в различных (относительно INSTALLDIR) местах:
[INSTALLDIR]/rsm/eclipse/plugins/com.ibm.xtools.publish.uml2_6.0.0
Найдя подключаемые модули вы, возможно, захотите переместиться в каталог с отчетами:
../com.ibm.xtools.publish.uml2_6.0.0/resources/reports
В этом каталоге вы увидите файл userconfig.xml. Откройте его и переместитесь вниз; вы увидите секцию шрифтов примерно такого вида:
< !-- ******************************************************* Add fonts here ******************************************************* -- > < fonts > < font > < /font > < font > < /font > < /fonts > |
Вы должны добавлять записи в эту секцию.
Примечание: большая часть этой секции закомментирована по умолчанию, поэтому убедитесь в том, что добавленные вами данные не закомментированы. Блок комментария начинается с < !- и заканчивается >.
Запись в userconfig.xml (на Linux-машине) может выглядеть примерно так:
< font metrics-file="/myfonts/ttfcm.xml" embed-file="/myfonts/msmincho.ttc" kerning="yes" > < font-triplet name="Mincho" style="normal" weight="normal"/ > < font-triplet name="Mincho" style="normal" weight="bold"/ > < font-triplet name="Mincho" style="italic" weight="normal"/ > < font-triplet name="Mincho" style="italic" weight="bold"/ > < /font > < /fonts > |
После завершения добавления шрифтов сохраните файл и закройте его.
Редактирование вашего отчета для использования шрифта
Последний шаг - разрешить вашему отчету использовать шрифт. Например, для разрешения вашему примеру отчета (MetricsReport.xsl) использовать шрифт Mincho, вы должны найти все соответствующие секции < fo:block
или отредактировать (или добавить) тег семейства шрифтов.
Обновленный блок может выглядеть примерно так:
< fo:block font-family="Mincho" text-align="center" font-weight="bold" > ...< /fo:block > |
Сохраните отчет.
Теперь вы готовы запустить и сгенерировать PDF-файл, содержащий ваш специальный шрифт. Для проверки того, что ваш PDF-отчет содержит шрифт, вы можете посмотреть свойства документа в программе Adobe reader.
Механизм генерирования отчета является гибким и спроектирован таким образом, что вы можете добавить ваши собственные отчеты (как описано выше). Эта гибкость позволяет вам записать XSL, который выводит данные в любом формате, поддерживаемом XSL-преобразованиями. Например, обычный текст, HTML, DHTML и CDF. Далее приведен пример выпуска отчета в формате HTML.
Генерирование отчета в формате HTML состоит из определения XSL-шаблона отчета, регистрации его в системе подготовки отчетов и, наконец, запуска RSA/RSM и выполнения нового зарегистрированного отчета. В этом разделе я покажу вам, как создать очень простой отчет, который будет создавать html-файл, содержащий имя модели.
Скопируйте "ModelDiagramReport.xsl" и назовите его, например, "SimpleHTMLReport.xsl".
Теперь соедините этот шаблон со средой подготовки отчетов, используя файл reports.manifest. Запись в этом файле должна выглядеть примерно так:
<reportManifest name="Simple HTML Report" description="A simple HTML report" author="Myself" xsltFile="resources/reports/SimpleHTMLReport.xsl" outFileExt="html" USING_ICONS="true" EXTRACTING_DIAGRAMS="true" DIAGRAM_FORMAT="JPG" DETAIL_LEVEL="FULL"> </reportManifest> |
Примечание: Полное объяснение процесса регистрации отчета приводилось ранее в этой статье.
Откройте ваш новый шаблон "SimpleHTMLReport.xsl" в редакторе и начните с удаления всех существующих секций шаблонов и обратных вызовов расширения Java FOP для PDF-генерирования. Шаблон должен выглядеть примерно следующим образом:
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xmi="http://www.omg.org/XMI" xmlns:uml="http://www.eclipse.org/uml2/1.0.0/UML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:publish="http://www.ibm.com/Rational/XTools/Publish" xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect" extension-element-prefixes="redirect" xmlns:xalan="http://xml.apache.org/xslt" xmlns:java="http://xml.apache.org/xalan/java" exclude-result-prefixes="xmi uml xsi publish xalan java"> <!-- === imports, and variable assigns from the GUI==== --> <xsl:import href="../utilities/StringUtility.xsl"/> <xsl:import href="GlobalVariables.xsl"/> <xsl:import href="ReportUtility.xsl"/> <xsl:output method="xml"/> <!-- Style sheet parameters --> <xsl:param name="outputDir"/> <!-- Location for root of output --> <xsl:param name="imagesDir"/> <!-- Location of images directory --> <xsl:param name="tempDir"/> <!-- Location of temp directory --> <xsl:param name="rootFile" select="'root.html'"/> <!-- The name of the root html file --> <xsl:param name="overviewFile"/> <!-- The name of the overview html --> <xsl:param name="foContextDir"/> <!-- this is where we will add our templates in a minute--> </xsl:stylesheet> |
Добавьте два шаблона в комментариях:
<!-- this is where we will add our templates in a minute-->
Для этого создайте шаблон точки входа, используя символ соответствия "/" для указания XSL места, с которого будет начинаться работа. Это выглядит примерно так:
<!-- starting Template --> <xsl:template match="/"> <xsl:apply-templates select="publish:report/uml:Model/publish:report/ownedMember"/> </xsl:template> |
Затем добавьте секцию второго шаблона, которая вызывается из основного шаблона "/" шаблона и выглядит примерно так:
<!--called template that generates a simple html page, with model name --> <xsl:template match="uml:Model/ownedMember"> <xsl:variable name="reportName"> <xsl:value-of select="$rootFile"/> </xsl:variable> <xsl:variable name="reportFullPathName"> <xsl:value-of select="concat($outputDir, $fileSep, $reportName)"/> </xsl:variable> <redirect:open select="$reportFullPathName"/> <redirect:write select="$reportFullPathName"> <html> <xsl:variable name="title" select="@name"/> <body> The Name of the Model is: <b> <xsl:value-of select="@name"/> </b> </body> </html> </redirect:write> <redirect:close select="$reportFullPathName"/> </xsl:template> |
Обратите внимание, что трюк в генерировании HTML сводится к использованию команд XSL-обработки для вывода вашего потока данных в файл. В данном случае мы используем redirect:open, redirect: write и redirect:close для выполнения работы по выводу наших результатов в файл.
Наконец, сохраните вашу работу. Теперь вы готовы к запуску. Если у вас имеются работающие RSA или RSM, вам, возможно, понадобиться завершить приложение и перезапустить его, для того чтобы новый шаблон был исполняемым.
Это все по данному вопросу. Для получения более детальных отчетов вам необходимо просто улучшить соответствие вашего шаблона запросу и создать шаблоны для обработки данных. Наконец, вам необходимо выводить результаты в файл, используя команды redirect.
В данном разделе рассматривается прямое изменение шаблонов публикации моделей для получения вашей модели в HTML-форме. Перед тем как начать работу с XSL-шаблонами, вы должны сохранить эти файлы.
Примечание: В этой статье предполагается, что вы знакомы с XSL, XPATH и смежными технологиями.
По умолчанию стартовая страница использует стандартные график и схему, но, возможно, вы захотите отобразить логотип вашей организации или другую информацию. Для настройки этой страницы вам необходимо отредактировать файл под названием ProjectPublish.xsl, который находится в каталоге с подключаемыми модулями:
...\com.ibm.xtools.publish.core_6.0.0\resources
Чтобы изменить отображаемый баннер, откройте файл ProjectPublish.xsl и измените следующую строку для указания на ваше изображение:
< img src="overview_banner.jpg"/ > |
Примечание: изображение должно быть расположено либо на старом месте, либо путь должен быть указан как часть тега информации об изображении.
Теперь изменим шрифт, используемый для отображения строки Published Models. Вы можете сделать это, используя преимущества CSS-информации (Cascading Style Sheet). Приведенный ниже код описывает CSS-информацию об этой строке:
< p class="LargeTitle" > |
Эта строка кода по существу говорит: "используйте CSS-информацию, описанную в секции LargeTitle".
Так как же включается CSS-информация? Если вы посмотрите на верхнюю часть ProjectPublish.xsl, то увидите, что этот файл трансформации будет генерировать следующий HTML.
< link href="content\WebPublish.css" rel="stylesheet" type="text/css"/ > |
Предметом рассмотрения в этом коде является "content\Webpublish.css". Это место, куда записывается реальный CSS-файл при генерировании выходной информации. То есть, теперь вопрос можно задать так: "где первоначально расположена CSS-информация?" Да, CSS-файлом первоначально является другой файл, называемый Css.xsl, который размещен в следующем каталоге:
plugins/com.ibm.xtools.publish.uml2_6.0.0/resources
Просмотрев этот файл в поисках LargeTitle, мы находим:
.LargeTitle { font-size:large; font-weight:600; } |
Измените это на что-нибудь аналогичное следующему фрагменту:
.LargeTitle { color: #ff0000; font-family: Helvetica; font-size: 18pt; text-decoration : underline; } |
Сохраните файл и сгенерируйте вашу модель. Вы теперь должны иметь новую стартовую страницу, на которой показывается ваше изображение и текст Published Models большим красным шрифтом с подчеркиванием.
Сейчас вы увидите, как настроить внешний вид, поведение и содержимое элемента модели (в данном случае, меняется генерируемая информация для элементов UML Attribute). Для этого создайте модель, которая имеет класс по крайней мере с одним атрибутом (как показано на рисунке 5).
Рисунок 5: Модель с классом, имеющим один атрибут
Первым шагом является изменение выходной информации для атрибута A1. В настоящее время (если для модели генерируется HTML) генерируется выходная информация, показанная на рисунке 6.
Рисунок 6: Отображаемые по умолчанию HTML-данные для атрибута
Давайте сделаем это более привлекательным, выполнив следующие действия:
Для завершения этой задачи должен быть изменен XSL. Начните с просмотра файла NamedElementContent.xsl, который расположен в следующем каталоге:
...\plugins\com.ibm.xtools.publish.uml2_6.0.0\resources\uml2content\
Этот файл отвечает за большинство деталей преобразования, поскольку большинство элементов модели имеют похожую внутреннюю структуру. После открытия этого файла найдите OwnedAttribute, для которого вы должны изменить шесть записей. Эти участки XSL-файла представляют собой код преобразования, относящийся к атрибутам элементов.
Примечание: XSL называет UML-атрибут OwnedAttribute, поскольку промежуточные узлы XML-файла (Extensible Markup Language) для атрибута называются 'OwnedAttribute'. Вот фрагмент промежуточного XML, который ваш XSL будет обрабатывать для атрибута:
... < ownedAttribute name="A1" publish:icon="593409.jpeg" publish:qualifiedname="ClassModel::Package1::C1::A1" ... < /< ownedAttribute > ... |
В данном случае вы интересуетесь деталями атрибута, поэтому идем дальше и ищем следующий комментарий:
< !-- Attribute Details Table -- > Теперь в < !-- Attribute Details Table -- > ищем следующие строки: < a name="attribute{@xmi:id}" > < xsl:value-of select="@name"/ > < /a > Меняем их на: < a name="attribute{@xmi:id}" > < xsl:value-of select="@publish:qualifiedname"/ > < /a >
Это приведет к отображению FQN-атрибута тэга OwnedAttribute.
Примечание: Для эффективной настройки XSL вы должны понимать, что именно будет обрабатываться. Для этого вы можете посмотреть на промежуточную форму. Перейдите к месту, где вы публикуете модель, и просмотрите содержимое каталога, в котором вы обнаружите несколько HTML и XML-файлов. XML-файлы представляют модель, которая обрабатывается XSL. Вы можете исследовать XML при помощи XML-редактора для поиска информации о том, что будет обрабатываться. В данном примере поиск промежуточных данных для атрибута показал, как записать указанное полностью имя. Эту информацию содержит атрибут тега publish:qualifiedname . Более подробную информацию об этом вы можете найти ниже в разделе "Более глубокий взгляд на детали публикации модели".
Затем пропустите еще несколько строк для того, чтобы найти секцию XSL-кода, генерирующего сигнатуру атрибута. Для изменения шрифта сигнатуры атрибута отредактируйте следующие строки:
< pre > < xsl:value-of select="publish:properties/publish:property[@name='Visibility']/@publish:value"/ > < xsl:text > < /xsl:text > < xsl:apply-templates select="./publish:properties/publish:property[@name='Type']"/ > < xsl:value-of select="@name"/ > < /pre > |
В частности вас интересует HTML-тег
< pre > |
Поскольку нашей целью является добавление шрифта и цвета, он кажется хорошим местом для использования CSS-информации. Опять же, вам нужно отредактировать файл Css.xsl. Этот файл находится в корневом каталоге папки ресурсов. Отредактируйте файл Css.xsl и добавьте:
.AttributeSig { font-weight:500; font-size:larger; color:#0099FF; } |
Теперь сохраните файл Css.xsl.
Затем перейдите назад к файлу NamedElementContent.xsl и отредактируйте HTML-тег < pre >, изменив его на:
< pre class="AttributeSig" > |
Это все будет помещено в нашу информацию о стиле, поэтому при генерировании HTML сигнатура будет иметь голубой цвет.
Наконец, давайте изменим цвет таблицы. Для этого найдите следующий комментарий в коде на несколько строк ниже того места, которое вы только что редактировали.
< !-- Output the properties table -- > < xsl:apply-templates select="publish:properties" > < xsl:with-param name="indentCount" select="1"/ > < xsl:with-param name="includeTitle" select="false()"/ > < /xsl:apply-templates > |
Примечание: Существует два комментария в файле с названием < !-- Output the properties table -- >
. Один из нужных вам находится на несколько строк ниже места нашего последнего редактирования.
Код вызывает шаблон, и шаблон по сигнатуре соответствует вызову. В данном случае шаблон может быть найден в файле UML2Utility.xsl, находящимся в каталоге resources\utility. В UML2Utility.xsl найдите следующее:
< xsl:template name="outputPropertyTable" match="publish:properties" > |
После обнаружения шаблона поищите в теле следующую информацию:
< table class="PropertiesTable" cellpadding="4" cellspacing="0" class=borderall > |
В данном экземпляре вам необходимо добавить еще один атрибут к тегу, поэтому измените эту строку:
< table class="PropertiesTable" cellpadding="4" cellspacing="0" class=borderall BORDERCOLOR="#0099FF" > |
Обратите внимание на то, что если вы пожелаете изменить цвет текста в таблице, то можете легко отредактировать CSS-запись PropertiesTable.
Результат вашей работы показан на рисунке 7.
Рисунок 7: Настроенный вывод информации
Оставшаяся часть статьи посвящена деталям структуры и дизайна и предлагает более глубокое рассмотрение работы с XSL публикации моделей. Ее можно рассматривать как дальнейший ресурс для настройки и работы с вашей XSL-средой.
Публикация модели осуществляется в несколько шагов, которые мы кратко обсудим.
Для публикации модели вы должны выполнить следующее:
С этого момента модель публикуется, а программа создает Document Object Model (DOM) и записывает ее в промежуточный XML-файл (данные). Эти промежуточные XML-данные затем потребляются XSL-шаблонами, которые в свою очередь генерируют HTML-версию модели, отображающуюся в окне браузера. На рисунке 8 проиллюстрирован этот процесс.
Рисунок 8: От модели к HTML-страницам
Обратите внимание, что промежуточные XML-файлы создаются для каждого пакета в модели. Название корневого xml-файла дается с использованием следующего правила:
__u0xoBbwEdmVsY8gwr-g8A_root.xml
Первая последовательность символов генерируется способом, аналогичным генерированию Globally Unique Identifier (GUID), для гарантии уникальности названия файла.
В этом разделе кратко описывается то, как визуальные элементы соотносятся с физической схемой файловой системы. Это поможет вам понять как физическую схему XSL-файлов, так и совместную работу компонентов системы для построения публикуемой модели.
Начнем с внешнего вида вашей модели (показанного на рисунке 9).
Рисунок 9: Структура вашей модели
На рисунке 10 изображена начальная HTML-страница, появляющаяся при публикации этой модели.
Рисунок 10: Начальная HTML-страница
После перехода по ссылке на модель (в данном случае jdk17rev) в окне отобразится детальная информация о модели. Эта детальная информация содержит набор фреймов (frameset), показанный на рисунке 11 и состоящий из трех основных фреймов:
Рисунок 11: Детальная информация о модели
Фрейм Element Context состоит из одной HTML-страницы (см. рисунок 12), содержащей:
XSL-файлы расположены в каталоге установки продукта; в Linux (а также в операционной системе Microsoft Windows) они могут быть обнаружены в следующем plug-in-каталоге:
[Product Install Directory]/rsm/eclipse/plugins/com.ibm.xtools.publish.uml2_6.0.0
Как уже упоминалось раньше, com.ibm.xtools.publish.uml2_6.0.0 может находиться в другом месте в зависимости от вашей установки.
После определения каталога с подключаемыми модулями перейдите в каталог resources:
../com.ibm.xtools.publish.uml2_6.0.0/resources
Здесь вы увидите структуру, похожую на изображенную на рисунке 13:
Рисунок 13: Физическая схема файловой системы
В таблице 2 описано, для чего предназначена и что содержит каждая папка с общей точки зрения. В следующих таблицах (3-7) эти папки рассмотрены более детально.
Обзор схемы папок и файлов
Название папки | Описание |
---|---|
.(текущий каталог, например /resources/) | Содержит XSL-файлы верхнего уровня, предназначенные для: построения структуры html-файла, описания схемы стиля HTML-элемента, определения глобальных переменных и хранения точки входа XSL верхнего уровня. |
i10n | Строковые таблицы для данного языка. |
Reports | Шаблоны для генерирования отчетов. |
Uml2content | Зависящие от типа XSL элементов модели. |
Utility | Вспомогательный файл для обычных XSL-преобразований. |
Таблица 3: Детальная информация о файлах папки Resources
Папка Resources | Папка верхнего уровня, содержащая остальные папки. |
WebPublish.xsl | Точка входа, в которой XSL применяется к модели. Она включает большинство других файлов (через XSL-команды import или include); рассматривайте шаблон '/' как начальную точку для преобразования. |
Css.xsl | Содержит информацию о таблице стилей, используемую сгенерированными XSL HTML-элементами. |
FileNameGeneration.xsl | Используется для генерирования зависящих от пути имен файлов, для того чтобы элементы HTML-ссылок знали, где найти физический файл для загрузки. |
GenerateAllElementsList.xsl | Создает левый нижний фрейм набора фреймов и представляет собой список элементов модели. |
GenerateFrameSet.xsl | html-файл верхнего уровня, формирующий набор фреймов HTML. |
GeneratePackageElementsList.xsl | Отвечает за генерирование информации об элементах, найденных внутри пакета. |
GeneratePackageList.xsl | Генерирует HTML-файл списка пакетов для верхнего левого окна навигации и страницу обзора содержимого для модели или пакета верхнего уровня. |
GlobalVariables.xsl | Содержит глобальные переменные, используемые большинством XSL-шаблонов. |
NavigationBar.xsl | Содержит шаблоны, формирующие верхний фрейм, который содержит навигационную информацию, основанную на контексте выбранного элемента. |
Таблица 4: Детальная информация о файлах папки i10n
Папка i10n | Каталог i10n содержит зависящие от языка строковые таблицы, используемые при генерировании HTML. |
Localize.xsl | Содержит шаблоны, способные извлекать локализованные строки из файла messages.xml. |
messages.xml | Файл с локализованными строками |
Таблица 5: Детальная информация о файлах папки Reports
Папка Reports | Эта папка содержит реализации конкретных отчетов и представляет два примера отчетов MetricsReport.xsl и ModelDiagramReport.xsl. |
MetricsReport.xsl | Пример отчета Metrics. |
ModelDiagramReport.xsl | Пример отчета Diagram. |
ReportUtility.xsl | Вспомогательные процедуры отчетов. |
Userconfig.xml | Используется при встраивании пользовательских шрифтов в PDF-документ (см. раздел "Детали встраивания шрифта" для получения дополнительной информации). |
Reports.manifest | Место, где вы регистрируете новый пользовательский отчет. |
Таблица 6: Детальная информация о файлах папки uml2content
Папка uml2content | Эта папка содержит набор файлов XSL-шаблонов, используемых при обработке элементов UML Model различного типа. Соглашение о наименовании неточно следует именам UML-элементов. Наиболее стоящие упоминания файлы в этом разделе перечислены ниже. |
NamedElementContent.xsl | Вызывается большинством шаблонов для фактического выполнения работы по генерированию детальной информации об элементе. (Это похоже на шаблон базового класса, большинство шаблонов в конечном итоге вызывают его.) Это самый большой и сложный шаблон. |
NestedClassifierContent.xsl | Работает непосредственно с вложенными классификаторами. |
OwnedMemberContext.xsl | Промежуточная форма содержит нотацию Owned-членов. Этот файл вызывается, когда эти члены обрабатываются. |
DiagramContent.xsl | Генерирует содержимое диаграммы |
Таблица 7: Детальная информация о файлах папки Utility
Папка Utility | Содержит несколько вспомогательных файлов, который включают хорошо известные и часто используемые шаблоны. |
HTMLUtility.xsl | Содержит процедуры для форматирования и генерирования HTML-элементов, таких как таблицы, ссылки и анкеры (anchor). |
StringUtility.xsl | Содержит процедуры для манипулирования строками (например, подстановка строк). |
UMLUtility.xsl | Содержит процедуры для манипулирования промежуточными XML модели, так что вы можете обращаться к различной информации об UML-элементе, такой как параметры метода, возвращаемые значения и свойства элемента. |
Этот раздел был написан исключительно для того, чтобы помочь вам найти файлы и инструментальные средства для отладки XSL публикации модели. Это не учебник по установке и отладке.
Для большинства небольших изменений вам, вероятно, достаточно будет использовать для редактирования XSL обычный текстовый редактор. Но для более объемной работы вы, возможно захотите использовать XSL-отладчик.
Для отладки XSL вы можете применить один из следующих подходов:
Оба эти подхода занимают свою нишу, но если вы решили использовать полнофункциональный редактор или отладчик, в настоящее время на рынке присутствуют продукты с различной степенью функциональности и разные по стоимости. Вот несколько из них:
Редакторы / отладчики
http://www.oxygenxml.com
http://www.xmlspy.com
http://xmlbuddy.com
Примечание: мы оставляем решение о целесообразности использования любого из них за вами.
Для отладки XSL вы должны иметь несколько вещей:
Промежуточные XML-файлы создаются для каждого пакета в модели. Имя корневого XML-файла создается путем присоединения _root.xml в качестве завершающих символов к уникальному названию:
__u0xoBbwEdmVsY8gwr-g8A_root.xml
XSL мы рассмотрели ранее и вы, конечно, знаете, как использовать отладчик.
Хочется упомянуть следующих людей за их комментарии и вклад в создание этой статьи: Гэри Кларк (Gary Clarke), Сатиш Доши (Satish Doshi), Борис Дубауски (Boris Dubauski), Раджив Сикка (Rajeev Sikka) и Хип Тью (Hiep Tieu).