Как вставить & nbsp; в XSLT


4 Answers

&#160; работает очень хорошо. Тем не менее, он отображает один из этих странных символов в кодировке ANSI. <xsl:text> работал лучше для меня.

<xsl:text> </xsl:text>
Question

Как я могу вставить

&nbsp;

В таблицу стилей XSLT я продолжаю получать эту ошибку:

Ошибка анализа XML: неопределенный объект

По сути, я хочу, чтобы в шаблоне XSLT не был разбит символ пробела.




В дополнение к ответу победителя hugo можно получить все известные символьные ссылки, законные в XSLT-файле, например:

<!DOCTYPE stylesheet [
  <!ENTITY % w3centities-f PUBLIC "-//W3C//ENTITIES Combined Set//EN//XML"
      "http://www.w3.org/2003/entities/2007/w3centities-f.ent">
  %w3centities-f;
]>
...
<xsl:text>&amp; &nbsp; &ndash;</xsl:text>

В результате этого подхода есть определенная разница по сравнению с <xsl:text disable-output-escaping="yes"> one. Последний собирается создавать строковые литералы типа &nbsp; для всех видов вывода, даже для <xsl:output method="text"> , и это может отличаться от того, что вы можете пожелать ... Напротив, получение сущностей, определенных для шаблона XSLT, через <!DOCTYPE ... <!ENTITY ... всегда будет выводить результат, соответствующий вашим настройкам xsl:output .

И при включении всех ссылок на символы, может быть разумным использовать локальный сущностный преобразователь, чтобы заставить механизм XSLT выбирать из определения символов сущности из Интернета. JAXP или явным пользователям Xalan-J может потребоваться исправление для Xalan-J, чтобы правильно использовать преобразователь. Смотрите мой блог XSLT, сущности, Java, Xalan ... для загрузки папок и комментариев.




XSLT стилей XSLT должны быть хорошо сформированными XML. Поскольку "&nbsp;" не является одним из пяти предопределенных XML-объектов , он не может быть непосредственно включен в таблицу стилей. Поэтому вернемся к вашему решению "&#160;" является идеальной заменой "&nbsp;" вы должны использовать.

Пример:

<xsl:value-of select="$txtFName"/>&#160;<xsl:value-of select="$txtLName"/>



Использовать это

<xsl:text disable-output-escaping="yes">&amp;</xsl:text>nbsp;

edit: Downvoters должны, вероятно, проверить, что это работает в первую очередь (это и является наиболее общим решением проблемы).




Попробуй использовать

<xsl:text>&#160;</xsl:text>

Но это зависит от используемого вами XSLT-процессора: спецификация XSLT не требует, чтобы XSLT-процессоры преобразовывали ее в « &nbsp; ».






Related



Tags

xslt