2016-03-18 18 views
0

改行(&#xA;)を<br />に置き換えようとしています。しかし、私は実際の<br />タグを表示することはできません。XSLT 1.0で文字列をHTMLに置き換えます。

呼び出し:

<xsl:variable name="br"><br /></xsl:variable> 
<xsl:call-template name="string-replace-all"> 
    <xsl:with-param name="text" select="@SolutionNote" /> 
    <xsl:with-param name="replace" select="'&#xA;'" /> 
    <xsl:with-param name="by" select="$br" /> 
</xsl:call-template> 

string-replace-allthis質問(クイックリファレンスのためにここに貼り付け)で与えられた答えから取得されます:代わりに$brの文字列リテラルと

<xsl:template name="string-replace-all"> 
    <xsl:param name="text" /> 
    <xsl:param name="replace" /> 
    <xsl:param name="by" /> 
    <xsl:choose> 
     <xsl:when test="$text = '' or $replace = ''or not($replace)" > 
      <!-- Prevent this routine from hanging --> 
      <xsl:value-of select="$text" /> 
     </xsl:when> 
     <xsl:when test="contains($text, $replace)"> 
      <xsl:value-of select="substring-before($text,$replace)" /> 
      <xsl:value-of select="$by" /> 
      <xsl:call-template name="string-replace-all"> 
       <xsl:with-param name="text" select="substring-after($text,$replace)" /> 
       <xsl:with-param name="replace" select="$replace" /> 
       <xsl:with-param name="by" select="$by" /> 
      </xsl:call-template> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:value-of select="$text" /> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

テストがあることを確認確かに置き換えられているもの。改行自体もなくなりました。一見無意味なものに置き換えられました。 br変数を宣言/使用する正しい方法は何ですか?

答えて

0

問題は、この行を次のとおりです。

<xsl:value-of select="$by" /> 

xsl:value-ofが選択されているものは何でものテキスト値を出力するためです。この場合、XSLT 1.0の場合、$by変数は実際には結果ツリーフラグメントです。あなたがする必要がどのような

、代わりにxsl:copy-ofを使用している:

<xsl:copy-of select="$by" /> 
関連する問題