gpt4 book ai didi

c# - 在 XSLT 中最后一次出现字符后获取子字符串

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:00 24 4
gpt4 key购买 nike

我在 XML 文件中有一个类似于以下内容的字符串:

M:Namespace.Class.Method(Something a, Something b)

句点 (.) 字符的数量是任意的,这意味着它只能像本例中的 2 个,但也可以更多。

我想使用 XSLT 从最后一个“.”获取此字符串的子字符串性格,所以我只会留下:

Method(Something a, Something b)

我无法使用标准的子串/子串后函数实现这一点。

有没有简单的方法来做到这一点?

最佳答案

在 XSLT 1.0 中,您将需要使用递归模板,如下所示:

  <xsl:template name="substring-after-last">
<xsl:param name="string" />
<xsl:param name="delimiter" />
<xsl:choose>
<xsl:when test="contains($string, $delimiter)">
<xsl:call-template name="substring-after-last">
<xsl:with-param name="string"
select="substring-after($string, $delimiter)" />
<xsl:with-param name="delimiter" select="$delimiter" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of
select="$string" /></xsl:otherwise>
</xsl:choose>
</xsl:template>

并像这样调用它:

<xsl:call-template name="substring-after-last">
<xsl:with-param name="string" select="'M:Namespace.Class.Method(Something a, Something b)'" />
<xsl:with-param name="delimiter" select="'.'" />
</xsl:call-template>

在 XSLT 2.0 中,您可以使用 tokenize()函数并简单地选择序列中的最后一项:

tokenize('M:Namespace.Class.Method(Something a, Something b)','\.')[last()]

关于c# - 在 XSLT 中最后一次出现字符后获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9078779/

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