Как лучше всего включить html-объект в XSLT?
<xsl:template match = "/a/node">
<xsl:value-of select = "."/>
<xsl:text> </xsl:text>
</xsl:template>
этот возвращает XsltParseError





Вы можете использовать раздел CDATA
<xsl:text disable-output-escaping = "yes"><![CDATA[ ]]></xsl:text>
или вы можете описать & nbsp в местном DTD:
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
или просто используйте   вместо
this one returns a XsltParseError
Да, и причина этого в том, что не является предопределенным объектом в XML или XSLT, как в HTML.
Вы можете просто использовать символ Юникода, который обозначает :  
Еще одна возможность использовать html-сущности из xslt:
<xsl:text disable-output-escaping = "yes">&nbsp;</xsl:text>
XSLT по умолчанию обрабатывает только пять основных сущностей: lt, gt, apos, quot и amp. Все остальные должны быть определены как @Aku упоминается.
Теперь, когда есть Unicode, использование именованных символьных сущностей, как правило, контрпродуктивно. Я бы рекомендовал использовать символ Unicode для неразрывного пробела вместо сущности только по этой причине. В качестве альтернативы вы можете использовать объект   вместо именованного объекта. Использование именованных сущностей делает ваш XML зависимым от встроенного или внешнего DTD.
Одного пробела между текстовыми тегами должно быть достаточно.
Также можно расширить подход из 2-й части Аку ответ и получить все известные ссылки на символы, например:
<!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> −30°</xsl:text>
Есть определенная разница в результате по сравнению с подходом <xsl:text disable-output-escaping = "yes">. Последний будет создавать строковые литералы, такие как , для всех видов вывода, даже для <xsl:output method = "text">, и это может отличаться от того, что вы могли бы пожелать ... Напротив, получение сущностей, определенных для шаблона XSLT через <!DOCTYPE ... <!ENTITY ..., всегда будет производить вывод в соответствии с вашими настройками xsl:output.
Тогда может быть разумным использовать локальный преобразователь сущностей, чтобы механизм XSLT не извлекал определения символьных сущностей из Интернета. Пользователи JAXP или явного Xalan-J могут нуждаться в патче для Xalan-J, чтобы правильно использовать преобразователь. Смотрите мой блог XSLT, сущности, Java, Xalan ... для загрузки патча и комментариев.
Это красиво - желаю, чтобы это было более известным
Спасибо за информацию. Я написал короткое сообщение в блоге о том, что сработало для меня, когда я выполнял преобразование XSLT в шаблоне Dynamicweb CMS.
Сообщение в блоге находится здесь: Как добавлять сущности в шаблоны XSLT.
/ Стен Хугард
Я обнаружил, что все эти решения создают символ Â на пустом месте.
Использование <xsl:text> </xsl:text> решило проблему для меня; но <xsl:text>#x20;</xsl:text> тоже может работать.
Необходимо использовать сущность # x160;
Это нет x160, но десятичное 160.
Мне не повезло с подходом DOCTYPE от Aku.
То, что сработало для меня в преобразованиях MSXML на сервере Windows 2003, было
<xsl:text disable-output-escaping = "yes">&#160;</xsl:text>
Этакий гибрид вышеперечисленного. Спасибо участникам Stackoverflow!
Символ юникода давал вопросительные знаки и поля, вывод неэкранированного html-объекта работал у меня, спасибо.