Answers:
请改用实体代码 
。
是HTML“字符实体参考”。XML中没有用于不间断空格的命名实体,因此您使用代码 
。
Wikipedia包含XML和HTML实体的列表,您可以看到XML中只有5个“预定义的实体”,但是HTML有200多个。我还将指向在XSL中创建一个空格( ),其中极好的答案。
Š
代替 
,后者将始终解析为Unicode不间断空格。
 
真的很好 但是,它将以ANSI编码显示这些奇怪的字符之一。<xsl:text>
最适合我
<xsl:text> </xsl:text>
一个人也可以这样做:
<xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:text>
disable-output-escaping
,则不需要使用XSLT 2.0中已弃用的处理器(在3.0中更是如此),这将起作用。在这些版本中,可以xsl:character-map
保证跨处理器工作,从而达到相同的效果。同样,这会将一个命名实体
放置在输出中,该实体不必与不间断空格相同,并且接收端必须声明该实体(在HTML中通常是隐式的)。
用这个
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
编辑:投票者可能应该首先验证它是否起作用(它确实起作用,并且是对该问题的最一般的解决方案。)
除了victor hugo的答案之外,还可以使XSLT文件中的所有已知字符引用合法,如下所示:
<!DOCTYPE stylesheet [
<!ENTITY % w3centities-f PUBLIC "-//W3C//ENTITIES Combined Set//EN//XML"
"http://www.w3.org/2003/entities/2007/w3centities-f.ent">
%w3centities-f;
]>
...
<xsl:text>& –</xsl:text>
与<xsl:text disable-output-escaping="yes">
一种方法相比,该方法的结果也存在一定差异。后者将产生类似于
所有输出的字符串文字,甚至对于<xsl:output method="text">
,这可能与您希望的有所不同。相反,通过XSLT模板定义的实体<!DOCTYPE ... <!ENTITY ...
将始终产生与您的xsl:output
设置。
并且,当包括所有字符引用时,明智的方法是使用本地实体解析器,以防止XSLT引擎从Internet上获取字符实体定义。JAXP或明确的Xalan-J用户可能需要Xalan-J补丁才能正确使用解析器。请参阅我的博客XSLT,entity,Java,Xalan ...了解补丁下载和评论。
XSLT样式表必须是格式正确的XML。由于" "
不是五个预定义XML实体之一,因此不能将其直接包含在样式表中。因此,回到您的解决方案" "
是" "
您应该使用的完美替代品。
例:
<xsl:value-of select="$txtFName"/> <xsl:value-of select="$txtLName"/>
您还可以使用:
<xsl:value-of select="'&nbsp'"/>
记住&之后的放大器,否则您会收到一条错误消息
&nbsp;
(假设您打算在其中使用分号),它将显示为
,而不是``(nb-space)。