Замена специальных символов
Замена специальных символов
Как мы уже знаем, в XML есть несколько специальных символов, которые, как правило, заменяются процессором при выводе документа на соответствующие символьные или встроенные сущности. К примеру, для того, чтобы вывод был корректным XML-документом, процессор обязан заменять символы "<" и "&" на встроенные (< и &) или символьные (< и &) сущности.
Между тем довольно часто бывает необходимым выводить в выходящем документе символы разметки.
Пример
Пусть входящий документ содержит описание товара, заданное в секции CDATA:
<?xml version="1.0" encoding="utf-8"?>
<product>
<title>An elephant</title>
<description><![CDATA[This is a <em>big</em> and <b>grey</b> animal!]]></description>
</product>
Если мы будем преобразовывать этот документ с использованием шаблона
<xsl:template match="product">
<p>
<xsl:value-of select="title"/><xsl:text>
</xsl:text><br/>
<xsl:value-of select="description"/>
</p>
</xsl:template>
то в выходящем документе специальные символы будут заменены:
<p>An elephant
<br/>This is a <em>big</em> and <b>grey</b> animal!</p>
Для того чтобы избежать замены, можно воспользоваться атрибутом disable-output-escaping (отменить замену символов) элементов xsl:value-of и xsl:text. Этот атрибут может принимать значения "yes" и "no" ("no" — значение по умолчанию). Значение "yes" означает, что процессор при выводе текста, создаваемого xsl:text или xsl:value-of не должен заменять специальные символы. Если бы в предыдущем примере мы использовали преобразование.
Листинг 8.56. Преобразование, содержащее disable-output-escaping
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="product">
<p>
<xsl:value-of select="title"/><xsl:text>
</xsl:text><br/>
<xsl:value-of disable-output-escaping="yes" select="description"/>
</p>
</xsl:template>
</xsl:stylesheet>
то на выходе мы бы получили документ
<?xml version="1.0" encoding="utf-8"?>
<p>An elephant
<br/>This is a <em>big</em> and <b>grey</b> animal!</p>
Атрибут disable-output-escaping налагает ряд ограничений на использование текстовых узлов, генерируемых элементами xsl:text и xsl:value-of: эти узлы не могут входить в качестве текстового содержимого в узлы атрибутов, комментариев или инструкций по обработке. Кроме того, дерево, содержащее текстовые узлы, для которых была отменена замена специальных символов, не может быть приведено к строке или числу. И в том и в другом случае процессор может либо выдать ошибку преобразования, либо проигнорировать отмену замены специальных символов.
Атрибут disable-output-escaping имеет также и более концептуальное ограничение. Процессор сможет отменить замену символов только в том случае, когда он сам будет контролировать процесс вывода. Как мы уже обсуждали в предыдущем разделе, ситуации, когда процесс вывода не будет выполняться самим процессором, не такая уж и редкость. Поэтому следует использовать disable-output-escaping только в тех случаях, когда другой альтернативы нет или когда имеется полная уверенность, что этот метод будет работать.
Атрибут disable-output-escaping работает с методами вывода "xml" и "html", но не оказывает никакого влияния на метод "text", поскольку при этом методе все специальные символы и так выводятся без замены.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Включение сценариев и специальных символов в документы XHTML
Включение сценариев и специальных символов в документы XHTML В документы HTML сценарии встраиваются с помощью комментариев, то есть коды сценариев помещаются внутрь объявлений комментария:<!…Код сценария JavaScript или таблицы CSS….>В них же помещают объявления таблиц CSS, что
Вставка специальных элементов
Вставка специальных элементов Возможности программы предусматривают вставку в контент веб-страницы специальных элементов – гиперссылок, изображений, фреймов и т. д. Необходимый для этого инструмент находится на вкладке
5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ
5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ Системная функция mknod создает в системе специальные файлы, в число которых включаются поименованные каналы, файлы устройств и каталоги. Она похожа на функцию creat в том, что ядро выделяет для файла индекс. Синтаксис вызова системной функции
5.7.8 Удаление специальных символов
5.7.8 Удаление специальных символов После того, как все подстановки в командной строке сделаны, из нее еще удаляются все вхождения символов , ` и ", которые служили для отмены специального значения других
Центр специальных возможностей
Центр специальных возможностей Как и в более ранних версиях операционной системы, разработчики продолжают заботиться о пользователях, которые могут испытывать трудности при работе с операционной системой в связи с наличием проблем, например, со зрением или слухом.
2.32. Печать специальных символов
2.32. Печать специальных символов Метод dump позволяет получить графическое представление символов, которые обычно не печатаются вовсе или вызывают побочные эффекты:s1 = "Внимание" << 7 << 7 << 7 # Добавлено три символа ASCII BEL.puts s1.dump # Печатается:
2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы
2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы Бывает, что имеется строка с символами табуляции, а мы хотели бы преобразовать их в пробелы (или наоборот). Ниже показаны два метода, реализующих эти операции:class String def detab(ts=8) str = self.dup while (leftmost =
3.3. Экранирование специальных символов
3.3. Экранирование специальных символов Метод класса Regexp.escape экранирует все специальные символы, встречающиеся в регулярном выражении. К их числу относятся звездочка, вопросительный знак и квадратные скобки.str1 = "[*?]"str2 = Regexp.escape(str1) # "[*?]"Синонимом является метод
Определение класса символов и преобразование символов
Определение класса символов и преобразование символов Функция Краткое описание isalnum проверка на букву или цифру isalpha проверка на букву isascii проверка на символ из набора кодировки ASCII iscntrl проверка на управляющий символ isdigit проверка на десятичную
Названия специальных файлов
Названия специальных файлов В Windows существует ряд специальных папок, в которых содержатся файлы определенной категории. Например, в папке Избранное содержатся ссылки на любимые сайты пользователя.Проблема заключается в том, что в локализованных версиях Windows эти папки
Ввод специальных символов
Ввод специальных символов Если возникнет необходимость ввести символы, которых нет на клавиатуре, например знаки градуса, диаметра, символы греческого алфавита и т. п., то можно сделать это, используя кнопку Insert Symbol (Вставить символ) – третью по счету кнопку в левом
Поиск и замена символов
Поиск и замена символов Иногда при подготовке электронных документов возникает задача поиска определенных текстовых фрагментов. Например, вы забыли номер чертежа, но помните, что в его названии или дополнительной информации, размещенной на чертеже, содержится
13.3.6. Вставка специальных символов
13.3.6. Вставка специальных символов Вам нужно вставить в текст специальный символ, например изображение телефона? Выполните команду Вставка, Символ (рис. 120). Окно символов позволяет вставить в текущую позицию курсора любой символ любого шрифта. Шрифт Webdings содержит очень
Использование специальных слоев
Использование специальных слоев Наш разговор о многослойной анимации получился коротким. В самом деле, о чем там особо рассказывать!.. Все и так ясно.А теперь поговорим о специальных слоях. Это слои-направляющие и маскирующие