我通过以下XSLT代码
使registrration符号超级编写脚本<xsl:choose>
<xsl:when test="contains($text,'®')">
<xsl:value-of select="substring-before($text,'®')" />
<xsl:text disable-output-escaping="yes">
<![CDATA[<sup> ® </sup>]]>
</xsl:text>
<xsl:call-template name="SupersciptingRegistrationSymbol">
<xsl:with-param name="text"
select="substring-after($text,'®')" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text" />
</xsl:otherwise>
</xsl:choose>
现在这个XSL正常工作并用®替换了®,因为我可以在视图源和调试工具(如Developer工具(chrome)和Firebug(Mozilla)工具)中验证它。 / p>
现在问题是浏览器正在渲染此文本(<sup>®</sup>
),而不是对其进行超级脚本编写。
无论何时我在firebug®中编辑<sup>®</sup>
文本都会获得超级脚本,无论在哪种情况下进行编辑。
注意 - 在页面源中它看起来如下 -
<sup> ® </sup>
这里有什么问题。有人可以帮我解决这个有线问题。
答案 0 :(得分:1)
不要使用disable-output-escaping
来处理xsl:text
,而只需将sup
元素包含为普通元素:
<xsl:when test="contains($text,'®')">
<xsl:value-of select="substring-before($text,'®')" />
<sup>®</sup>
<xsl:call-template name="SupersciptingRegistrationSymbol">
<xsl:with-param name="text" select="substring-after($text,'®')" />
</xsl:call-template>
</xsl:when>