XSL disable-output-escaping删除空格

时间:2009-08-06 10:56:28

标签: xslt

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 个答案:

答案 0 :(得分:1)

如果你想要xsl的空格,请使用:     &LT; XSL:文本&GT; &LT; / XSL:文本&GT;

只有当空格被识别为文本节点时才会被保留(即:“a”两个空格都将被识别)

来自orignal source xml的空格必须通过告诉解析器来保存(例如)

parser.setPreserveWhitespace(真);

答案 1 :(得分:0)

作为输出HTML,您可以使用不间断的空格替换您的空间

答案 2 :(得分:0)

您是否可以控制原始XML的生成?如果是这样,您可以尝试将xml:space =“preserve”添加到文本元素中,该文本元素应该告诉处理器保留空白。

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

或者,尝试查看XSLT中的“xsl:preserve-space”元素。

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

虽然我从未亲自使用过它,但它可能会有所帮助。有关详细信息,请参阅W3Schools

答案 3 :(得分:0)

谢谢大家的意见。 目前我正在使用MattH建议,即测试空间和替代非破坏空间。我想到的另一种方法是测试“&lt; / b&gt;&lt; b&gt;”并且用“&lt; / b&gt;&lt; b&gt;”代替。实际输出粗体标签内的空格。两种方法都有效。不知道其含义是什么。我仍然无法弄清楚为什么在2个单独的粗体标签之间找到间距。