如何在XSLT中创建实体



如果我在变量中有以'#'开头的部分,我如何创建实体' ' ?

当我尝试这样做时:

concat('&', '#160;')

它是否必须是一个实体(实际上你的意思是一个"字符引用"),或者它只是输出一个不间断的空格字符?

要执行后一种操作,假定$var包含"#160",在XSLT 2.0中可以使用

<xsl:value-of select="codepoints-to-string(number(substring($var, 2)))"/>

您的代码的问题是,在XML中,您不能使用独立的&,所以它应该是这样的:

concat('&amp;', '#160;')

如果输出方法为xml,输出&amp;#160;,如果输出方法为text,输出&#160;

disable-output-escaping帮助强制&#160;xml输出:

<xsl:value-of select="concat('&amp;', '#160;')" disable-output-escaping="yes"/>

用任意字符串替换字符的另一种方法是使用字符映射:

<xsl:output use-character-maps="foo"/>
<xsl:character-map name="foo">
   <xsl:output-character character="&amp;" string="&amp;"/>
</xsl:character-map>
<xsl:template match="/">
   <xsl:value-of select="concat('&amp;', '#160;')"/>
</xsl:template>

相关内容

  • 没有找到相关文章

最新更新