дь шаблон може використовуватися декількома елементами xsl: apply-templates.
Для опису умов вибору тих чи інших елементів використовується мова XPath [1]. Об'єкт position () аналізованого мови служить для отримання позиції просматриваемого вузла в документі. Вираз * [position () gt; 11], вказує, що будуть обрані всі елементи, позиція яких більше 11. Оператор [] застосовується для перевірки істинності певного умови. Вузли нумеруються окремо для нащадків кожного предка.
. 3 Розробка шаблону XSL
При розробці xsl-шаблону застосовуються розширювані мови таблиці стилів: XSLT і XSL-FO. Перший застосовується для трансформації xml-документа (вибірки даних з XML), а другий - для опису представлення цих даних.
Специфікація, як в паперовому, так і в електронному вигляді, представлена ??у вигляді сторінок, кожна з яких має штамп. Даний елемент специфікації представлений на першому аркуші інакше, ніж на другому та наступних аркушах. Основні дані специфікації, які не належать штампу, і розташовуються у вигляді таблиці в центральній області сторінки, не статичні. Тобто, вони змінюються при переході від аркуша до аркуша. Дані штампів першої та інших сторінок, навпаки, статичні. Відповідно лінії, що утворюють штамп, також не змінюються.
Для опису представлення сторінок в мові XML-FO передбачено ряд елементів. Одним з таких елементів є fo: root. Цей об'єкт містить один елемент fo: layout-master-set і один або декілька елементів fo: page-sequence. У об'єкті fo: page-sequence розміщується основне вміст документа. Елемент fo: layout-master-set містить шаблони створюваних сторінок, які також іменуються майстер-сторінками [4]. Майстер-сторінка, що позначається fo: simple-page-master, задає загальний макет сторінки, включаючи відступи, розміри заголовків, основну область сторінки і так далі. Елемент fo: simple-page-master має атрибути, що містять значення розмірів: сторінки і відступів. Відповідні атрибути і їх опис, представлені в таблиці 3.3.
Таблиця 3.3
ЕлементОпісаніеPage-heightВисота страніциPage-widthШіріна страніциmargin-topОтступ сверхуMargin-bottomОтступ снізуmargin-leftОтступ слеваmargin-rightОтступ справа
Специфікація XML-FO передбачає розбиття сторінки на п'ять областей: центральної, заголовка, футера (нижньої області), кінцевою області (права частина листа) і початковій області. Розглянуті області задаються за допомогою дочірніх елементів об'єкта fo: simple-page-master, які представлені в таблиці 3.4.
Таблиця 3.4
ЕлементОпісаніе областиregion-bodyЦентральнаяRegion-beforeЗаголовокregion-afterФутерregion-startНачальнаяregion-endКонечная
Кожен, з розглянутих елементів, крім region-body, має атрибут extent. Для region-before і region-after він визначає висоту області. Для region-start і region-end - ширину. Центральної (основний) області відводиться вся сторінка, крім відступів [4]. Тобто, вона займає простір інших областей. Для неї існують атрибути, що задають відступи. Можна задати величини відступів таким чином, щоб основна область не перекривали інші. Імена розглянутих атрибутів, які задають відступи, відповідають атрибутам сторінки. Вони представлені в таблиці 3.3.
Демонстраційний приклад xsl-файла представлений нижче.
lt;? xml version= 1.0 encoding= utf - 8 ? gt;
lt; xsl: stylesheet version= 1.0 xmlns: xsl= # justify gt; lt; xsl: template match= specification" gt;
lt; fo: root gt;
lt; fo: layout-master-set gt;
lt; fo: simple-page-master page-height=laquo;210mmraquo;width=laquo;297mmraquo;top=laquo;8mmraquo;bottom=laquo;5mmraquo;left=laquo;5mmraquo;right=laquo;5mmraquo;gt;
lt; fo: region-body margin-top=laquo;27mmraquo;bottom=laquo;90mmraquo;left=laquo;0mmraquo;right=laquo;0mmraquo;/gt;
lt; fo: region-before extent= 27mm / gt;
lt; fo: region-after extent= 90mm / gt;
lt;/fo: simple-page-master gt;
lt;/fo: layout-master-set gt;
lt; fo: page-sequence gt;
... lt;! - Вміст документа - gt;
lt;/fo: page-sequence gt;
lt;/fo: root gt;
lt;/xsl: template gt;
lt;/xsl: stylesheet gt;
Як вже згадувалося раніше, перша сторінка специфікації, а точніше, її штамп, відрізняється від штампа, представленого на другій та наступних сторінках. Звідси можна зробити висновок, що подання цих сторінок має бути описано за доп...