如果我的部分以'#'开头,我怎么能创建实体' '
?在一个变量?
当我尝试做这样的事情时:
concat('&', '#160;')
我在XMLspy中遇到语法错误。
答案 0 :(得分:1)
它必须是一个实体(实际上你的意思是一个"字符引用"),还是仅仅输出一个不间断的空格字符?
要做到后者,假设$var
持有"#160"
,在XSLT 2.0中你可以使用
<xsl:value-of select="codepoints-to-string(number(substring($var, 2)))"/>
答案 1 :(得分:0)
您的代码存在的问题是,在XML中,您无法使用独立的&
,因此它应该是这样的:
concat('&', '#160;')
如果输出方法为&#160;
则输出xml
, 
输出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>