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 は正しく機能し、® を®に置き換えます。これは、ビュー ソースと、Developer tool (chrome) や Firebug (Mozilla)tools などのデバッグ ツールで確認できるためです。

ここでの問題は、ブラウザがこのテキストを<sup>®</sup>スーパースクリプト化するのではなく、そのまま ( ) レンダリングしていることです。

繰り返し<sup>®</sup>になりますが、firebug ® でテキストを編集すると、その場合の編集内容に関係なく、上付き文字が付けられます。

注-ページソースでは、次のようになります-

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

ここで何が問題になる可能性があります。誰かがこの有線の問題を解決するのを手伝ってくれませんか.

4

1 に答える 1

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>
于 2013-11-13T14:08:25.493 に答える