2

xsl に "[test]" という文字列があります。xsl でこのブラケットを削除する必要があります。XSLでこれを達成するにはどうすればよいですか。助けてください。

これでできることはわかっていますが、以下のコードで「[」を削除するにはどうすればよいですか?

   <xsl:call-template name="string-replace-all">
     <xsl:with-param name="text" select="$string" />
     <xsl:with-param name="replace" select="$replace" />
     <xsl:with-param name="by" select="$by" />
   </xsl:call-template>  

「[」と「]」を削除するのを手伝ってください

4

3 に答える 3

6

xsl 2.0

replace('[text]','^[(.*)]$','$1')

xsl 1.0

translate('[text]','[]','')

また

substring-before(substring-after('[text]','['),']')

これらのいずれも、さまざまな障害モードで必要なことを行います。2 番目の例では、入力が何であるかに関係なく何かが返されますが、入力内のすべての括弧が削除されることに注意してください。3 番目の例は、最初の左ブラケットと最後の右ブラケットがある場合にのみ文字列を返し、それ以外の場合は空のシーケンスを返します。

于 2012-11-06T06:36:06.083 に答える
6

translate()関数を使用します。

例...

<xsl:call-template name="string-replace-all">
 <xsl:with-param name="text" select="$string" />
 <xsl:value-of select="translate( $text, '[]', '')" />
</xsl:call-template>
于 2012-11-06T06:33:57.237 に答える