gpt4 book ai didi

xslt - 我该怎么做 str :replace in XSLT/XPATH 1. 0?

转载 作者:行者123 更新时间:2023-12-01 05:15:16 26 4
gpt4 key购买 nike

在 XPATH 2.0 中有一个函数允许我用另一个字符串替换字符串中的子字符串。我想用 xalan 来做这件事。不幸的是,它不支持 EXSLT 方法 str:replace 并且它只使用 XSLT 1.0 样式表。包括来自 exslt.org 的功能似乎不起作用。如果我尝试使用函数样式,它会提示找不到 str:replace。如果我尝试使用模板样式,它会提示找不到节点集,即使它是受支持的。 translate 是无用的,因为它只是一个字符交换。有什么想法吗?

最佳答案

您可以编写自己的函数来模仿 xslt 2.0 替换:

<xsl:template name="replace">
<xsl:param name="text" />
<xsl:param name="replace" />
<xsl:param name="by" />
<xsl:choose>
<xsl:when test="contains($text, $replace)">
<xsl:value-of select="substring-before($text,$replace)" />
<xsl:value-of select="$by" />
<xsl:call-template name="replace">
<xsl:with-param name="text"
select="substring-after($text,$replace)" />
<xsl:with-param name="replace" select="$replace" />
<xsl:with-param name="by" select="$by" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>

如果你这样调用它:

<xsl:variable name="replacedString">
<xsl:call-template name="replace">
<xsl:with-param name="text" select="'This'" />
<xsl:with-param name="replace" select="'This'" />
<xsl:with-param name="by" select="'That'" />
</xsl:call-template>

生成的 $replacedString 的值为“That”

关于xslt - 我该怎么做 str :replace in XSLT/XPATH 1. 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7677072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com