Подтвердить что ты не робот

Неразрывное пространство XML

Я использую файлы XLST для преобразования XML в XML.

Какое допустимое представление пространства?

<xsl:text> </xsl:text>
<xsl:text>&nbsp;</xsl:text>
<xsl:text>&#160;</xsl:text>
4b9b3361

Ответ 1

XML не имеет каких-либо именованных объектов, кроме &lt;, &gt;, &quot;, &apos; и &amp;.

Все остальные символы могут быть представлены дословно, если вы указали правильную кодировку в декларации XML (например, <?xml version="1.0" encoding="..." ?>). Объявление UTF-8 является необязательным, так как это по умолчанию.

Другими словами: нет необходимости специально избегать любого символа в любом месте, если не оставить его без сохранения, нарушит синтаксические правила XML (например, < или &).

Вы, конечно, можете избежать любого персонажа, которого хотите.

Эти представления эквивалентны в отношении результирующего документа:

<foo>&#x54;&#x65;&#x73;&#x74;&#xa0;&#x54;&#x65;&#x73;&#x74;</foo>

<foo>&#84;&#101;&#115;&#116;&#160;&#84;&#101;&#115;&#116;</foo>

<foo>Test&#160;Test</foo>

<foo>Test Test</foo><!-- given that the " " really is char code 160 -->

Обратите внимание, что вы можете объявлять пользовательские именованные объекты (например, nbsp) с помощью DOCTYPE.

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

Но учитывая тот факт, что XML принимает любой символ, который почти никогда не нужен. Особенно, когда вы создаете документ с помощью соответствующего инструмента, например DOM API.

Ответ 2

В связи с вопросом добавьте все сущности, которые вызывают ошибки разбора в DOCTYPE вашей таблицы стилей *.xls.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [
   <!ENTITY nbsp "&#160;">
]>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Теперь вы можете использовать &nbsp;, как обычно.