Замена специальных символов

Замена специальных символов

Как мы уже знаем, в XML есть несколько специальных символов, которые, как правило, заменяются процессором при выводе документа на соответствующие символьные или встроенные сущности. К примеру, для того, чтобы вывод был корректным XML-документом, процессор обязан заменять символы "<" и "&" на встроенные (&lt; и &amp;) или символьные (&#60; и &#38;) сущности.

Между тем довольно часто бывает необходимым выводить в выходящем документе символы разметки.

Пример

Пусть входящий документ содержит описание товара, заданное в секции 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>&#xA;</xsl:text><br/>

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

</p>

</xsl:template>

то в выходящем документе специальные символы будут заменены:

<p>An elephant

<br/>This is a &lt;em&gt;big&lt;/em&gt; and &lt;b&gt;grey&lt;/b&gt; 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>&#xA;</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", поскольку при этом методе все специальные символы и так выводятся без замены.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

5.8 СОЗДАНИЕ СПЕЦИАЛЬНЫХ ФАЙЛОВ Системная функция mknod создает в системе специальные файлы, в число которых включаются поименованные каналы, файлы устройств и каталоги. Она похожа на функцию creat в том, что ядро выделяет для файла индекс. Синтаксис вызова системной функции


5.7.8 Удаление специальных символов

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

5.7.8 Удаление специальных символов После того, как все подстановки в командной строке сделаны, из нее еще удаляются все вхождения символов , ` и ", которые служили для отмены специального значения других


Ввод специальных символов

Из книги ArchiCAD 11 автора Днепров Александр Г

Ввод специальных символов Если возникнет необходимость ввести символы, которых нет на клавиатуре, например знаки градуса, диаметра, символы греческого алфавита и т. п., то можно сделать это, используя кнопку Insert Symbol (Вставить символ) – третью по счету кнопку в левом


Поиск и замена символов

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

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


13.3.6. Вставка специальных символов

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

13.3.6. Вставка специальных символов Вам нужно вставить в текст специальный символ, например изображение телефона? Выполните команду Вставка, Символ (рис. 120). Окно символов позволяет вставить в текущую позицию курсора любой символ любого шрифта. Шрифт Webdings содержит очень


2.32. Печать специальных символов

Из книги Веб-Самоделкин. Как самому создать сайт быстро и профессионально автора Гладкий Алексей Анатольевич

2.32. Печать специальных символов Метод dump позволяет получить графическое представление символов, которые обычно не печатаются вовсе или вызывают побочные эффекты:s1 = "Внимание" << 7 << 7 << 7 # Добавлено три символа ASCII BEL.puts s1.dump                   # Печатается:


2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы Бывает, что имеется строка с символами табуляции, а мы хотели бы преобразовать их в пробелы (или наоборот). Ниже показаны два метода, реализующих эти операции:class String def detab(ts=8)  str = self.dup  while (leftmost =


3.3. Экранирование специальных символов

Из книги Программирование КПК и смартфонов на .NET Compact Framework автора Климов Александр П.

3.3. Экранирование специальных символов Метод класса Regexp.escape экранирует все специальные символы, встречающиеся в регулярном выражении. К их числу относятся звездочка, вопросительный знак и квадратные скобки.str1 = "[*?]"str2 = Regexp.escape(str1) # "[*?]"Синонимом является метод


Вставка специальных элементов

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

Вставка специальных элементов Возможности программы предусматривают вставку в контент веб-страницы специальных элементов – гиперссылок, изображений, фреймов и т. д. Необходимый для этого инструмент находится на вкладке


Определение класса символов и преобразование символов

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

Определение класса символов и преобразование символов Функция Краткое описание isalnum проверка на букву или цифру isalpha проверка на букву isascii проверка на символ из набора кодировки ASCII iscntrl проверка на управляющий символ isdigit проверка на десятичную


Названия специальных файлов

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

Названия специальных файлов В Windows существует ряд специальных папок, в которых содержатся файлы определенной категории. Например, в папке Избранное содержатся ссылки на любимые сайты пользователя.Проблема заключается в том, что в локализованных версиях Windows эти папки


Использование специальных слоев

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

Использование специальных слоев Наш разговор о многослойной анимации получился коротким. В самом деле, о чем там особо рассказывать!.. Все и так ясно.А теперь поговорим о специальных слоях. Это слои-направляющие и маскирующие


Центр специальных возможностей

Из книги автора

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


Включение сценариев и специальных символов в документы XHTML

Из книги автора

Включение сценариев и специальных символов в документы XHTML В документы HTML сценарии встраиваются с помощью комментариев, то есть коды сценариев помещаются внутрь объявлений комментария:<!…Код сценария JavaScript или таблицы CSS….>В них же помещают объявления таблиц CSS, что