XSLT
Шрифт:
</xsl:if>
.
.
.
</xsl:stylesheet>
Проверка версии XSLT может понадобиться, если вы хотите воспользоваться возможностями, которые появились в последних версиях.
unparsed-entity-uri
Функция
unparsed-entity-uri
предоставляет доступ к объявлениям неразобранных сущностей в DTD или схеме исходного документа. Неразобранная сущность (unparsed entity) — это обычно двоичные данные, такие как файл с рисунком. Функция применяется следующим образом: string unparsed-entity-uri(name)
В функцию передается имя name неразобранной сущности, и функция возвращает для нее идентификатор. В следующем примере (листинг 8.6) я добавил в
planets.xml
DTD и объявил три неразобранных сущности, соответствующих рисункам планет — image1
, image2
и image3
, — и обратился к ним, добавив в каждый элемент <PLANET>
атрибут IMAGE
. Листинг 8.6. planets.xml с неразобранными сущностями
<?xml version="1.0"?>
<?xml-stylesheet type="text/xml" href="#"?>
<!DOCTYPE PLANETS [
<!ELEMENT PLANET (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME,MASS,RADIUS,DAY)>
<!ELEMENT NAME (#PCDATA)>
<!ELEMENT MASS (#PCDATA)>
<!ELEMENT RADIUS (#PCDATA)>
<!ELEMENT DAY (#PCDATA)>
<!ENTITY image1 SYSTEM "http://starpowder.com/image1.gif" NDATA GIF>
<!ENTITY image2 SYSTEM "http://starpowder.com/image2.gif" NDATA GIF>
<!ENTITY image3 SYSTEM "http://starpowder.com/image3.gif" NDATA GIF>
]>
<PLANETS>
<PLANET IMAGE="image1">
<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>
<PLANET IMAGE="image2">
<NAME>Venus</NAME>
<MASS UNITS="(Earth = 1)">.815</MASS>
<DAY UNITS="days">116.75</DAY>
<RADIUS UNITS="miles">3716</RADIUS>
<DENSITY UNITS="(Earth = 1)">.943</DENSITY>
<DISTANCE UNITS="million miles">66.8</DISTANCE><!--В перигелии-->
</PLANET>
<PLANET IMAGE="image3">
<NAME>Earth</NAME>
<MASS UNITS="(Earth = 1)">1</MASS>
<DAY UNITS="days">1</DAY>
<RADIUS UNITS="miles">2107</RADIUS>
<DENSITY UNITS="(Earth = 1)">1</DENSITY>
<DISTANCE UNITS="million miles">128.4</DISTANCE><!--B перигелии->
</PLANET>
</PLANETS>
(Заметьте, что некоторые процессоры XSLT основаны на разборщиках XML, которые проверяют, могут ли они найти сущность по заданному URI, — потому, если вы хотите опробовать этот пример, вставьте URI каких-либо настоящих рисунков.) Теперь я могу извлечь URI рисунков в таблице стилей при помощи функции
unparsed-entity-uri
и создать элементы HTML <IMG>
, применив эту функцию в результирующем документе (листинг 8.7). Листинг 8.7. Применение unparsed-entity-uri
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/PLANETS">
<HTML>
.
.
.
</HTML>
</xsl:template>
<xsl:template match="PLANET">
<TR>
<TD><xsl:value-of select="NAME"/>
<IMG SRC="{unparsed-entity-uri(@IMAGE)}"/>
</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="MASS">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
.
.
.
<xsl:template match="DAY">
<xsl:value-of select="."/>
Поделиться:
Популярные книги
Возвращение
5. Другая сторона
Фантастика:
боевая фантастика
6.23
рейтинг книги
Большие дела
7. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
На границе империй. Том 10. Часть 1
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Собрание сочинений в одной книге
Приключения:
морские приключения
прочие приключения
6.25
рейтинг книги
Третий. Том 2
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 5
5. Изгой
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Мой муж – чудовище! Изгнанная жена дракона
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга третья
3. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Гром с севера
8. Громовая поступь
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
В лапах зверя
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
Старый, но крепкий
1. Культивация без насилия
Фантастика:
рпг
уся
попаданцы
5.00
рейтинг книги
Лекарь Империи 3
3. Лекарь Империи
Фантастика:
городское фэнтези
аниме
дорама
фэнтези
попаданцы
5.00
рейтинг книги
Хозяин Теней
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00