Строка XSLT с объектами HTML. Как я могу ее отобразить как HTML?

Я совершенно новичок в использовании 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; дает мне пробел?

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

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

div {display:block;}

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

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

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