XSL disable-output-escaping удаляет пробелы - PullRequest
0 голосов
/ 06 августа 2009

Часть XML:

<text><b>Title</b> <b>Happy</b></text>

В моем XSL у меня есть:

<xsl:value-of select="text" disable-output-escaping="yes" />

Мой вывод становится

**TitleHappy**

Мой интервал пропал - должен быть пробел между </b> и <b>.

Я пытался normalize-space(), это не работает.

Есть предложения? Спасибо!

Ответы [ 4 ]

1 голос
/ 06 августа 2009

, если вам нужен пробел из xsl, используйте: </ xsl: text>

Пробел сохраняется только в том случае, если он распознается как текстовый узел (т. Е. «A» оба пробела будут распознаны)

Пробел из оригинального исходного XML-файла должен быть сохранен путем указания синтаксического анализатора (например)

parser.setPreserveWhitespace (истина);

0 голосов
/ 07 августа 2009

спасибо за каждый вклад. В настоящее время я использую предложение MattH, которое заключается в проверке пространства и замене неразрывного пространства. Другой метод, о котором я подумал, - это проверить " " и заменить "" Пробел, содержащийся внутри жирного тега, на самом деле выводится. Оба метода работали. Не знаю, каковы последствия, хотя. И я до сих пор не могу понять, почему интервал удаляется, когда он находится между 2 отдельными жирными метками.

0 голосов
/ 06 августа 2009

Есть ли у вас контроль над генерацией оригинального XML? Если это так, вы можете попробовать добавить xml: space = "preserve" к текстовому элементу, который должен сообщить процессору, чтобы он оставил пробел.

<text xml:space="preserve"><b>Title</b> <b>Happy</b></text>

Или попробуйте посмотреть на элемент "xsl: preserve-space" в XSLT.

<xsl:preserve-space elements="text"/>

Хотя я никогда не использовал это лично, это могло бы помочь. См. W3Schools для получения дополнительной информации.

0 голосов
/ 06 августа 2009

В качестве выходного HTML вы можете заменить свое пространство неразрывным пробелом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...