2013-09-28 19 views
6

XSLTスタイルシートで、<xsl:attribute>タグの先頭と末尾の空白を削除するにはどうすればよいですか?例えば<xsl:attribute>タグ内の空白を取り除く方法は?

、次のスタイルシート:

<xsl:template match="/"> 
    <xsl:element name="myelement"> 
    <xsl:attribute name="myattribute"> 
     attribute value 
    </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

出力:

<myelement myattribute="&#10;  attribute value&#10; "/> 

私は出力にそれをしたいと思いながら:

<myelement myattribute="attribute value"/> 

、他を達成するためにどのような方法があります<xsl:attribute>開始タグと終了タグを1行にまとめるよりも

属性値がプレーンテキストではなく、複雑な計算結果(たとえば、またはタグを使用した場合)の場合、前後の空白を避けるために、1行のすべてのコードを折りたたむとa恐ろしく醜いスタイルシート。

答えて

6

あなたは、XSLでテキストを折り返すことができます:テキストまたはXSL:価値の:

<xsl:template match="/"> 
    <xsl:element name="myelement"> 
     <xsl:attribute name="myattribute"> 
      <xsl:text>attribute value</xsl:text> 
     </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

または

<xsl:template match="/"> 
    <xsl:element name="myelement"> 
     <xsl:attribute name="myattribute"> 
      <xsl:value-of select="'attribute value'"/> 
     </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

はあなたのために、この便利ですか? それ以外の場合は、問題を1行で説明してください。

マイケルケイのコメントに注意してください、それはポイントに問題を説明します!

+0

問題は、属性値が ''要素のような複雑な計算の結果である場合、望ましい結果を得るためにすべてのコードを1行にまとめてしまうと、スタイルシートがひどく醜いものになります。 –

+2

xsl:attributeとxsl:chooseの間で改行を使用できます。 テキストノードでは改行を避けるだけです。 テキストノードのすべての改行が出力にあります。 xsl要素間の改行はすべて破棄されます。 –

+1

OK、私はそれを得た。私の実際のケースでは、 ''はテキストノードによって「隣接」されました。それぞれを ''でラップすると、空白が効果的に削除されます。問題は解決しました、ありがとう! –

関連する問題