Как я могу вставитьКак вставить в XSLT
в таблицу стилей XSLT, я получаю эту ошибку:
XML Parsing Error: undefined entity
По существу я хочу неразрывный пробел символ в XSLT шаблона ,
Как я могу вставитьКак вставить в XSLT
в таблицу стилей XSLT, я получаю эту ошибку:
XML Parsing Error: undefined entity
По существу я хочу неразрывный пробел символ в XSLT шаблона ,
Попробуйте использовать объект  
.
Подробнее о том, почему
не работает и другие возможности here.
Отличный, именно то, что мне нужно .... –
+1 и всегда есть возможность объявить объект nbsp. –
Недавно мы столкнулись с ситуацией, когда только один из многих XSL прекратил работать с этой техникой и начал показывать странный персонаж. Однако, если я использую метод CDATA WaterSoul, он работает. – 2012-02-10 22:36:06
Используйте этот
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
редактировать: Downvoters, вероятно, следует проверить, что это работает первый (. Он делает, и является наиболее общим решением проблемы)
nbsp не является явно закодированным пространством. –
никогда не говорил, что это – jagprinderdeep
Я беспокоюсь о своем психическом состоянии. Я уверен, что я прокомментировал ответ, сказав что-то вроде «почему бы не использовать CDATA вместо явного кодирования пространства». Я не вижу в этом никаких следов, но у меня все еще есть уверенность. Скажи мне, ты совсем сошел с ума? –
Вы можете добавить определение для это лицо в начале файла (ниже декларации XML):
<!DOCTYPE stylesheet [
<!ENTITY nbsp " " >
]>
Также вы можете добавить объекты, такие как Ntilde, Aacute и т.д.
Можно также сделать это:
<xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:text>
Это будет работать *, если процессор поддерживает 'disable-output-escaping' *, который ему не требуется, и он устарел в XSLT 2.0 и более, поэтому в версии 3.0. В этих версиях вы можете добиться того же эффекта, что и 'xsl: character-map', гарантированный работой кросс-процессора. Кроме того, это помещает именованный объект ' ' в вывод, который * не обязательно совпадает с неразрывным пробелом *, а принимающая сторона * должна содержать этот объект * (в HTML он обычно неявно). – Abel
Я пытался показать границы на пустой ячейке в HTML-таблице. Мой старый трюк использования неразрывного пространства в пустых ячейках не работал с xslt. Я использовал разрывы строк с тем же эффектом. Я упоминаю об этом на всякий случай, когда причина, по которой вы пытались использовать неразрывное пространство, заключалась в том, чтобы предоставить некоторый контент в «пустую» ячейку таблицы, чтобы включить границы ячеек.
<br/>
В дополнение к victor hugo's 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>& –</xsl:text>
Существует также определенная разница в результате такого подхода по сравнению с <xsl:text disable-output-escaping="yes">
один. Последний будет генерировать строковые литералы, такие как
для всех видов вывода, даже для <xsl:output method="text">
, и это может отличаться от того, что вы можете пожелать ... Напротив, получение объектов, определенных для шаблона XSLT с помощью <!DOCTYPE ... <!ENTITY ...
, всегда будет производить выход соответствует вашим настройкам xsl:output
.
И при включении всех ссылок на символы, может быть разумным использовать локальный распознаватель сущности, чтобы механизм XSLT не извлекал определения сущности символов из Интернета. JAXP или явным пользователям Xalan-J может потребоваться исправление для Xalan-J, чтобы правильно использовать преобразователь. Смотрите мой блог XSLT, entities, Java, Xalan... для загрузки папок и комментариев.
Обратите внимание, что в последнее время W3 начал блокировать слишком много запросов на эти и подобные ссылки, если они поступают из автоматизированного процесса. Поместите этот файл локально или на свой сервер и соответствующим образом настройте URL-адрес, и все будет в порядке. Кроме этого, +1, и отличное решение для использования имен HTML с именами. – Abel
Хорошее замечание, и есть еще одна причина, чтобы иметь локальную копию файла с определениями сущностей, поскольку иначе процесс XSLT, скорее всего, потерпит неудачу, если интернет-соединение недоступно. В мире Java нет необходимости взламывать URL-адреса, так как можно организовать [EntityResolver] (http://docs.oracle.com/javase/8/docs/api/org/xml/sax/EntityResolver. html) и [Apache XML Commons Resolver] (http://xerces.apache.org/xml-commons/components/resolver/) могут быть хорошим кандидатом. Другие платформы программирования, вероятно, тоже будут иметь аналогичные методы ... –
Да, так для справки, для dotnetters: [Метод абстрактного разрешения ResolveEntity] (https://msdn.microsoft.com/en-us/library/system.xml. xmlreader.resolveentity% 28v = vs.110% 29.aspx) для объектов и [XmlResolver для загрузки внешних ресурсов] (https://msdn.microsoft.com/en-us/library/system.xml.xmldocument.xmlresolver%28v = vs.110% 29.aspx), которые являются [эквивалентами .NET для этих методов Java] (http://stackoverflow.com/questions/942882/does-the-java-uriresolver-concept-exist-in-c -sharp-и-нет). – Abel
При использовании следующих вы получите единый неразрывный пробел (без disable-output-escaping
!):
<xsl:text> </xsl:text>
Вам не нужно 'disable-output-escaping' для этого –
 
работает очень хорошо. Тем не менее, он отображает один из этих странных символов в кодировке ANSI. <xsl:text>
работал лучше для меня.
<xsl:text> </xsl:text>
Используя принятый ответ, я закончил разрыв строки в моем XML-выходе (по крайней мере, это было похоже на XML-редактор VS2010). Используя этот ответ, я получаю ровно 1 пробел. –
@Matthijs, это пространство, а не неразрывное пространство, которое не то же самое. Если VS показывает это неправильно, проверьте свою кодировку (VS вполне способен показать это правильно и должен быть независимым от кодирования, поэтому, скорее всего, вы делали что-то еще не так). – Abel
вы также можете использовать:
<xsl:value-of select="'&nbsp'"/>
запомнить усилитель после & или вы получите сообщение об ошибке
Это приведет к выводу ' nbsp;' (предполагается, что вы намереваетесь использовать точку с запятой), которая будет отображаться как ' ', а не как '' (nb-space). – Abel
XSLT таблицы стилей должны быть хорошо сформированные XML. Поскольку " "
не является одним из the five predefined XML entities, его нельзя напрямую включить в таблицу стилей. Итак, вернемся к вашему решению " "
- идеальная замена " "
, которую вы должны использовать.
Пример:
<xsl:value-of select="$txtFName"/> <xsl:value-of select="$txtLName"/>
Вы также можете использовать же для посмотреть здесь http://stackoverflow.com/questions/7511214/what-is-the-difference-between-x00a0-and- 160 – user3766111