XSL-преобразование из XML в HTML: специальные символы

Судя по Гуглу, довольно часто возникает вопрос о специальных символах — кавычках (", «, »), амперсанде (&) и других — при XSL-преобразовании из XML в HTML.

В чем суть проблемы? Предположим, у нас есть некий XML-файл, содержащий что-то вроде

<title>&amp;laquo;Доктор Хаус&amp;raquo; &amp;mdash; сколько всего сезонов снято?</title>

Здесь по обеим сторонам от доктора Хауса стоят кавычки-елочки, а после — длинное тире. Понятно, что в XML нельзя хранить знак амперсанда непосредственно, поэтому этот специальный символ кодируется в виде сущности. И вот, теперь мы хотим преобразовать это в HTML. В нашем XSL-файле есть такой фрагмент:

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

Что мы получим? Не совсем то, что хотим: содержимое скопируется как есть, и кавычек мы не увидим. Решение в данном случае очень простое:

<xsl:value-of select="title" disable-output-escaping="yes"/>

Атрибут disable-output-escaping="yes" указывает, что специальные символы должны извлекаться «как есть», без кодирования в сущности.

Результат:

«Доктор Хаус» — сколько всего сезонов снято?


Запись опубликована в рубрике Интернет, Программирование. Добавить в закладки постоянную ссылку. Оставить комментарий или trackback-ссылку.

Возможно, вас заинтересует:

Оставить комментарий

Ваш e-mail никогда не будет опубликован или передан третьим лицам. Обязательные поля отмечены *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


9 − = шесть