1

我知道已经有一个关于在 XSLT 中替换字符串的问题,但我需要一个条件语句来用多个变量替换一个字符串。

这是我的代码:

<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"

ETC...

任何帮助将不胜感激!

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

这是 XSLT 函数,其工作方式类似于 String.Replace()

该模板具有以下 3 个参数

text :- 你的主要字符串

replace :- 要替换​​的字符串

by :- 将由新字符串回复的字符串

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

于 2013-09-30T09:41:38.607 回答