【发布时间】:2014-01-26 10:28:14
【问题描述】:
我有一个 XSLT 转换,将  放入我的输出中。那是一个狭窄的非破坏空间。这是导致 nnbsp 的部分:
<span>
<xsl:text>§ </xsl:text>
<xsl:value-of select="$firstsection"/>
<xsl:text> to </xsl:text>
<xsl:value-of select="$lastsection"/>
</span>
在这种情况下,nnbsp 出现在 § 和文本 to 之后。
<span>§ 1 to 8</span>
(有趣的是,to 之前的空间原来是一个常规的全尺寸空间)
这发生在我的 UTF-8 编码输出以及 iso-8859-1 (latin1) 中。
如何避免 nnbsp?虽然狭窄的空间在视觉上更合适,但它并不适用于将阅读本文档的所有设备。我需要一个普通的空白空间。
有转换设置吗?我在命令行中使用 Saxon 9。
我应该再做一次转换吗.. 使用替换模板来替换 nnbsp?
我应该像上面那样重新制作我的模板吗?例如,如果我做了一个concat(),那会是更好的编码习惯吗?
更新:对于那些有一天可能会发现这个问题的人......正如 Michael Kay 的建议,我进一步研究了这个问题。事实上,narrow-NBSP 是在源 XML 文件中(并通过剪切/粘贴流入我的模板)。我不知道这一点,而且很难发现(gVim 十六进制视图的提示)。在 GUI 编辑器中,狭窄并没有完全跳出来。我无法控制源 XML 的生成,所以我必须找到一种方法来“处理它”。事实证明,埃里克在下面的回答是我擦洗nbsp的首选方式。 SED 编辑曾经(并且现在)是另一个需要考虑的选项,但我喜欢尽可能将我的作品保留在 XSLT 中。所以 Eric 的建议对我很有效。
【问题讨论】:
-
如果它不在您输出的样式表文本或您输出的变量中,我不明白为什么您应该在其中获取该字符。
-
我同意 Martin.. 但它正在发生。