Отключение вывода эскейп-последовательностей
Отключение вывода эскейп-последовательностей
При помощи <xsl:text> можно включать в выходной документ непосредственно символы < и &, а не последовательности < и &. Для этого следует установить атрибут 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">
<PLANET/>
</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 все равно заменят < на <, а > на >.
Правильный способ добавить в вывод элемент <!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">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
</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>
<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="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>
А вот результат:
<?xml version="1.0" encoding-"UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
.
.
.
Далее в книге будут приведены другие примеры использования <xsl:text>, в том числе — при обсуждении символов-разделителей далее в этой главе.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Создание последовательностей страниц: <fo:page-sequence>
Создание последовательностей страниц: <fo:page-sequence> Что такое последовательность страниц? Это ряд страниц с одинаковыми характеристиками (например, глава в книге), которые при желании можно форматировать одинаковым способом. Страницы в результирующем документе в
21.3.3. Тестирование последовательностей
21.3.3. Тестирование последовательностей Для проверки большинства последовательностей вам нужно просто войти в виртуальную консоль и запустить cat. Введите последовательности, которые вы хотите протестировать, и увидите результаты. Для ^[ нажмите клавишу <Esc>.Терминалы
Отключение фрагментации
Отключение фрагментации По умолчанию стек IPv6 фрагментирует исходящие пакеты по транспортной MTU. Приложениям типа traceroute автоматическая фрагментация не нужна, потому что им нужно иметь возможность самостоятельно определять транспортную MTU. Параметр сокета IPV6_DONTFRAG
Отключение питания
Отключение питания При отключении питания на компьютере-сервере все процессы обработки данных прерываются в самых неожиданных и (согласно закону Мерфи) опасных местах. В результате информация в базе данных может исказиться или вовсе пропасть Самый простой случай, когда
Урок № 100. Групповое проведение документов и восстановление последовательностей
Урок № 100. Групповое проведение документов и восстановление последовательностей С помощью команды Операции | Проведение документов осуществляется переход в режим группового проведения документов и восстановления последовательностей. При этом на экран выводится окно
4.21. Замена в текстовом файле последовательностей пробелов на один пробел
4.21. Замена в текстовом файле последовательностей пробелов на один пробел ПроблемаИмеется текстовый файл с последовательностями пробелов различной длины и требуется заменить каждое вхождение такой последовательности на единственный пробел.РешениеДля чтения
7.8. Выполнение для последовательностей операций над множествами
7.8. Выполнение для последовательностей операций над множествами ПроблемаИмеются последовательности, которые требуется реорганизовать с помощью операций над множествами, таких как объединение (union), различие (difference) или пересечение (intersection).РешениеДля этой цели
Отключение динамика ПК
Отключение динамика ПК Ключ:[HKEY_CURRENT_USERControl
15.10.4. Ранжирование последовательностей определенных пользователем преобразований
15.10.4. Ранжирование последовательностей определенных пользователем преобразований Фактический аргумент функции может быть неявно приведен к типу формального параметра с помощью последовательности определенных пользователем преобразований. Как это влияет на
Включение и отключение синхронного вывода
Включение и отключение синхронного вывода Синонимом синхронного вывода является Forced Writes. Когда поведение является синхронным ("Forced Writes включено"), новые записи, новые версии записей и удаления немедленно записываются на диск после пересылки. При асинхронном выводе ("Forced
Пример 13-2. невидимый пароль: Отключение эхо-вывода на терминал
Пример 13-2. невидимый пароль: Отключение эхо-вывода на терминал #!/bin/bashechoecho -n "Введите пароль "read passwdecho "Вы ввели пароль: $passwd"echo -n "Если кто-нибудь в это время заглядывал Вам через плечо, "echo "то теперь он знает Ваш пароль."echo && echo # Две пустых строки через "and list".stty -echo #
Пример 25-10. Исследование математических последовательностей
Пример 25-10. Исследование математических последовательностей #!/bin/bash# Пресловутая "Q-последовательность" Дугласа Хольфштадтера *Douglas Hofstadter):# Q(1) = Q(2) = 1# Q(n) = Q(n - Q(n-1)) + Q(n - Q(n-2)), для n>2# Это "хаотическая" последовательность целых чисел с непредсказуемым поведением.# Первые 20
Методы последовательностей
Методы последовательностей Все последовательности имеют множество методов обработки последовательностей, реализованных как методы расширения.Список методов последовательностей* Методы Print* Метод фильтрации Where* Метод проецирования Select* Метод проецирования SelectMany*
Методы для последовательностей
Методы для последовательностей Методы Print Описание методовМетоды приведены для последовательности sequence of T. function Print(delim: string := ): sequence of T; Выводит последовательность на экран, используя delim в качестве разделителя. function Println(delim: string := ): sequence of T; Выводит