Строка XSLT с сущностями HTML - Как я могу сделать так, чтобы она отображалась как HTML? - PullRequest
11 голосов
/ 18 мая 2010

Я совершенно новичок в использовании XSL, поэтому, если есть какая-то информация, которую я пренебрегаю, просто дайте мне знать.

В моем XSLT-файле есть строка, которую я могу отобразить так:

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

и он отображается в браузере как:

<div>I can't do anything about the html entities existing in the text.</div> <div>This includes quotes, like  &quot;Hello World&quot; and sometimes whitespaces.&nbsp;</div>

Что я могу сделать, чтобы отобразить эту строку как HTML, чтобы <div></div> приводил к переводу строки, &quot; дает мне ", а &nbsp; дает мне пробел?

Я мог бы рассказать о вещах, которые уже пробовал, которые не сработали, но я не знаю, насколько это актуально.

Ответы [ 3 ]

16 голосов
/ 18 мая 2010

Я думаю, вы хотите установить следующий атрибут следующим образом:

<xsl:value-of select="@Description" disable-output-escaping="yes"/>
3 голосов
/ 18 мая 2010

Зачем вам нужно, чтобы сущности выводили ? Для браузера &nbsp; совпадает с &#xA0; - в обоих случаях будет отображаться неразрывный пробел.

В XSLT 2.0 имеется функция, называемая символьные карты , которая обеспечивает эту функциональность, если она действительно необходима. В XSLT рекомендуется не использовать DOE, если в этом нет крайней необходимости.

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

0 голосов
/ 18 мая 2010

Причина, по которой div в HTML получает конечную строку, совершенно другая и связана с CSS-моделью. Большинство браузеров применяют стиль:

div {display:block;}

Вместо стандартного дисплея: встроенный ;. Тем не менее, они делают это только с divs в пространстве имен XHTML. Вам нужно вывести div в пространство имен XHTML, чтобы облегчить это. Свяжите пространство имен XHTML с префиксом xhtml в верхней части документа следующим образом:

<xsl:stylesheet xmnls:xhtml="http://www.w3.org/1999/xhtml" ... >

И затем вывести div в виде <xhtml:div> ... </xhtml:div>, большинство браузеров распознают, что div находится в пространстве имен XHTML (http://www.w3.org/1999/xhtml), и применят стиль блока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...