我有一个XSLT转换,将 
放入我的输出中。这是一个狭窄的非破坏性空间。这是一款导致nnbsp:在XSLT输出中防止缩小非打破空间(n-nbsp)
<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()
那会不会是更好的编码习惯?
更新:对于那些谁可能有一天会发现这个问题......正如迈克尔凯建议,我进一步研究了这个问题。实际上,事实证明窄NBSP在源XML文件中(并通过剪切/粘贴流入我的模板中)。我不知道这一点,很难发现(帽子提示gVim十六进制视图)。在GUI编辑器中,缩小并不会完全跳出你的身影。我无法控制源XML的生产,所以我不得不找到一种“处理它”的方法。下面Eric的回答证明是我的首选方式,可以磨合窄带。 SED编辑是(也是)需要考虑的另一种选择,但我希望尽可能将我的产品保留在XSLT中。所以埃里克的建议对我来说效果很好。
我不明白为什么你应该在那里得到那个角色,如果它不在你输出的样式表文本或你输出的变量中。 –
我同意马丁..但它正在发生。 – Paulb