我知道有关于替换XSLT中的字符串的问题,但我需要一个条件语句来用一个多变量替换一个字符串。
这是我的代码:
<xsl:template name="section-01">
<xsl:call-template name="table-open"/>
<xsl:text disable-output-escaping="yes"><table style="text-align=center;"></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"
等...
非常感谢任何帮助!
答案 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: - 将用新字符串
回复的字符串