Как вставить в XSLT

Как вставить

 

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

Ошибка анализа XML: undefined entity

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

Ответ 1

Попробуйте вместо этого использовать объект  .

Подробнее о том, почему   не работает и другие параметры здесь.

Ответ 2

Можно также сделать следующее:

<xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>

Ответ 3

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

<xsl:text> </xsl:text>

Ответ 4

Используйте этот

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

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

Ответ 5

Возможно, вы захотите добавить определение для этого объекта в начале файла (ниже объявления xml):

<!DOCTYPE stylesheet [
<!ENTITY nbsp  "&#160;" >
]>

Также вы можете добавить еще такие объекты, как Ntilde, Aacute и т.д.

Ответ 6

В дополнение к victor hugo answer можно получить все известные символьные ссылки, законные в 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... для загрузки папок и комментариев.

Ответ 7

Когда вы используете следующее (без disable-output-escaping!), вы получите одно неразрывное пространство:

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

Ответ 8

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

Пример:

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

Ответ 9

вы также можете использовать:

<xsl:value-of select="'&amp;nbsp'"/>

помните усилитель после и/или вы получите сообщение об ошибке

Ответ 10

Я пытался отображать границы в пустой ячейке в таблице HTML. Мой старый трюк использования неразрывного пространства в пустых ячейках не работал с xslt. Я использовал разрывы строк с тем же эффектом. Я упоминаю об этом просто в том случае, если причина, по которой вы пытались использовать неразрывное пространство, заключалась в том, чтобы предоставить некоторый контент в "пустую" ячейку таблицы, чтобы включить границы ячеек.

<br/>