Еще один аспект XSLT, в котором вам потребуется программирование, это поддержка XSLT на серверах. В качестве демонстрации далее я преобразую planets.xml
при помощи planets.xsl
с использованием активных серверных страниц (Active Server Pages, ASP) фирмы Microsoft, серверных страниц Java (Java Server Pages, JSP) фирмы Sun и сервлетов (servlet) Java, выполняющихся на web-серверах и возвращающих результирующий документ браузеру пользователя.
За недостатком места мы не можем подробно рассмотреть эти технологии, и если вы с ними не знакомы, вы можете получить дополнительную информацию в Интернете (как всегда, URL могут измениться):
• ASP. http://msdn.microsoft.com/workshop/c-frame.htm#/workshop/server/Default.asp (руководство и документация по ASP фирмы Microsoft);
• JSP. http://java.sun.com/products/jsp/ (главная страница Sun, посвященная JSP);
• Сервлеты. http://java.sun.com/products/servlet/ (главная страница Sun, посвященная сервлетам).
Применение XSLT с активными серверными страницами
Активные серверные страницы (Active Server Pages, ASP) выполняются на серверах Microsoft Windows NT или 2000, поэтому в ближайшем примере для преобразования planets.xml
при помощи planets.xsl
и возврата результата в виде документа HTML я воспользуюсь процессором Microsoft MSXML.
Это все то же преобразование, которое нам уже много раз встречалось, — создание HTML-таблицы данных о планетах — но на этот раз преобразование будет выполнено на web-сервере, который затем отправит его пользователю. В начале сценария ASP я установил тип содержимого MIME результирующего документа в « text/html
», поэтому он будет трактоваться как HTML:
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
В этом первом примере я создам таблицу стилей XSLT для форматирования файла planets.xml
и преобразования его в planets.fo
, использующую форматирующие объекты для задания шрифтов, стилей и цветов. Затем я воспользуюсь процессором fop и преобразую planets.fo
в файл planets.pdf
, который показан на рис. 11.1.
Рис. 11.1.Документ PDF, созданный при помощи форматирующих объектов
Как видно на рис. 11.1, в нашем первом примере я применил средства форматирования текста: установку шрифта, подчеркивание текста, выделение текста курсивом и даже установка цвета текста. (Хотя этого и не видно на рис. 11.1, заголовок «The Planets Table» выделен светло-голубым цветом.)
Первый шаг при создании документа на рис. 11.1 — применить таблицу стилей XSLT для преобразования planets.xml
в planets.fo
.
Преобразование в XSL-FO при помощи таблицы стилей XSLT
В этой главе я создам таблицу стилей для преобразования planets.xml
в planets.fo
. Я буду создавать таблицу шаг за шагом; для справки я приведу ее окончательный вид (листинг 11.2).
Листинг 11.2. planets.xsl
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
page-height="400mm" page-width="300mm"
margin-top="10mm" margin-bottom="10mm"
margin-left="20mm" margin-right="20mm">
margin-top="0mm" margin-bottom="10mm"
margin-left="0mm" margin-right="0mm"/>
line-height="48pt" font-family="Times" color="blue">
The Planets Table
line-height="48pt" font-family="Times"
font-style="italic">
Planet:
font-family="Times">
Mass
:
[Earth = 1]
font-family="Times">
Day
:
[Earth = 1]
font-family="Times">
Radius
:
miles
font-family="Times">
Density
:
[Earth = 1]
font-family="Times">
Distance
:
million miles
После применения этой таблицы стилей для преобразования planets.xsl
будет получен файл planets.fo
, который при помощи форматирующих объектов XSL-FO создает документ с видом, показанным на рис. 11.1. Вот как выглядит planets.fo
(листинг 11.3).
Листинг 11.3. planets.fo
margin-left="20mm" margin-bottom="10mm"
margin-top="10mm" page-width="300mm"
page-height="400mm" master-name="page">
margin-bottom="10mm" margin-top="0mm"/>
line-height="48pt" font-size="36pt" font-weight="bold">
The Planets Table
line-height="48pt" font-size="28pt" font-weight="bold">
Planet:
Mercury
Mass
:
.0553
[Earth = 1]
:inline text-decoration="underline">
Day
:
58.65
[Earth = 1]
Radius
:
1516
miles
Density
:
.983
Читать дальше