Проблема с пробелами в xslt 1.0 в HTML - PullRequest
0 голосов
/ 18 февраля 2011

Все,

Я пытаюсь разместить текст пробела / отступа в столбце в моей таблице HTML.Я читаю XML-файл с использованием XSLT 1.0 и записываю его в HTML-файл.Я пробовал следующее:

<?xml version='1.0' encoding='utf-16'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" encoding="utf-16"/>

<tr>
  <td/>
  <td>
    <xsl:text xml:space="preserve">&#160;</xsl:text>
    <xsl:value-of select="concat('Substantiation-', 
                    @sourceID, ' (', current(), ')')"/>
  </td>
</tr>

Результаты при просмотре в Internet Explorer (открываются из сгенерированного файла HTML) выглядит следующим образом:

 Substantiation-9010 (p 1-5, Para 1-10.)

Я также пробовал &#x9;,&#x20;, и &#xa0; это имеет схожие или нет результатов.

Я предполагаю, что у меня проблема с кодировкой (спасибо Michael Kay за указание на это), однако я не уверен, что делаю неправильно, так как я задаю кодировку в выходном теге.Кто-нибудь знает, как добавить пробел / табуляцию, чтобы она выглядела правильно при просмотре в IE?

Спасибо за помощь !!!

Ответы [ 4 ]

5 голосов
/ 19 февраля 2011

Вставка символа &#160; является правильным способом добавить неразрывный пробел.Но он отображается неправильно из-за какой-то проблемы с кодировкой - вы генерируете документ UTF-8, но интернет-обозреватель считает, что это ISO 8859-1 (или MS CP1252).Причины, по которым IE ошибается в кодировке, бесчисленны (и за пределами моего понимания), но вы еще не начали предоставлять нам информацию, необходимую для их диагностики (мы даже не знаем, является ли это преобразование серверным или клиентским).

(Конечно, другие респонденты правы в том, что могут быть лучшие способы достижения требуемого макета, чем использование символов NBSP. Но если у вас проблема с кодированием, это повлияет и на другие символы, поэтомуты не должен оставлять это гноящимся.)

0 голосов
/ 16 марта 2011

Я не мог заставить пробелы показываться правильно.Все предложенное здесь из того, что я прочитал, должно было сработать.Однако это было не для меня.В итоге я использовал изображение с прозрачным фоном.

 <img src="OnePixel.gif" width="15" height="5" align="left"/>
0 голосов
/ 18 февраля 2011

&nbsp; - специальный HTML-символ без пробелов. Дайте этому вихрь. Или попробуйте использовать CSS для создания отступов в ячейке таблицы. Еще более альтернативно, если вы создаете список, попробуйте использовать <ol> или <ul>.

0 голосов
/ 18 февраля 2011

Вы можете использовать CSS для решения этой проблемы:

<tr>
  <td/>
  <td>
      <span style="white-space:pre;">&#9;<xsl:value-of select="concat('Substantiation-',@sourceID, ' (', current(), ')')"/></span>
  </td>
</tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...