如何插入  在XSLT中
我如何插入
进入一个XSLT样式表,我不断收到这个错误:
XML分析错误:未定义的实体
基本上,我想在XSLT模板中有一个不间断的空格字符。
尝试使用实体 
代替。
有关为什么
在这里不起作用和其他选项。
也可以这样做:
<xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:text>
 
工作得很好。 但是,它将显示ANSI编码中的那些奇怪字符之一。 <xsl:text>
最适合我。
<xsl:text> </xsl:text>
用这个
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
编辑:downvoters应该可能validation,这首先工作(它是,并且是最一般的解决scheme)。
您可能需要在文件的开头添加此实体的定义(在xml声明下方):
<!DOCTYPE stylesheet [ <!ENTITY nbsp " " > ]>
你也可以添加更多的实体,如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>& –</xsl:text>
与<xsl:text disable-output-escaping="yes">
one相比,这种方法的结果也有一定的差异。 后者将产生string文字,如
对于所有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> </xsl:text>
XSLT样式表必须是格式良好的XML。 由于" "
不是五个预定义的XML实体之一 ,它不能直接包含在样式表中。 所以回到你的解决scheme中" "
是" "
的完美替代品 你应该使用。
例:
<xsl:value-of select="$txtFName"/> <xsl:value-of select="$txtLName"/>
你也可以使用:
<xsl:value-of select="'&nbsp'"/>
在&之后记得放大器,否则你会得到一个错误信息
我试图在HTML表格中的空单元格上显示边框。 我在空单元格中使用非破坏空间的旧技巧是从xslt不工作。 我用换行符具有相同的效果。 我提到这一点,以防万一你试图使用non-breaking空间的原因是为了打开单元格边界而将某些内容提供给“空”表格单元格。
<br/>