XSLT字符串替换,多个变量

时间:2013-09-30 09:36:26

标签: xml xslt

我知道有关于替换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"

等...

非常感谢任何帮助!

2 个答案:

答案 0 :(得分: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"/>

并且模板匹配器将自动选择适用于此特定情况的最具体模板。没有必要进行任何明确的条件检查,匹配器会为您解决这个问题。

答案 1 :(得分:0)

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

此模板具有以下3个参数

text: - 您的主要字符串

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

by: - 将用新字符串

回复的字符串

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