如果我在变量中有以'#'开头的部分,我如何创建实体' '
?
当我尝试这样做时:
concat('&', '#160;')
它是否必须是一个实体(实际上你的意思是一个"字符引用"),或者它只是输出一个不间断的空格字符?
要执行后一种操作,假定$var
包含"#160"
,在XSLT 2.0中可以使用
<xsl:value-of select="codepoints-to-string(number(substring($var, 2)))"/>
您的代码的问题是,在XML中,您不能使用独立的&
,所以它应该是这样的:
concat('&', '#160;')
如果输出方法为xml
,输出&#160;
,如果输出方法为text
,输出 
。
disable-output-escaping
帮助强制 
在xml
输出:
<xsl:value-of select="concat('&', '#160;')" disable-output-escaping="yes"/>
用任意字符串替换字符的另一种方法是使用字符映射:
<xsl:output use-character-maps="foo"/>
<xsl:character-map name="foo">
<xsl:output-character character="&" string="&"/>
</xsl:character-map>
<xsl:template match="/">
<xsl:value-of select="concat('&', '#160;')"/>
</xsl:template>