如何插入  在XSLT中

我如何插入

 

进入一个XSLT样式表,我不断收到这个错误:

XML分析错误:未定义的实体

基本上,我想在XSLT模板中有一个不间断的空格字符。

尝试使用实体  代替。

有关为什么  在这里不起作用和其他选项。

也可以这样做:

 <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text> 

&#160; 工作得很好。 但是,它将显示ANSI编码中的那些奇怪字符之一。 <xsl:text>最适合我。

 <xsl:text> </xsl:text> 

用这个

 <xsl:text disable-output-escaping="yes">&amp;</xsl:text>nbsp; 

编辑:downvoters应该可能validation,这首先工作(它是,并且是最一般的解决scheme)。

您可能需要在文件的开头添加此实体的定义(在xml声明下方):

 <!DOCTYPE stylesheet [ <!ENTITY nbsp "&#160;" > ]> 

你也可以添加更多的实体,如Ntilde,Aacute等

除了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>&amp; &nbsp; &ndash;</xsl:text> 

<xsl:text disable-output-escaping="yes"> one相比,这种方法的结果也有一定的差异。 后者将产生string文字,如&nbsp; 对于所有types的输出,即使对于<xsl:output method="text"> ,这可能会与您希望的不同……相反,通过<!DOCTYPE ... <!ENTITY ...获取XSLT模板的实体<!DOCTYPE ... <!ENTITY ...将始终生成与您的xsl:output设置一致的xsl:output

当包含所有字符引用时,使用本地实体parsing器来保持XSLT引擎从Internet获取字符实体定义可能是明智的。 JAXP或显式Xalan-J用户可能需要Xalan-J的补丁才能正确使用parsing器。 请参阅我的博客XSLT,实体,Java,Xalan …以获取补丁下载和评论。

当你使用下面的命令(不disable-output-escaping !)时,你会得到一个不间断的空间:

<xsl:text>&#160;</xsl:text>

XSLT样式表必须是格式良好的XML。 由于"&nbsp;" 不是五个预定义的XML实体之一 ,它不能直接包含在样式表中。 所以回到你的解决scheme中"&#160;""&nbsp;"的完美替代品 你应该使用。

例:

 <xsl:value-of select="$txtFName"/>&#160;<xsl:value-of select="$txtLName"/> 

你也可以使用:

 <xsl:value-of select="'&amp;nbsp'"/> 

在&之后记得放大器,否则你会得到一个错误信息

我试图在HTML表格中的空单元格上显示边框。 我在空单元格中使用非破坏空间的旧技巧是从xslt不工作。 我用换行符具有相同的效果。 我提到这一点,以防万一你试图使用non-breaking空间的原因是为了打开单元格边界而将某些内容提供给“空”表格单元格。

 <br/>