Чтение онлайн

на главную - закладки

Жанры

Холзнер Стивен

Шрифт:

<xsl:value-of select="@UNITS"/>

 </xsl:template>

 <xsl:template match="RADIUS">

<xsl:value-of select="."/>

<xsl:text> </xsl:text>

<xsl:value-of select="@UNITS"/>

 </xsl:template>

 <xsl:template match="DAY">

<xsl:value-of select="."/>

<xsl:text> </xsl:text>

<xsl:value-of select="@UNITS"/>

 </xsl:template>

</xsl:stylesheet>

Новый результат виден на рис. 3.2, на котором между числовыми значениями и их единицами измерения вставлены пробелы.

Рис. 3.2. Вывод значений атрибутов, второй вариант 

Как видите, элемент

<xsl:text>
весьма удобен. Тем не менее вам следует знать вот что: по умолчанию элементы
<xsl:text>
заменяют символы, которые могут входить в разметку, на эскейп-последовательности. Например,
<xsl:text>Here is а greater-than sign: ></xsl:text>
будет выведено как «Here is a greater-than sign: &gt;,», а не как «Herе is a greater-than sign: >». А если попытаться использовать < внутри элемента
<xsl:text>
, процессор XSLT посчитает, что вы пытаетесь открыть элемент внутри элемента
<xsl:text>
, что неверно. Как же вывести значащие символы, такие как < и >, если есть необходимость? Это можно сделать путем отключения вывода ESC-последовательностей (disabling output escaping).

УСОВЕРШЕНСТВОВАНИЯ В XSLT 2.0

Один из вопросов, которые призван решить XSLT 2.0, это упрощение импорта подобного текста без разбора из других файлов.

Отключение вывода эскейп-последовательностей

При помощи

<xsl:text>
можно включать в выходной документ непосредственно символы < и &, а не последовательности
&lt;
и
&amp;
. Для этого следует установить атрибут
disable-output-escaping
элемента
<xsl:text>
в yes («да», по умолчанию он установлен в
no
, «нет»). В приведенном ниже примере я при помощи
<xsl:text>
непосредственно пишу текст "
<PLANET/>
" в выходной документ:

<?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>

Planets

</TITLE>

</HEAD>

<BODY>

<xsl:apply-templates select="PLANET"/>

</BODY>

</HTML>

 </xsl:template>

 <xsl:template match="PLANET">

<xsl:text disable-output-escaping="yes">

&lt;PLANET/&gt;

</xsl:text>

 </xsl:template>

</xsl:stylesheet>

Результат следующий:

<HTML>

 <HEAD>

<TITLE>

Planets

</TITLE>

 </HEAD>

 <BODY>

<PLANET/>

<PLANET/>

<PLANET/>

 </BODY>

</HTML>

Разумеется, не обязательно выводить

<PLANET/>
при помощи
<xsl:text>
: этот элемент можно было поместить непосредственно в элемент буквального результата. Но что делать в тех случаях, когда процессор XSLT не сможет распознать нужный нам в выходном документе элемент как фактический элемент? Например, в преобразованных документах XHTML вам потребуется
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
, но процессор XSLT сочтет, что это не хорошо сформированный XML. Как поместить этот элемент в выходные данные?

Можно попробовать поместить этот элемент в раздел

<!CDATA[ ]>
, как мы увидим в главе 6, и попытаться трактовать его как простые символьные данные, но процессоры XSLT все равно заменят < на
&lt;
, а > на
&gt;
.

Правильный способ добавить в вывод элемент

<!DOCTYPE>
— использовать атрибут
doctype-public
элемента
<xsl:output>
, как мы увидим в главе 6, но в качестве демонстрации для этих целей здесь я отключу вывод ESC-последовательностей в элементе
<xsl:text>
(хотя этот способ не рекомендован для создания элементов
<!DOCTYPE>
). Вот как это выглядит:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output method="xml"/>

 <xsl:template match="/PLANETS">

<xsl:text disab1e-output-escaping="yes">

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&gt;

</xsl:text>

<HTML>

<HEAD>

<TITLE>

The Planets Table

</TITLE>

</HEAD>

<BODY>

<H1>

The Planets Table

</H1>

<TABLE BORDER="2">

<TD>Name</TD>

<TD>Mass</TD>

<TD>Radius</TD>

<TD>Day</TD>

<xsl:apply-templates/>

</TABLE>

</BODY>

</HTML>

 </xsl:template>

 <xsl:template match="PLANET">

<TR>

<TD><xsl:value-of select="NAME"/></TD>

<TD><xsl:apply-templates select="MASS"/></TD>

Поделиться:
Популярные книги

Черный Маг Императора 18

Герда Александр
18. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 18

Газлайтер. Том 17

Володин Григорий Григорьевич
17. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 17

Сильнейший Столп Империи. Книга 1

Ермоленков Алексей
1. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 1

Звездная Кровь. Экзарх III

Рокотов Алексей
3. Экзарх
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Экзарх III

Третий Генерал: Том III

Зот Бакалавр
2. Третий Генерал
Фантастика:
попаданцы
рпг
аниме
5.00
рейтинг книги
Третий Генерал: Том III

Встреча

Видум Инди
7. Петя и Валерон
Фантастика:
рпг
аниме
попаданцы
5.00
рейтинг книги
Встреча

Кадет Морозов

Шелег Дмитрий Витальевич
4. Живой лёд
Фантастика:
боевая фантастика
5.72
рейтинг книги
Кадет Морозов

Защитник

Кораблев Родион
11. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Защитник

Лекарь Империи 4

Карелин Сергей Витальевич
4. Лекарь Империи
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Лекарь Империи 4

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Звездная Кровь. Экзарх VII

Рокотов Алексей
7. Экзарх
Фантастика:
боевая фантастика
рпг
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Звездная Кровь. Экзарх VII

Убивать чтобы жить 3

Бор Жорж
3. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 3

Настольная книга по теологии. Библейский комментарий АСД Том 12

Церковь христиан адвентистов седьмого дня
Научно-образовательная:
религиоведение
5.00
рейтинг книги
Настольная книга по теологии. Библейский комментарий АСД Том 12

Второгодка. Книга 3. Ученье свет

Ромов Дмитрий
3. Второгодка
Фантастика:
городское фэнтези
сказочная фантастика
альтернативная история
5.00
рейтинг книги
Второгодка. Книга 3. Ученье свет