从XSLT代码中编写注册标记的超级脚本

时间:2013-11-13 13:54:27

标签: html xml xslt

我通过以下XSLT代码

使registrration符号超级编写脚本
<xsl:choose>
      <xsl:when test="contains($text,'&#174;')">
        <xsl:value-of select="substring-before($text,'&#174;')" />
        <xsl:text disable-output-escaping="yes">
        <![CDATA[&lt;sup&gt &#174; &lt;/sup&gt;]]>
        </xsl:text>
         <xsl:call-template name="SupersciptingRegistrationSymbol">
          <xsl:with-param name="text"
          select="substring-after($text,'&#174;')" />
          </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>文本都会获得超级脚本,无论在哪种情况下进行编辑。

注意 - 在页面源中它看起来如下 -

&lt;sup&gt &#174; &lt;/sup&gt;

这里有什么问题。有人可以帮我解决这个有线问题。

1 个答案:

答案 0 :(得分:1)

不要使用disable-output-escaping来处理xsl:text,而只需将sup元素包含为普通元素:

  <xsl:when test="contains($text,'&#174;')">
    <xsl:value-of select="substring-before($text,'&#174;')" />
    <sup>&#174;</sup>
    <xsl:call-template name="SupersciptingRegistrationSymbol">
      <xsl:with-param name="text" select="substring-after($text,'&#174;')" />
    </xsl:call-template>
  </xsl:when>