1

XSLT で文字列を置換することについての質問が既に出ていることは知っていますが、1 つの文字列を複数の変数で置換する条件ステートメントが必要です。

これが私のコードです:

<xsl:template name="section-01">
  <xsl:call-template name="table-open"/>
  <xsl:text disable-output-escaping="yes">&lt;table style="text-align=center;"&gt;</xsl:text>  
  <xsl:call-template name="display-gen">
    <xsl:with-param name="value" select="./z30-collection"/>
    <xsl:with-param name="width" select="'30%'"/>
  </xsl:call-template>
  <xsl:call-template name="display-gen">
    <xsl:with-param name="value" select="./call-no-piece-01"/>
    <xsl:with-param name="width" select="'30%'"/>
  </xsl:call-template>
  <xsl:call-template name="table-close"/>
</xsl:template>

「./z30-collection」を置き換えるステートメントが必要です

If ./z30-collection = "Deposit" replace with "DEP"
if ./z30-collection = "General" replace with "GEN" 
if ./z30-collection = "Storage" replace with "STORE"

等...

どんな助けでも大歓迎です!

4

2 に答える 2

1

このようなものにアプローチする最も「XSLT」な方法は、さまざまなケースに対してさまざまなテンプレートを定義することです

<xsl:template match="z30-collection[. = 'Deposit']">
  <xsl:text>DEP</xsl:text>
</xsl:template>
<xsl:template match="z30-collection[. = 'General']">
  <xsl:text>GEN</xsl:text>
</xsl:template>
<xsl:template match="z30-collection[. = 'Storage']">
  <xsl:text>STORE</xsl:text>
</xsl:template>
<!-- catch-all for elements that don't have any of the three specific values -->
<xsl:template match="z30-collection">
  <xsl:value-of select="." />
</xsl:template>

そして、あなたがする価値が必要なとき

<xsl:apply-templates select="z30-collection"/>

テンプレート マッチャーは、この特定のケースに適用される最も具体的なテンプレートを自動的に選択します。明示的な条件チェックは必要ありません。マッチャーがそれを処理します。

于 2013-09-30T09:52:14.880 に答える
0

String.Replace() と同様に機能する XSLT 関数を次に示します。

このテンプレートには、次の 3 つのパラメーターがあります。

テキスト :- 主な文字列

replace :- 置き換えたい文字列

by :- 新しい文字列で応答する文字列

http://exslt.org/str/functions/replace/index.htmlを参照

于 2013-09-30T09:41:38.607 に答える