XSLT
Шрифт:
node-set document(uri, base-uri?)
Функция принимает параметр
uri
, который может представлять собой URI читаемого документа или набор узлов, чьи строковые значения задают идентификаторы URI. Второй, необязательный параметр base-uri
представляет собой набор узлов, базовый URI которого используется для вычисления всех относительных URI, могущих находиться в параметре uri
. В следующем примере (листинг 8.2) я обрабатываю в процессоре XSLT один документ,
planets1.xml
, и также считываю и обрабатываю
planets2.xml
. Вот planets1.xml
. Листинг 8.2. planets1.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xml" href="#"?>
<PLANETS href="#">
</PLANETS>
Вот
planets2.xml
— в элементе <PLANET>
содержится одна планета (листинг 8.3). Листинг 8.3. planets2.xml
<?xml version="1.0"?>
<PLANET>
<NAME>Mercury</NAME>
<MASS UNITS="(Earth = 1)">.0553</MASS>
<DAY UNITS="days">58.65</DAY>
<RADIUS UNITS="miles">1516</RADIUS>
<DENSITY UNITS="(Earth = 1)">.983</DENSITY>
<DISTANCE UNITS="million miles">43.4</DISTANCE><!--B перигелии-->
</PLANET>
А вот таблица стилей
planets.xml
, которую я применяю к planets1.xml
. Таблица стилей содержит шаблон, выбирающий элемент <PLANET>
в planets1.xml
, и в этом шаблоне я считываю planets2.xml
при помощи <xsl:apply-templates>
и функции document
(листинг 8.4). Листинг 8.4. Применение функции document
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/PLANETS">
<HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<xsl:apply-templates select="document(@href)"/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="PLANET">
<TR>
<TD><xsl:value-of select="NAME"/></TD>
<TD><xsl:apply-templates select="MASS"/></TD>
<TD><xsl:apply-templates select="RADIUS"/></TD>
<TD><xsl:apply-templates select="DAY"/></TD>
</TR>
</xsl:template>
.
.
.
<xsl:template match="DAY">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
</xsl:stylesheet>
Эта
planets1.xml
и также считывает и обрабатывает planets2.xml
; вот полный результат — как видите, данные для planets2.xml
добавились нужным образом: <HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<TR>
<TD>Mercury</TD>
<TD>.0553 (Earth = 1)</TD>
<TD>1516 miles</TD>
<TD>58.65 days</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Функция
document
удобна, поскольку позволяет считывать на этапе выполнения такие дополнительные документы, как справка о правах владения или отказе от них, фирменный бланк и т.п.
Поделиться:
Популярные книги
Эпоха Опустошителя. Том II
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Жена со скидкой, или Случайный брак
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Виктор Глухов агент Ада. Компиляция. Книги 1-15
Виктор Глухов агент Ада
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 3
3. Орловское княжество
Фантастика:
аниме
сказочная фантастика
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Адвокат Империи 14
14. Адвокат империи
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Страж Кодекса. Книга IV
4. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще не бог. Книга XXXV
35. Дорогой барон!
Фантастика:
аниме
попаданцы
5.00
рейтинг книги
Я спас СССР! том 2
2. Я спас СССР
Фантастика:
альтернативная история
5.62
рейтинг книги
Кодекс Охотника XXXI
31. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наномашины, первоклашка! Том 4
4. Чего смотришь? Иди книгу читай
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Громовая поступь. Трилогия
Громовая поступь
Фантастика:
фэнтези
рпг
4.50
рейтинг книги
Снайпер
3. Жнец
Фантастика:
боевая фантастика
попаданцы
5.60
рейтинг книги
Кодекс Крови. Книга ХVI
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00