1

我正在通过下面的 XSLT 代码制作注册符号超级脚本

<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 可以正常工作并将 ® 替换为 ®,因为我可以在视图源代码和调试工具(如开发工具(chrome)和 Firebug(Mozilla)工具)中验证它。

现在的问题是浏览器正在渲染这个文本(<sup>®</sup>)而不是超级脚本。

再次,每当我<sup>®</sup>在 firebug ® 中编辑文本时,无论在那种情况下编辑是什么,都会得到超级脚本。

注意-在页面源代码中如下所示-

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

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

4

1 回答 1

1

与其乱用disable-output-escapingusing 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>
于 2013-11-13T14:08:25.493 回答