2011-07-04 17 views
3

xsl:copy-ofの値を使用すると、disable-output-escapingを保持している問題が発生しているようです。XSLT - コピーでの無効出力のエスケープ処理の維持

は、ここに私のコードです:

<xsl:call-template name="Display"> 
    <xsl:with-param name="text"> 
     <xsl:value-of select="content" disable-output-escaping="yes" /> 
    </xsl:with-param> 
</xsl:call-template> 

<xsl:template name="Display"> 
    <xsl:param name="text" /> 
    <span><xsl:copy-of select="$text" /></span> 
</xsl:template> 

それらがxsl:copy-of文で使用しているときにエスケープされているxsl:value-ofの文からそのまま維持した特殊文字。

<xsl:value-of select="$text" disable-output-escaping="yes">がこれを表示します:たとえば

<xsl:copy-of select="$text">è&#232

が表示されます私はこの周りにどんな方法があるかどうかを知りたいのですが?

答えて

3

Specごとに、disable-output-escaping属性は<xsl:value-of><xsl:text>命令でのみ指定できます。

DOEは、パラメータ値を設定するものではなく、実際に値を出力するxslt命令でのみ必要です。

ソリューション

は交換してください:

<span><xsl:copy-of select="$text"/></span> 

を持つ:

<span><xsl:value-of select="$text" disable-output-escaping="yes"/></span> 

に注意して実行します。それはXSLTアーキテクチャモデルを壊すよう典型的には、1つのは、DOEの使用を避ける必要があり、通常は必要ありません。また、DOE機能は必須ではなく、すべてのXSLT 1.0プロセッサでサポートされているわけではありません。

注2:DOEは実際には必要ありません。 XSLT変換の出力は、期待通りにブラウザで表示されるはずです。

0

disable-output-escapingは、テキストノードが渡されたときにシリアライザの動作を制御します。テキストノードがシリアライザに渡されていないとき、例えば一時ツリーに追加されたときなど、意味がありません。

関連する問題