XSL игнорирует мои пробелы даже с тегом <xsl: text> - PullRequest
10 голосов
/ 27 апреля 2010

Я делаю заголовок в своем XSL-коде, который включает в себя несколько полей с информацией, т. Е. «Имя: Дата рождения Боба: 1 января 1900 года» и т. Д. Я заключил их в такие теги:

<xsl:text>    Gender: Male    </xsl:text> 

Но на странице пропуски вокруг пола / мужчины игнорируются. Я что-то упускаю?

Спасибо заранее.

Ответы [ 5 ]

6 голосов
/ 28 апреля 2010

Вам может понадобиться использовать ...

<xsl:text xml:space="preserve">    Gender: Male    </xsl:text>
6 голосов
/ 28 апреля 2010

Если вы хотите вывести текстовый файл, вы должны указать <xsl:output method="text"/> как дочерний элемент элемента <xsl:stylesheet>.

При обработке вывода как HTML, парсер может упаковать ваши пробелы, если вы хотите использовать вывод HTML с неразрывными пробелами, вы можете использовать &#160; неразрывную пробел (обратите внимание, что &nbsp; может не работать, так как не сущность XML, если вы сами не объявите ее).

2 голосов
/ 28 апреля 2010

Это не строгий вопрос XSLT, так как XSLT не съедает ваш пробел. Это преобразование

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <foo>
      <xsl:text>    Gender: Male    </xsl:text>
    </foo>
  </xsl:template>
</xsl:stylesheet> 

дает

<?xml version="1.0" encoding="UTF-8"?>
<foo>    Gender: Male    </foo>

Вы используете HTML в качестве вывода? Затем используйте неразрывный пробел для пробела.

1 голос
/ 10 мая 2010

Просто используйте

  &#160;Gender: Male&#160; 

это представляет пробел в xsl как

 &nbsp;Gender:Male&nbsp; 

в HTML

0 голосов
/ 27 апреля 2010

Вам нужно добавить &nbsp; вместо пробелов. Для получения более 1 пробела

<xsl:text><![CDATA[&nbsp;&nbsp;&nbsp; Gender: Male &nbsp;&nbsp;&nbsp;]]></xsl:text>

...