2

xsltテンプレートに次の変数があります。

<xsl:variable name="spaces" select="'&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;'"/>

テンプレートでは、変数を次のように使用しています。

<xsl:choose>
   <xsl:when test="InvestmentNone = 'true'">
      <u>X</u>
   </xsl:when>
   <xsl:otherwise>
      <u xml:space="preserve">
         <xsl:value-of select="@spaces" xml:space="preserve"/>
      </u>
   </xsl:otherwise>
</xsl:choose>

したがって、基本的に、「InvestmentNone」が「false」の場合は、スペースに下線を付けて表示したいと思います。問題は、上記のコードでは、スペースが表示されないことです。ただし、行を削除すると

<xsl:value-of select="@spaces" xml:space="preserve"/>

と追加

&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;

直接配置すると、スペースは下線付きで表示されます。変数メソッドを機能させるにはどうすればよいですか?その理由は、後で変数を使用してスペースを埋めるためです。

4

2 に答える 2

2

変数にアクセスするには、名前の前に:$の代わりに接頭辞を付ける必要があります。@

<xsl:variable name="spaces" select="'&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;'"/>
<xsl:value-of select="$spaces"/>

プレフィックスは属性をアドレス指定します。コンテキストノードにはスペース@と呼ばれる属性がおそらくないため、にアクセスすると空の文字列が返されます。@spaces

于 2012-05-18T14:55:22.907 に答える
0

Martinの正解に加えて、スタイルシートでxml:space="preserve"を使用することは通常悪い考えであることを指摘しておきます。これは、xsl:value-of命令の前後の空白テキストノードが、xsl:textで囲まれているかのように重要になることを意味します。なぜこれがHTMLに下線付きの空白を入れなかったのかわかりませんが、ブラウザがそれをレンダリングすると、おそらく単一のスペースとしてのみ表示されます。

于 2012-05-18T17:23:21.080 に答える