XSLT
Шрифт:
</PLANET>
.
.
.
Полезно знать об этом при создании фрагментов XML или выполнении другой работы. Тем не менее, заметим, что во всех законченных документах XML — даже написанных самостоятельно при помощи разнообразных приложений XML, таких как WML — в начале обязательно должно быть объявление XML.
Создание уникальных идентификаторов при помощи generate-id
При
generate-id
. В следующем примере я добавляю составленное из гиперссылок оглавление в
planets.html
. Для создания оглавления я прохожу в цикле по всем планетам при помощи элемента <xsl:for-each>
. На каждом шаге цикла я создаю гиперссылку и при помощи шаблона значений атрибута создаю атрибут HREF
, который устанавливается в уникальный идентификатор для рассматриваемой планеты. Заметьте, что, несмотря на свое имя, функция generate-id
создает только строковый идентификатор элемента, она не создает атрибуты ID: <?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>
<xsl:for-each select="PLANET">
<H2><A href="#">
<xsl:value-of select="NAME"/>
</A></H2>
<P/>
</xsl:for-each>
.
.
.
Эта таблица стилей (листинг 6.12) генерирует для каждой планеты идентификатор и создает требуемые гиперссылки. Функция
generate-id
не только создает для элемента новый идентификатор,
generate-id
к этому элементу. В данном случае это удобно, поскольку таким образом я могу создать закладки гиперссылки в HTML-таблице данных планет, установить по очереди атрибут <NAME>
закладки в идентификатор для каждого элемента <PLANET>
— так, чтобы он стал гиперссылкой-назначением. Листинг 6.12. Применение функции generate-id
<?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>
<xsl:for-each select="PLANET">
<H2><A href="#" >
<xsl:value-of select="NAME"/>
</A></H2>
<P/>
</xsl:for-each>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<xsl:apply-templates/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="PLANET">
<TR>
<TD><A NAME="{generate-id(.)}">
<xsl:value-of select="NAME"/>
</A></TD>
<TD><xsl:apply-templates select="MASS"/></TD>
<TD><xsl:apply-templates select="RADIUS"/></TD>
<TD><xsl:apply-templates select="DAY"/></TD>
Поделиться:
Популярные книги
Я все еще граф. Книга IX
9. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Французская новелла XX века. 1900–1939
Проза:
классическая проза
6.25
рейтинг книги
Чужак из ниоткуда 2
2. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Бастард
1. Последняя жизнь
Фантастика:
фэнтези
героическая фантастика
попаданцы
5.86
рейтинг книги
Потомок бога 3
3. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Последний Паладин. Том 4
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ермак. Телохранитель
2. Ермак
Фантастика:
альтернативная история
7.50
рейтинг книги
Последний Герой. Том 2
2. Последний герой
Фантастика:
попаданцы
альтернативная история
4.50
рейтинг книги
Снайпер
3. Жнец
Фантастика:
боевая фантастика
попаданцы
5.60
рейтинг книги
Наследник
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
На границе империй. Том 4
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
Хозяин теней 2
2. Громов
Фантастика:
аниме
попаданцы
фэнтези
7.00
рейтинг книги
Тактик
2. Офицер
Фантастика:
альтернативная история
7.70
рейтинг книги
На границе империй. Том 10. Часть 13
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00